IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> BLOCK层代码分析(3)IO下发概述 -> 正文阅读

[Java知识库]BLOCK层代码分析(3)IO下发概述

????????对于每个线程,存在成员current->bio_list来放置本线程发送的BIO。这里有三条路径发送IO到底层:

  1. 路径一,使能了plug/unplug机制,此时会等待plug池中存取足够的IO后统一往调度器插入IO,并选取IO下发;
  2. 路径二,没有使能plug/unplug机制,此时会将IO插入调度器中,并选取IO下发;
  3. 路径三,跳过调度层,直接下发IO;

?

????????简单来讲,这里有三条链:current->bio_list存储在当前线程的所有bio; plug->mq_list使能plug/unplug机制时存放在缓存池的bio;若定义IO调度层,IO请求会发送到scheduler list中;若没有定义IO调度层,IO请求会发送到ctx->rq_lists。

????????上述下发路径是IO提交下发的简述,代码流程如下:

?

这里过程如下:

  • 每个线程若已经在执行blk_mq_submit_bio(),将新下发BIO链入到线程current->bio_list;
  • 依次处理current->list中的每个bio;
  • 若bio中存在数据在高端内存区,在低端内存区分配内存,将高端内存区数据拷贝到新分配的内存区,称为bounce过程,后面单独一节介绍;
  • 检查请求队列中的bio,若过大进行切分,称BIO的切分;
  • 尝试将bio合并到plug->mq_list中,然后尝试合并到IO调度层链表或ctx->rq_lists中;
  • 若没有合并,分配新的request;
  • 若定义plug,且没达到冲刷数目,加入到plug->mq_list;若达到冲刷数目,将冲刷下发(plug/unplug机制);
  • 若定义IO调度器,往IO调度器中插入新的request(对于机械硬盘,通过IO调度层座合并和排序,有利于提高性能);
  • 若 没有定义IO调度器,可以直接下发(对于较快的硬盘如nvme盘,进入调度层可能会浪费时间,跳过IO调度层有利于性能提升);

?后续章节初步估计将上述过程分为以下几个部分做详细描述:

(1)bounce过程

(2)bio的切分和合并

(3)IO请求和tag的分配

(4)plug/unplug机制

(5)IO调度器

(4)其他

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 12:37:37  更:2021-11-17 12:39:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:09:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码