![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
存储
文章平均质量分 94
ywang_wnlo
不常上csdn,有事可以邮箱联系 ywang_wnlo@qq.com
展开
-
【page cache】简介
文章目录page cache直接 IO 与 缓存 IOLinux IO 栈Linux 中的具体实现相关结构体超级块 `super_block`索引节点 `inode`文件 `file`目录项 `dentry`页缓存 `address_space`常用函数从底层填充写入修改其他参考资料page cache由于磁盘 HDD 甚至于现在广泛使用的固态硬盘 SSD 的读写速度都远小于内存 DRAM 的读写速度,为了避免每次读取数据都要直接访问这些低速的底层存储设备,Linux 在利用 DRAM 实现了一个缓存层原创 2021-12-06 15:27:25 · 2848 阅读 · 0 评论 -
【page cache】回写机制
文章目录writeback 回写相关结构体底层设备信息初始化部分字段说明设备回写管理初始化部分字段说明回写任务部分字段说明回写线程初始化立即唤醒`wb_wakeup``wb_queue_work`定时唤醒释放销毁细节分析`tag-and-write``range_cyclic`定期回写阈值回写手动触发回写`sync``fsync` 和 `fdatasync``open` 时带有 `O_SYNC`当前内容基于 Linux Kernel v5.4.121writeback 回写之前在 page cache原创 2021-11-20 15:06:28 · 1368 阅读 · 4 评论 -
【io_uring】内核源码分析
通过提前注册这些缓冲区可以减轻后续每个 IO 的申请资源开销,属于一种高级功能,在这里不做过多展开。主要有三条调用路线(所有调用逻辑都会判断是否在初始化时配置了。的功能比较简单,就是一个代理线程,主要是负责将用户写入。主要用来申请空间,初始化列表头、互斥锁、自旋锁等结构。字段,在指定的 CPU 上启用内核线程。他们的入口都在 Linux 内核源码的。此外在开启了 IOPOLL 模式时,中有过介绍,主要是初始化初始化。时,将启动一个单独的内核线程。函数,否则 IO 将下发失败。的核心系统调用之一,根据。原创 2021-10-26 18:42:42 · 45266 阅读 · 1 评论 -
【io_uring】liburing 用户库源码分析
详细分析可以参看 [io_uring 内核源码分析](/io_uring/内核源码分析)函数,主要用于提交 IO 和获取 IO 完成情况,具体功能和初始化时配置的。,无需系统调用陷入内核,但是会阻塞当前线程直到有一个新的。系统调用,减少了 IO 下发的系统调用的开销。系统调用陷入内核态,将参数传递给内核的。,无需系统调用陷入内核,如果没有新的。只用于用户态,直接读取即可,根据。映射到用户态,该函数只需在读取。在用户态轮询判断是否有一个新的。仅在用户态判断一次是否有新的。参数传递到内核,让内核的。原创 2021-10-26 18:24:45 · 889 阅读 · 2 评论 -
【io_uring】简介和使用
io_uring文章目录io_uring简介使用系统调用liburing样例代码流程实现系统调用`io_uring_setup``io_uring_enter``io_uring_register`参考资料简介io_uring 是 Linux 在 5.1 版本引入的一套新的异步 IO 实现。相比 Linux 在 2.6 版本引入的 AIO,io_uring 性能强很多,接近 SPDK[1],同时支持 buffer IOio_uring 的作者 Jens Axboe 是 Linux 内核块层和其他块设原创 2021-10-23 14:27:42 · 2607 阅读 · 1 评论