PLUG/UNPLUG即蓄流/泄流,蓄流的目的是为了提高bio在elevator queue合并和排序的机会,以提高 IO效率。

PLUG/UNPLUG对应blk_start_plug()和blk_finish_plug()两个函数,blk_start_plug()很简单,仅仅做了初始化:

plug主要是在blk_queue_bio()里完成,bio先尝试merge,merge try的顺序是先plug list然后elevator queue,因为对于文件里一段连续的数据在磁盘上分配的多个块很可能是相邻或相近的;当bio不能merge时就分配一个request并加入plug list。当plug list里的request超过BLK_MAX_REQUEST_COUNT时会提前进行泄流:

当一次用户读写请求的bio plug完之后,会调用blk_finish_plug()进行unplug:将plug list里的request再次尝试与elevator queue进行merge,不能merge再添加到elevator queue;plug list处理完之后再将elevator queue的request往块设备分发(queue_unplugged())。

当进程因等待某个资源而切换出运行队列时(schedule()或io_schedule()),会提前unplug:


http://www.taodudu.cc/news/show-1837209.html

相关文章:

  • linux开机时驱动的加载流程
  • 服务器搭建docker环境的过程
  • 使用docker环境编译驱动
  • generic_make_request函数处理bio流程分析
  • 以rpm包形式升级Linux驱动
  • 查看设备UUID的方法
  • 关于might_sleep的一点说明
  • Linux内核中增加一个新的驱动模块
  • cdev 结构体、设备号相关知识解析
  • CentOS镜像中替换安装镜像的小系统的内核方法
  • initramfs文件解压方法
  • Linux系统下多版本gcc使用问题记录
  • kmalloc参数GFP_ATOMIC or GFP_KERNEL?
  • 几篇关于UDEV的文章
  • blk_queue_bio函数学习
  • 使用samba完成Linux服务器与Windows之间的映射
  • proc文件系统实现用户空间与内核空间的数据通信
  • Linux定时器的简单使用
  • slub释放过程-do_slab_free
  • Linux 的 history 命令显示时间
  • 缺少网卡固件导致的网络服务异常,Can‘t load firmware file bnx2x/bnx2x-e2-7.13.15.0.fw
  • slub分配流程-kmem_cache_alloc函数
  • rpm数据库异常问题总结
  • ks.cfg配置详解
  • IO负载高的来源定位
  • Linux设备模型初始化流程
  • yum源中repodata目录下的各文件内容及作用-转载
  • Linux 设备驱动的固件加载-转载
  • Linux内核启动中驱动初始化过程
  • jackson 忽略多余字段_Java进阶学习:JSON解析利器JackSon

linux内核IO模块plug/unplug机制相关推荐

  1. BLOCK层代码分析(8)IO下发之plug/unplug机制

    前面bio bounce过程,bio的切分和合并,request的获取是为IO请求下发做准备工作.当这些准备工作完成后,才进入到真正的IO下发过程.之前在前面章节中介绍过,IO下发基本上有三条路径:经 ...

  2. Linux内核IO追踪:用GDB调试,一个磁盘IO的流程是什么样的

    Table of Contents 构建内核 产生IO写入的程序 追踪到兔子洞 准备步骤 进入FS层:我正在使用的fs是XFS 潜入块层 进入块驱动程序层:我的块驱动程序是SCSI 回到fs层,研究内 ...

  3. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  4. linux read函数_浅谈Linux内核IO体系之磁盘IO

    前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...

  5. 详解Linux内核IO技术栈

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 在开始正式的讨论 ...

  6. 深入Linux内核IO技术栈

    这是<Linux系统调用那些事>高级部分的第一章<聊聊Linux IO>.高级部分的文章均假设读者完整的学习过Linux系统基础以及Linux系统编程相关的内容,并已有一定的工 ...

  7. 【Linux内核】RW读写锁机制

    读写锁机制 Linux内核中读写锁的机制是一种多读单写的锁机制,它允许多个读操作同时进行,但只能有一个写操作进行.当有写操作时,所有读操作都会被阻塞,直到写操作完成. 在内核中,读写锁主要由以下两个结 ...

  8. 【Linux 内核 内存管理】RCU 机制 ② ( RCU 机制适用场景 | RCU 机制特点 | 使用 RCU 机制保护链表 )

    文章目录 一.RCU 机制适用场景 二.RCU 机制特点 三.使用 RCU 机制保护链表 一.RCU 机制适用场景 在上一篇博客 [Linux 内核 内存管理]RCU 机制 ① ( RCU 机制简介 ...

  9. 【Linux 内核 内存管理】RCU 机制 ① ( RCU 机制简介 | RCU 机制的优势与弊端 | RCU 机制的链表应用场景 )

    文章目录 一.RCU 机制 二.RCU 机制的优势与弊端 三.RCU 机制的链表应用场景 一.RCU 机制 RCU , 英文全称是 " Read-Copy-Update " , 对 ...

  10. linux kernel and user space通信机制,Linux内核空间与用户空间通信机制地研究.doc

    实用文案 标准文档 Linux内核空间与用户空间通信机制的研究 Linux kernel space and user space communication mechanism 摘 要 Linux ...

最新文章

  1. solr 使用自定义的 QueryParser
  2. java不带package和带package的编译方式
  3. 第三届(2016)科学数据大会——科学数据与创新发展征文通知
  4. 求小数的某一位(信息学奥赛一本通-T1082)
  5. 5G to B核心网建设白皮书发布:2025年运营商toB市场高达6020亿美元
  6. React的静态类型检查
  7. 呵呵,你这是在背面试题吧?ThreadLocal使用中会有那些坑?
  8. 互联网安全架构师培训课程 互联网安全与防御高级实战课程 基于Springboot安全解决方案
  9. 课程设计任务书本科毕业设计学生信息管理系统
  10. vijos-伊甸园日历游戏
  11. 网站挂马的原理与防御
  12. Git恢复已删除文件
  13. 计算机工程与应用 卷号,计算机专业毕业设计软件设计类论文各章节标题与格式规范...
  14. 联想小新22H2版跳过联网方法最新方法
  15. 这段代码不讲武德,劝你耗子尾汁
  16. 【概念辨析】二维数组传参的几种可能性
  17. 七零年代摄影师Robert Mapplethorpe
  18. idea debug下断点没有对勾的问题
  19. linux-文件切割-splitcsplit
  20. 3D游戏引擎系统源码C++本科毕业设计,C++ 3D引擎源码,渲染系统使用的OpenGL 及 OpenGL ES

热门文章

  1. openfire源码解读--用户登录
  2. javaScript 中创建json/转换字符串为json
  3. java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...
  4. Android UI(一)Layout 背景局部Shape圆角设计
  5. 成员函数指针有多态的效果吗?
  6. 基于Wiremock创建Mock Service平台
  7. hadoop2.6.集群搭建
  8. 手机圈老兵任伟光加盟联想
  9. 优雅地关闭kubernetes中的nginx
  10. 一分钟了解阿里云产品:安全产品评测:阿里云盾安全威胁情报“态势感知”...