kd718和kb688参数_块设备内核参数max_segments和max_sectors_kb解析

本文介绍了Linux块设备中的max_segments和max_sectors_kb参数,探讨了它们在处理IO时的影响。max_segments限制了设备允许的最大段数,而max_sectors_kb则表示最大请求大小。在Direct IO模式下,这两个参数如何影响数据的合并与提交,以及在Device Mapper和软RAID设备中的设定和调整。通过分析不同内核版本的行为差异,揭示了设备限制参数的设置逻辑。
摘要由CSDN通过智能技术生成

inux块设备在处理io时会受到一些参数(设备的queue limits参数,以下简称limits参数)的影响,比如一个请求中允许的最大扇区数,最大segment数等。这些参数可以在/sys/block//queue/下查看,块设备在初始化时会设置默认值。这里主要分析max_segments和max_sectors_kb。

1. 基本概念

1.1 段的概念

首先就需要了解一下什么是段(segment)。

一个段就是一个内存页或者内存页的一部分,它们包含磁盘上物理相邻的数据块。

磁盘的每个io操作就是磁盘与一些RAM单元之间相互传送一些相邻扇区的内容。大多数情况下,磁盘控制器采用DMA方式传送数据,块设备驱动程序只要向磁盘控制器发送适当的命令就可以触发一次数据传送,一旦完成数据传送,磁盘控制器就会发出一个中断通知块设备驱动程序。

DMA方式传送的是磁盘上相邻的扇区数据,虽然也允许传送不相邻的扇区数据,但是这个比较低效,因为磁头移动慢。

老的磁盘控制器仅仅支持“简单”的DMA方式:磁盘必须与RAM中连续的内存单元传送数据。但是新的磁盘控制器支持分散聚集(scatter-gather)DMA方式,磁盘可以与一些非连续的内存区域相互传送数据。

为了支持分散聚集DMA方式,块设备驱动程序必须能够处理称为段的数据存储单元,一次分散聚集DMA可以传送几个段。

如果不同的段在RAM中相应的页框正好是连续的并且在磁盘上相应的数据也是相邻的,那么通用块层就可以进行合并,这种合并方式产生的更大的内存区域就称为物理段。

1.2 各参数含义

max_segments表示设备能够允许的最大段的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值