linux i o的使用情况,统计Linux上进程的I/O情况

最近在做性能测试时,有一台同时运行activemq和mysql的linux服务器cpu1出现iowait达到95%的情况。于是想要定位哪个进程有大量i/o草组。

使用了几个工具,iostat,iodump,每个工具都各有千秋,总结如下。

1、使用iostat

特点:iostat可统计磁盘使用情况,包括是否处于忙碌状态、每秒读写次数、读写字节大小等。但好像无法定位到时哪个进程有较高的I/O。

应该不是linux自带的工具,因为我见过一些相同版本的Linux服务器有些带有iostat,有些则没有。

可以通过安装sysstat包,包括了iostat,mpstat,sra等工具包。

使用命令:

rpm -ivh sysstat-7.0.2-12.el5.x86_64.rpm

或者更简单(对于yum可用的系统):

yum install sysstat

使用yum安装成功的提示信息:

Installed:

sysstat.x86_64 0:7.0.2-12.el5

Complete!

完成安装则可以使用iostat了。

1)查看磁盘使用状态

命令:

[root@virt001 man1]# iostat -d -k

输出:

Linux 2.6.18-308.el5xen (virt001) 08/01/2013

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn

xvda 437.62 0.00 4249.50 0 4292

xvda1 437.62 0.00 4249.50 0 4292

xvda2 0.00 0.00 0.00 0 0

说明:

第一行显示磁盘xvda总的信息,下面两行分别说明各分区磁盘I/O信息。

使用-x可显示更多信息。

2)查看CPU使用信息

命令:

[root@virt001 man1]# iostat -c

输出:

Linux 2.6.18-308.el5xen (virt001) 08/01/2013

avg-cpu: %user %nice %system %iowait %steal %idle

7.25 0.02 3.46 2.14 0.09 87.04

更详细命令说明可参考:http://www.orczhou.com/index.php/2010/03/iostat-detail/

2 使用iodump

在“google code”上有一个工程aspersa,提供了一个工具iodump,可统计每个进程的I/O情况,很方便用来定位产生iowait问题的进程。

下载工具包:wget http://aspersa.googlecode.com/svn/trunk/iodump

具体使用见作者博文:http://www.xaprb.com/blog/2009/08/23/how-to-find-per-process-io-statistics-on-linux/

特点:方便定位cpu产生iowait问题的进程,适用于没有iotop工具包的linux旧版本。作者原话是“Compute per-PID I/O stats for Linux when iotop/pidstat/iopp are not available.”。

使用方法:

1、首先开启与I/O相关的内核消息统计,工具应该是基于这些消息统计数据的。

echo 1 > /proc/sys/vm/block_dump

2、将统计的与I/O相关的内核消息作为工具iodump的输入:

while true; do sleep 1; dmesg -c; done | perl iodump

3、等待运行一段时间,按ctrl + c终止程序运行,得到如下统计信息(单位不清楚,不过信息还是有用):

# Caught SIGINT.

TASK PID TOTAL READ WRITE DIRTY DEVICES

kjournald 622 187254 0 187254 0 dm-0

mysqld 17505 70996 91 70905 0 dm-0

mysqld 22182 34441 74 34367 0 dm-0

mysqld 22454 30861 44 30817 0 dm-0

mysqld 22227 29812 53 29759 0 dm-0

java 3924 24881 0 24881 0 dm-0

mysqld 21699 13510 3 13507 0 dm-0

mysqld 21513 10334 2 10332 0 dm-0

上述信息简单明了。

4、关闭I/O信息内核统计

echo 0 > /proc/sys/vm/block_dump

这次使用iodump和iostat就定位到时mysql有大量I/O操作。其他工具比如iotop,iopp,dstat就没有使用。有篇文章写得比较详细,链接是:http://www.51testing.com/html/24/n-822524-2.html。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值