io_fs_04
一个块IO的一生:从page cache到bio到request
但是 不是所有进程读/写硬盘都经过page cache,如下:
常规app进行读写硬盘时,需要经过page cache缓冲,某一时刻再读/写硬盘
O_SYNC app进行读写硬盘时,需要经过page cache缓冲,然后立刻读/写硬盘
O_DIRECT app进行读写硬盘时,不需要经过page cache,直接读/写硬盘
IO调度算法
IO调度算法有三种:
noop : 最简单的调度器,把邻近bio进行合并处理
deadline : 保证读优先级的前提下,写不会饿死
cfq : 考虑进程
查询目前是用哪一种IO调度算法?
设置IO调度算法与IO nice值
cgroup与IO
cgroup v1的weight throttle
cgroup v2的writeback throttle
在cgroup v1,blkio cgroup write 只能用于DIRECT_IO的场景(writeback线程和write线程不是同一个),这使得write变成system wide,而不是group wide.
在cgroup v2,打通了 memory group 和 blkio group,能知道每个group的dirty情况
Last updated
Was this helpful?