IO系统性能:在Linux中监视IO性能
合上图对读IO操作的过程做一个说明,在从OS Buffer Cache传入到OS Kernel(Linux IO scheduler)的读IO操作的个数实际上是rrqm/s r/s,直到读IO请求到达OS Kernel层之后,有每秒钟有rrqm/s个读IO操作被合并,最终转送给磁盘控制器的每秒钟读IO的个数为r/w;在进入到操作系统的设备层(/dev/sda)之后,计数器开始对IO操作进行计时,最终的计算结果表现是await,这个值就是我们要的IO响应时间了;svctm是在IO操作进入到磁盘控制器之后直到磁盘控制器返回结果所花费的时间,这是一个实际IO操作所花的时间,当await与svctm相差很大的时候,我们就要注意磁盘的IO性能了;而avgrq-sz是从OS Kernel往下传递请求时单个IO的大小,avgqu-sz则是在OS Kernel中IO请求队列的平均大小.
现在我们可以将iostat输出结果和我们前面讨论的指标挂钩了. 平均单次IO大小(IO Chunk Size) <=> avgrq-sz 平均IO响应时间(IO Response Time) <=> await IOPS(IO per Second) <=> r/s w/s 吞吐率(Throughtput) <=> rkB/s wkB/s topiostat的应用实例 top观察IO Scheduler的IO合并(IO Merge) 前面说过IO在执行过程中会被合并以提高效率,下面就结合dd命令和iostat命令看一下. 我们先执行dd命令,设置bs参数值为1k,完整命令如下 dd if=/dev/zero of=test bs=1k count=1024000 同时打开另外一个终端执行iostat命令,这里只查看变化那个磁盘的更改,每秒刷新一次数据,完整命令如下 iostat -x hdc7 1 然后我们可以得到下面的结果 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc7 0.00 9447.00 0.00 776.00 0.00 80616.00 0.00 40308.00 103.89 480.18 805.95 1.29 100.00 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 56.00 43.50 0.00 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc7 0.00 9534.00 0.00 872.00 0.00 81384.00 0.00 40692.00 93.33 274.56 401.19 1.14 99.00 avg-cpu: %user %nice %sys %iowait %idle 2.50 0.00 46.50 14.00 37.00 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util hdc7 0.00 6766.00 1.00 276.00 8.00 58808.00 4.00 29404.00 212.33 197.27 321.66 1.95 54.00 avg-cpu: %user %nice %sys %iowait %idle 0.50 0.00 0.50 0.00 99.00 看结果中第一组数据中的avgrq-sz,为103.89个扇区,磁盘的每个扇区为512字节,因此平均IO大小为103.89*512/1024=52k字节,远远大于我们dd命令时给定的参数1k字节,也就是说IO在中间被合并了.看巨大的wrqm/s也能得出同样的结论. 出处:linux.html">http://www.lansz.com/html/2009/11/io-performence-03_check-performence-in-linux.html |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |