根据iostat分析程序的IO问题

来源:互联网 发布:c语言百分制转换 编辑:程序博客网 时间:2024/06/08 14:31

同样,在邮件系统性能调优的时候,发现一个组件总是达不到性能指标。用top看,系统的iowait达到了50%。再用iostat分析"iostat -x -m 1",可以看几个数据,"wMB/s“,"wrqm/s",  ”avgrq-sz“。 wMB/s 指每秒的写磁盘的吞吐; "wrqm/s"表示,每秒钟写入的次数,“avgrq-sz”, 每次写入的平均扇区数。 

  • 一般磁盘, wMB/s能在40以上,就是每秒写40M的数据。如果特别小,比如5M,那么表示写操作可以优化。 
  • wrqm/s要尽量小,而avgrq-sz要尽量大,意思是每次写尽可能多的数据,而减少写的次数。 

通过 iostat -x -m 1 发现,avgrg-sz是30左右,而wrqm/s在600左右,而iowait在50%。 在联系到这个组件的输入,每秒钟有600封邮件,每一封邮件是15K,也就是每一封邮件要占30个扇区,(每个扇区512字节)。 马上想到的是,是不是每次写邮件之后flush了? 检查代码,果然如此。