本篇文章给大家分享的是有关如何进行解析linux IO,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
- 因为/proc/diskstats并未把队列等待时间和硬盘处理时间分开,所以凡是以它为基础的工具都不可能分别提供disk service time以及queue有关的值
- iostat是以/proc/diskstats为基础计算出来的,
- 每个I/O的平均耗时是用await表示的,但它不能反映硬盘设备的性能,因为await不仅包括硬盘设备处理I/O的时间,还包括了在队列中等待的时
- %util:该硬盘设备的繁忙比率=[Δio_ticks/Δt],表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有。太高可能都是顺序IO
- %iowait 表示在一个采样周期内有百分之几的时间属于以下情况:CPU空闲、并且有仍未完成的I/O请求
pidstat 计算进程单位时间内的增量
iotop 观察进程的动态I/O
使用blktrace需要挂载debugfs:
$ mount -t debugfs debugfs /sys/kernel/debug
利用blktrace把数据记录在文件里,缺省的输出文件名是 sdb.blktrace.<cpu>,每个CPU对应一个文件。你也可以用-o参数指定自己的输出文件名。
$ blktrace -d /dev/sdb
利用btt分析blktrace数据。btt是对blktrace数据进行自动分析的工具。
btt不能分析实时数据,只能对blktrace保存的数据文件进行分析。使用方法:
把原本按CPU分别保存的文件合并成一个,合并后的文件名为sdb.blktrace.bin:
$ blkparse -i sdb -d sdb.blktrace.bin
执行btt对sdb.blktrace.bin进行分析:
$ btt -i sdb.blktrace.bin
我们看到93.7461%的时间消耗在D2C,也就是硬件层,这是正常的,我们说过D2C是衡量硬件性能的指标,
这里单个IO平均0.129201毫秒,已经是相当快了,单个IO最慢14.246176 毫秒,不算坏。Q2G和G2I都很小,完全正常。
I2D稍微有点大,应该是cfq scheduler的调度策略造成的,你可以试试其它scheduler,比如deadline,比较两者的差异,然后选择最适合你应用特点的那个。
以上就是如何进行解析linux IO,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。