ITPub博客

首页 > Linux操作系统 > Linux操作系统 > linux IO理解-1

linux IO理解-1

Linux操作系统 作者:G8bao7 时间:2017-12-13 10:25:51 0 删除 编辑


容易被误读的IOSTAT

- 因为/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分析IO性能


http://linuxperf.com/?p=161



使用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,比较两者的差异,然后选择最适合你应用特点的那个。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26250550/viewspace-2148631/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-11-04

  • 博文量
    486
  • 访问量
    1184089