Linux下的详细IO监控和分析:系统级+流程级+业务级+文件级IO

发布者:上海IT外包来源:http://www.lanmon.net点击数:1473

学习优化,理解IO仍然非常重要,今天花时间整理这段内容,让我们来看看吧〜
以下经典图片来自Linux Performance and Tuning Guidelines.pdf
Linux下详细的IO监控和分析 - 系统级+流程级+业务级+文件级IO
Linux IO体系结构中各种IO监视工具的位置
1,系统级IO监控
1.1,iostat
Iostat -xdm 1#个人习惯
Linux下详细的IO监控和分析 - 系统级+流程级+业务级+文件级IO
%util表示磁盘繁忙。 100%表示磁盘正忙,0%表示磁盘空闲。但请注意,磁盘忙并不意味着磁盘(带宽)利用率很高。
argrq-sz提交给驱动程序层的IO请求的大小通常不小于4K,不大于max(readahead_kb,max_sectors_kb)
可用于判断当前的IO模式。通常,特别是当磁盘忙时,代表性顺序越大,代表性随机性越小。
Svctm IO请求的服务时间,对于单个磁盘,当它完全随机读取时,它基本上是大约7ms,都是寻求+旋转延迟时间
1.2,统计之间的关系
%util=(r/s + w/s)* svctm/1000#queue length=到达率*平均服务时间
Avgrq-sz=(rMB/s + wMB/s)* 2048 /(r/s + w/s)#2048是1M/512
1.3,总结
Iostat计算在公共块层合并后直接提交给设备的IO数据(rrqm/s,wrqm/s),它可以反映系统的整体IO状态,但具有以下两个缺点。
远离业务层,不对应写入,读取代码(由于系统预读+ pagecache + IO调度算法等因素,很难对应)
它是系统级的,没有办法精确到这个过程。例如,我只能告诉你磁盘现在很忙,但没有办法告诉你谁在忙,你在忙什么?
2,进程级IO监控
2.1,iotop和pidstat(仅限rhel6u系列)Iotop顾名思义,io版本的顶部
Pidstat顾名思义,统计过程的统计(pid),过程的统计自然包括过程的IO状态。
这两个命令都可用于按进程计算IO状态,因此您可以知道:
1)系统中当前占用IO的进程是什么,百分比是多少?
2)是否占用IO读取或写入的过程?阅读和写作的数量是多少?
有很多pidstat参数,还有一些常用的参数:
Pidstat -d 1 #only显示IO
Linux下详细的IO监控和分析 - 系统级+流程级+业务级+文件级IO
Pidstat -u -r -d -t 1
#-d IO信息,
#-r缺少页面和内存信息
#-u CPU使用率
#-t以线程作为统计单位
#1 1秒统计
Iotop,非常简单,直接点击命令
Linux下详细的IO监控和分析 - 系统级+流程级+业务级+文件级IO
2.2,block_dump,iodump
iotop和pidstat都依赖于从/proc/pid/io文件导出的统计信息,这些文件不适用于较旧的内核,例如rhel5u2。
所以我必须使用上面的2个命令而不是:
回声1>
/proc/sys/vm/block_dump#打开block_dump,这会将io信息输入到dmesg中
#dmesg
观看-n 1'dmesg -c | grep -oP'w +(d +):(WRITE | READ)'|排序| uniq -c'
Linux下详细的IO监控和分析 - 系统级+流程级+业务级+文件级IO
#不停的dmesg -c
回声0>
/proc/sys/vm/block_dump#不使用时关闭
Linux下详细的IO监控和分析 - 系统级+流程级+业务级+文件级IO
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部