/sys/block/<dev>/stat 中的块层统计信息

此文件记录了 /sys/block/<dev>/stat 文件的内容。

stat 文件提供了关于块设备 <dev> 状态的几个统计信息。

  1. 为什么单个文件中存在多个统计信息? sysfs 通常不是每个文件包含一个值吗?

  1. 通过使用单个文件,内核可以保证统计信息代表设备状态的一致快照。如果统计信息导出为包含每个统计信息的多个文件,则无法保证一组读数代表单个时间点。

stat 文件由单行文本组成,其中包含 17 个用空格分隔的十进制值。 下表概述了这些字段,并在下面进行了更详细的描述。

名称

单位

描述

读取 I/O

请求

已处理的读取 I/O 的数量

读取合并

请求

与队列中的 I/O 合并的读取 I/O 的数量

读取扇区

扇区

读取的扇区数

读取节拍

毫秒

读取请求的总等待时间

写入 I/O

请求

已处理的写入 I/O 的数量

写入合并

请求

与队列中的 I/O 合并的写入 I/O 的数量

写入扇区

扇区

写入的扇区数

写入节拍

毫秒

写入请求的总等待时间

in_flight

请求

当前正在处理的 I/O 的数量

io_ticks

毫秒

此块设备处于活动状态的总时间

time_in_queue

毫秒

所有请求的总等待时间

丢弃 I/O

请求

已处理的丢弃 I/O 的数量

丢弃合并

请求

与队列中的 I/O 合并的丢弃 I/O 的数量

丢弃扇区

扇区

已丢弃的扇区数

丢弃节拍

毫秒

丢弃请求的总等待时间

刷新 I/O

请求

已处理的刷新 I/O 的数量

刷新节拍

毫秒

刷新请求的总等待时间

读取 I/O、写入 I/O、丢弃 I/0

这些值在 I/O 请求完成时递增。

刷新 I/O

这些值在刷新 I/O 请求完成时递增。

块层组合刷新请求并一次最多执行一个。 这计算由磁盘执行的刷新请求。 不会为分区跟踪。

读取合并、写入合并、丢弃合并

当 I/O 请求与已排队的 I/O 请求合并时,这些值会递增。

读取扇区、写入扇区、discard_sectors

这些值计算从该块设备读取、写入或丢弃的扇区数。 所讨论的“扇区”是标准的 UNIX 512 字节扇区,而不是任何设备或文件系统特定的块大小。 这些计数器在 I/O 完成时递增。

读取节拍、写入节拍、丢弃节拍、刷新节拍

这些值计算 I/O 请求在此块设备上等待的毫秒数。 如果有多个 I/O 请求正在等待,这些值将以大于 1000/秒 的速率增加; 例如,如果 60 个读取请求平均等待 30 毫秒,则 read_ticks 字段将增加 60*30 = 1800。

in_flight

此值计算已发出到设备驱动程序但尚未完成的 I/O 请求的数量。 它不包括队列中但尚未发出到设备驱动程序的 I/O 请求。

io_ticks

此值计算设备已将 I/O 请求排队的时间(以毫秒为单位)。

time_in_queue

此值计算 I/O 请求在此块设备上等待的毫秒数。 如果有多个 I/O 请求正在等待,则此值将以毫秒数乘以等待请求数的乘积增加(有关示例,请参见上面的“读取节拍”)。