testing生产难的硬/debugging高I / O负载

最近我在这个服务器上得到了很多的高负载,所以这个系统上应该没什么问题。 似乎只是使用磁盘的最简单的东西就像一个YUM更新将在10LA运行良好,当它运行在1以下的驱动器。

这可能是一个坏的驱动器?

iostat -xdk 1 50 http://pastebin.com/hRxY50FC

发生问题时,您可以发布iostat -xdk 1 50吗? 请参阅iostat的手册页,了解可用于获取分区名称的交换机)。 将其粘贴到一起,同时获取最高的poutput。

好的,在这里,当你的磁盘在你的工作负载的特定时间似乎变得过载。

Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 85.00 5.00 249.00 11.00 6040.00 64.00 46.95 10.73 44.23 3.85 100.00 sda 3.00 0.00 275.00 0.00 7764.00 0.00 56.47 7.63 23.27 3.64 100.00 sda 125.00 29.00 221.00 3.00 5508.00 128.00 50.32 7.49 41.08 4.46 100.00 sda 14.00 65.00 224.00 28.00 5940.00 372.00 50.10 1.97 8.05 3.52 88.80 

与其他迭代相比,读取请求有时变得太零星。 然后等待增加。 但是,在avgqu-sz中logging的平均队列大小依然很低。 这意味着,大部分的等待时间都是在存储服务于请求的时候花费的。 这不是在Linux方面,我的意思是不在调度方。

粗略地说,有两个队列。 一个在调度器中,另一个在硬件方面。 等待时间是根据从IO调度器到IO调度器的每个IO到由存储器(即磁盘)提供服务的时间来测量的。 avgqu-sz是IO调度程序和存储LUN队列中IO的平均数。 如果avgqu-sz远小于存储器的队列深度,则意味着在调度器队列中花费的时间很less。 调度程序会将这些IO传递给存储,直到它们被存储服务,这个等待时间将会持续增加。

长话短说,在我看来,在特定的时间,存储变得缓慢,这增加了延迟。

除了原始磁盘容量之外,要理解高磁盘利用率也是一个重要的事情,那就是内存在系统上的performance如何。

良好的文件IO通常依赖于大量的caching。 在内存压力下会发生两件事,可能会导致较高的IO负载:

  1. 被caching的文件被从内存中推出,为进程内存腾出空间(这可以通过查看free命令的输出来查看
  2. 您可能会开始主动将内存推入和退出交换分区。 您可以通过查看bi / bo与vmstat命令交换来查看是否发生这种情况。

如果所有这些看起来都不错,那么您可能需要考虑确定哪个进程导致繁重的磁盘I / O?