《存储IO路径》专题:四种IO栈大比武

1.Linux IO栈处理

我们就从一个常见Linux IO处理流程示意图开始今天的主题。

这个示意图主要描述了Linux系统中I/O请求的处理流程,涉及了I/O接口、文件系统、块层、NVMe驱动等多个部分,整个IO流程处理主要概括以下步骤:

1. 应用程序(Applications)将I/O请求提交给I/O接口(Step 1)。这些请求可以是POSIX的read/write操作(如psync)、libaio、io_uring等。

2. I/O接口构建一个struct kiocb结构体,并通过VFS(虚拟文件系统)将其提交给文件系统(Step 2)。

3. 文件系统解析包含数据的块地址,构建一个struct bio请求,并通过submit_bio()函数将其提交给块层(Step 3)。

4. Linux块层将struct bio转换为struct request(Step 4),并将其放入每个核心的软件队列(Step 5)中。

5. 然后,这些请求由块I/O调度器处理,并放入硬件调度队列࿰

猜你喜欢

转载自blog.csdn.net/zhuzongpeng/article/details/132893447
今日推荐