Linux下查询单个进程I/O信息

本文汇总了网上一些linux系统下获取I/O信息的方法

1,iostat命令,这个命令可以在2.6.X中安装使用(C语言实现的),但是不好的地方时它并没有提供每个进程的I/O信息,而是按设备块来统计的I/O。

    root@localhost:/root> iostat -dk
Linux 2.6.34.8-WR4.1.0.0_standard (localhost)   05/06/11

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.02         0.02         0.14      29552     185344
sda1              0.00         0.00         0.00        171          0
sda2              0.00         0.00         0.00        164          0
sda3              0.00         0.00         0.00        164          0
sda4              0.00         0.00         0.00        129          0
sda5              0.00         0.00         0.00        100          0
sda6              0.02         0.02         0.14      28241     185132
sda7              0.00         0.00         0.00        370        212

2,iotop命令,这个命令可以提供每个进程的I/O信息,但是不好的地方是它使用 Python 语言编写而成,要求 Python 2.5(及以上版本)和 Linux kernel 2.6.20(及以上版本)。

3,对于2.6.20以下内核版本中可以获取单个进程的I/O信息,可以使用如下方法

监控一个进程的I/O信息的原理如下:
In Linux 2.6.1, a widely unknown and poorly implemented feature was added that allows you to monitor filesystem activity on a global scale: /proc/sys/vm/block_dump
在这个文件中设置为1
echo 1 > /proc/sys/vm/block_dump
现在就会dump活动信息到syslog中,
然后使用dmesg将日志输出到临时文件。
dmesg -c > /tmp/diskio.log

文件中会有如下类似信息
kjournald(902): WRITE block 74620912 on sda4
kjournald(902): WRITE block 133320 on sda4
kjournald(902): WRITE block 133328 on sda4
kjournald(902): WRITE block 133336 on sda4
pdflush(30503): WRITE block 79167488 on sda4
pdflush(30503): WRITE block 79167496 on sda4
pdflush(30503): WRITE block 79167504 on sda4
到这里大家就应该清楚是怎么得到I/O信息了
现在只要过滤WRITE和READ的行,并记录下进程名和进程id就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值