在 Linux (CentOS) 中显示每个文件的读/写率

ica*_*ndo 5 linux centos

linux 中是否有命令(更具体地说是在 CentOS 5 上),显示过去几秒钟内每个文件读取的字节数/秒。Windows 7 中的一个类似工具是资源监视器,它可以显示每个文件的读取速度,有助于诊断系统性能下降。

小智 3

我最喜欢的是iotop。它将按进程显示 I/O 计数。

用于调查 I/O 占用的其他有用命令:

  • vmstat: wa 列的计数较高是机器压力过大的标志
  • iostat:报告 CPU 统计信息以及设备、分区和 NFS 的输入/输出统计信息

从 vmstat 开始;如果 I/O 等待(wa 列)中的进程少于 2 个,则机器没有 I/O 匮乏,并且您的性能问题很可能与 I/O 无关。查看换入/换出,数值较高表明您的系统内存不足。

如果您的系统确实 I/O 匮乏,iostat 可以提示您哪些设备、分区或网络文件系统受到压力。有时这足以猜测罪魁祸首。

vmstat 的示例输出:

operator@server:~$ sudo vmstat 10 5
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0 408892 294200 4310552    0    0     0     6    3    2  1  2 97  0
 0  0      0 409372 294200 4310552    0    0     0    54 2192 4880  1  3 97  0
 0  0      0 409124 294200 4310496    0    0     0    18 2200 4895  0  3 96  0
 0  0      0 409000 294200 4310496    0    0     0    26 2182 4884  0  2 97  0
 0  0      0 409620 294200 4310496    0    0     0    18 2195 5120  0  2 97  0
Run Code Online (Sandbox Code Playgroud)

iotop 的示例输出:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
27327 be/4 www-data    0.00 B/s    3.67 K/s  0.00 %  0.00 % apache2 -k start
29714 be/4 postgres    0.00 B/s    0.00 B/s  0.00 %  0.00 % postgres: stats collector process
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
...
Run Code Online (Sandbox Code Playgroud)

  • 这看起来很有用,但是有没有任何工具可以显示正在读取或写入哪些文件,以及在过去几秒钟内每个文件的字节/秒数? (4认同)