队列 sysfs 文件
这个文件将会详细描述位于每个块设备sysfs目录树下的队列文件。注意,堆叠设备典型地不会
导出任何设置,因为它们的队列只起到重新映射目标的作用。这些文件可以在/sys/block/xxx/queue/目录下找到。
使用RO后缀标记的文件是只读文件,RW后缀意为可读写文件。
add_random (RW)
这个文件允许关闭磁盘熵贡献。文件默认值是1(开启)。
dax (RO)
这个文件表明设备是否支持直接访问(DAX),CPU可寻址的存储使用它绕开页缓存。
真时显示‘1’,否则显示‘0’。
discard_granularity (RO)
如果设备报告这项信息,它显示磁盘的内部分配大小(以字节为单位)。
‘0’值表示设备不支持discard功能。
discard_max_hw_bytes (RO)
支持discard功能的设备可能包含在单个操作中能够削减或解映射的内部限制字节数。
discard_max_bytes参数被设备驱动设置成在单次操作中能够被丢弃的最大字节数。
发送给设备的discard请求数不允许超出这个限制。
discard_max_bytes值为0意味着设备不支持discard功能。
discard_max_bytes (RW)
discard_max_hw_bytes是设备的硬件限制,而这个设置是软件限制。
当大量discard请求被发出时,一些设备表现出高延迟;
调低这一数值会使Linux发送较小的discard请求,这可能帮助降低大量discard操作引入的延迟。
hw_sector_size (RO)
这是设备的硬件扇区大小(以字节为单位)。
io_poll (RW)
读取该文件时,它的内容显示启用(1)或禁用(0)轮询。将‘0’写入该文件将禁用设备的轮询。
写任何非0值都将启用该特性。
io_poll_delay (RW)
如果启用轮询,该参数控制执行哪种类型的轮询。默认值为-1,传统轮询。
在这种模式下,CPU将会不放弃任何时间反复地询问完成情况。
如果设置为0,将使用混合的轮询模式,内核将会尝试根据训练猜测何时IO完成。基于这一猜测,
在进入一次传统轮询循环前,内核将发出IO请求的进程置成睡眠状态一段时间。
这种模式可能比纯传统的轮询模式慢一些,但它可能更高效。
如果这个值设置大于0,在进入传统轮询前,内核将设置发出IO请求的进程睡眠这么多的微秒。
iostats (RW)
这个文件用于控制(打开/关闭)磁盘的I/O状态统计。
logical_block_size (RO)
设备的逻辑块大小(以字节为单位)
max_hw_sectors_kb (RO)
这是单个数据传输的最大千字节数
max_integrity_segments (RO)
读取这个文件时,它的内容显示显示硬件控制器能够处理的完整段的最大限制,与块层设置一致。
max_sectors_kb (RW)
块层允许一个文件系统请求最大千字节数。它必须小于等于硬件允许的最大大小。
max_segments (RO)
设备的段数最大值。
max_segment_size (RO)
设备的最大段大小。
minimum_io_size (RO)
设备报告的最小首选IO大小。
nomerges (RW)
它允许用户禁用涉及块层IO合并请求的查找逻辑。默认(0)启用所有合并。
当设置为1时,仅简单的one-hit合并会被尝试。当设置为2时,
不会尝试任何合并算法(包括one-hit或更复杂的树/哈希查找)。
nr_requests (RW)
它控制在块层可以为读或写请求分配的请求数量。注意,累计分配的数量可能是当前值的双倍,
因为它仅适用于读或写(而不是累加和)。
为了通过请求饥饿避免优先级倒置,当启用CONFIG_BLK_CGROUP,
一个请求队列为每个cgroup管理一个单独的请求池,并且这个参数适用于每一个per-block-cgroup请求池。
换句话说,如果有N个块cgroups,每一个请求队列可能有多达N个请求池,每个请求池被nr_requests单独管理。
optimal_io_size (RO)
设备报告的最佳IO大小。
physical_block_size (RO)
设备物理块大小(以字节为单位)
read_ahead_kb (RW)
文件系统在该块设备上能够预读的最大千字节数。
rotational (RW)
这个文件用于申明设备是转动类型的或是非转动类型的。
rq_affinity (RW)
如果这个选项是‘1’,块层会将请求完成迁移到最初提交请求的CPU“组”。对于一些工作量,由于缓存效应,
这能够大幅减少CPU周期。
对于需要最大化完成处理分布(设置这个选项为‘2’)的存储配置,强制完成处理运行
在发出请求的CPU上。(绕过“组”聚合逻辑)
scheduler (RW)
读取该文件时,它的内容显示设备当前使用和可用的IO调度器。当前激活的IO调度器会被放入中括号。
向该文件写入IO调度器名称会切换该块设备的控制权到新的IO调度器。注意,
如果IO调度器模块未加载到系统,写入其名称时会尝试加载它的模块。
write_cache (RW)
读取这个文件时,它的内容显示设备回写缓存启用与否。对于前者,它会返回“write back”,
对于后者,它返回“write through”。写入这个文件能够改变设备的内核视图,但不能改变设备状态。
这意味着勾选设置从“write back到“write through”可能不安全,因为那样也会忽略内核刷新的缓存。
write_same_max_bytes (RO)
设备在单个write-same命令里能够写入的最大字节数。0值意味着设备不支持write-same命令。
wb_lat_usec (RW)
如果设备注册了回写节流,那么这个文件显示目标最小读延迟。如果延迟时间超出了给定的时间窗(参见
wb_window_usec),那么回写节流会开始缩放回写。将‘0’值写入该文件会禁用该特性。
将‘-1’写入该文件会重置到默认设置。
throttle_sample_time (RW)
这是blk-throttle采样数据的时间窗口(以毫秒为单位)。blk-throttle基于采样进行决策。
较低的时间意味着cgroups有更平稳的吞吐量,但是更高的CPU开销。该文件仅当启用
CONFIG_BLK_DEV_THROTTLING_LOW时存在。
Jens Axboe,2009年二月
网友评论