如何在Linux上显示当前磁盘IO队列长度?

KZc*_*ing 9 linux io kernel block scheduler

我正在为Linux内核开发一个新的IO调度程序.我试图看看是否有人知道在Linux中打印出未完成的IO请求总数(磁盘IO队列)的工具?

我会在一个终端工作.

谢谢!

dav*_*veh 28

在这里原谅这个巨大的死灵.实际上iostat -x,您希望哪个显示自上次运行iostat后设备的扩展统计信息.如果您希望实时监控队列iostat -xt 1(或iostat -xmt 1显示以兆字节为单位的详细信息).

您可以在avgqu-sz列中查看平均队列大小.

请考虑以下示例输出,iostat -xmt 1其中显示完整的IO队列(此设备的最大队列长度为128)和基准测试期间的饱和磁盘.

18/05/15 00:41:05
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    6.02    0.00   93.98

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.00     0.00    1.00 1308.00     0.00   163.50   255.81   133.30  101.15   0.76 100.00
Run Code Online (Sandbox Code Playgroud)


Dmi*_*kin 3

dmitry@pro:~$ iostat 
          disk0       cpu     load average
    KB/t tps  MB/s  us sy id   1m   5m   15m
   50.70  34  1.70   4  3 93  1.83 1.65 1.70
dmitry@pro:~$ 
Run Code Online (Sandbox Code Playgroud)

描述 iostat 显示有关终端、设备和 CPU 操作的内核 I/O 统计信息。第一个打印的统计数据是系统正常运行时间内的平均值。要获取有关当前活动的信息,应指定合适的等待时间,以便在该时间内对后续打印的统计数据集进行平均。

  • 我了解了这个文件“/proc/diskstats”,如果我cat该文件,我的SSD磁盘行如下所示: 16 sdb 419177 2902 4840388 1711380 2733730 11581604 199209864 100752396 0 796116 102463264 基于linux doc,第九个字段是我的队列长度 --> 在我的例子中是“0”。你认为这实际上是磁盘IO队列长度吗?该文件的文档可以在以下位置找到:http://www.unix.com/linux/157963-how-calculate-disk-queue-length-disk-busy-time.html (3认同)
  • 在全新安装中,运行 apt-get install sysstat 来获取 iostat 命令。 (3认同)