iopp
iopp是另外一个统计每一个进程I/O的工具,使用C语言编写,理论上应该比上述两个重狙效率都要高。
安装方法很简单,首先通过下面的指令下载源代码:
git://github.com/markwkm/iopp.git
然后分别通过下面的指令编译安装
- cmake CMakeLists.txt
- make
- make install DESTDIR=/usr
|
下面是一个使用例子
- iopp -i -c 2
- pid rchar wchar syscr syscw rbytes wbytes cwbytes command
- 2144 0 296 40 8 0 0 0 /usr/sbin/LCDd
- 2284 0 0 2 0 0 0 0 ha_logd: read process
- 2299 0 0 2 0 0 0 0 ha_logd: write process
- 2520 3 3 3 3 0 0 0 /usr/lib/virtualbox/vboxwebsrv
- 2599 2 2 2 2 0 0 0 /usr/lib/virtualbox/VBoxSVC
- 2675 0 0 1 0 0 0 0 runsvdir
- 3177 16 16 4 2 0 0 0 /usr/bin/gnome-shell
- 3192 16 16 4 2 0 0 0 nautilus
- 3305 180 340 100 60 0 0 0 /usr/lib/icedove/icedove-bin
- 3623 1393 1440 1 1 0 0 0 sshd: wgzhao@pts/0
- 4305 0 4603904 0 562 0 4603904 0 postgres: writer process
- 6257 2064384 1892352 252 215 3719168 139264 0 postgres: wgzhao pgbench [local] UPDATE
|
上述输出的各项含义是:
● pid 进程ID
● rchar 将要从磁盘读取的字节数
● wchar 已经写入或应该要写入磁盘的字节数
● syscr 读I/O数
● syscw 写I/O数
● rbytes 真正从磁盘读取的字节数
● wbytes 真正写入到磁盘的字节数
● cwbytes 因为清空页面缓存而导致没有发生操作的字节数
● command 执行的命令
其中rbytes,wbytes,cwbytes会因给出-k或者-m参数,而显示为rkb,wkb,cwkb或rmb,wmb,cwmb。command一列如果给出-c的参数则显示完整的命令名而不仅仅只是命令本身。
这些参数的使用和top类似。
更具体的可以参考iopp(8)手册。