/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/O

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

刷新 I/O

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

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

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

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

读取扇区、写入扇区、丢弃扇区

这些值计算从此块设备读取、写入或丢弃的扇区数。所说的“扇区”是标准的 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 请求在等待,此值将增加,其值为等待的毫秒数乘以等待的请求数(请参阅上面的“读取节拍”中的示例)。