bio与request(io合并与request)

为提高块设备性能,内核通过合并相邻扇区的bio请求,使用request结构来延迟并优化IO操作。请求描述符request包含一个或多个按扇区顺序排列的bio,便于一次性寻址,从而减少磁盘访问时间。当新的bio请求到来时,内核会检查是否能与等待的请求合并,实现更高效的磁盘操作。
摘要由CSDN通过智能技术生成

由“通用块层与bio”我们知道,一次io操作就是一个bio结构,虽然我们的块设备驱动程序完全可以一次处理一个bio请求来执行一次io操作,但这会导致磁盘性能的下降,因为确定bio在磁盘上的起始扇区是很费时的,取而代之的是只要可能,内核就试图把几个相邻扇区的bio合并在一起,这样只用一次寻址。因此引入了一个新的结构request,我们将在后面对该结构进行分析。

当我们要读写一些磁盘数据时,实际上创建一个bio请求,本质上说bio描述的是所请求的扇区以及要对它执行的类型。然而并不是请求一发出就立刻执行——io操作仅仅被调度,执行会向后推迟。这种延迟有利于io合并,是提高块设备性能的关键,当请求传送一个新的数据块时,内核检查能否通过扩展前面处于等待的请求而满足新的请求。

请求描述符request

每个块设备的待处理请求都是用一个请求描述符request来表示的,request结构如下(只列出了较为重要的项):

struct request {
    union {
        struct list_head queuelist;  //请求队列链表的指针,将在同一请求队列的request链接在一起
        struct llist_node ll_list;
    };

    struct request
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值