4 linux top iowait amazon-ec2 amazon-ebs
在具有 8 个 EBS 卷和大量磁盘流量的 8 路 Amazon EC2 实例(运行 Linux 2.6.21)上,我们看到顶部的 %wa 很高 (30-40%),并且平均负载很高 (8-9)。我的理解是,等待来自 EBS 卷的 I/O 的进程被计入平均负载(一个 ps 显示几个处于 D 状态的进程,大约与负载平均一样多)。
但是,不清楚 %wa 是什么意思。CPU 是否真的被占用等待 EBS 卷的响应,或者内核是否在其上调度了另一个进程?我预计会安排另一个流程;但后来我不明白为什么 iowait 时间会被表示为总 CPU 时间的百分比(除非百分比加起来超过 100%)。
只要我们不最大化 EBS 卷的 I/O 容量,我不担心,但是如果 CPU 被占用等待 I/O,我认为我们的机器会在用完我之前用完 CPU 容量/O 容量。
如果至少有一个进程准备好接收 CPU 时间,则 CPU 可以并且将用于其他进程。有问题 - 您可以拥有一个 I/O 绑定系统,每个进程都在等待 I/O 完成,并且由于没有任何东西等待 CPU 时间,因此没有理由调度(和利用)CPU 用于除内核的活动...因此称为 I/O等待。
尝试运行vmstat 1
并定期查看“b”列(第 2 列)中是否有大于 0 的数字。如果是这样,您可能受 I/O 限制。偶尔看到它没什么大不了的,一直看到它的数字在 2-3 范围内是可以接受的但不是可取的,看到超过 5+ 意味着你可能太忙了(尽管这取决于多少您的系统可以容纳 I/O,因此它可以或多或少,具体取决于)。“b”的意思是“被阻塞的进程”,如“计划运行但被阻塞、等待 I/O 完成的进程数”。
跟进:
在 2.6 系列内核上有一个已知的错误,即重 I/O 和较新的调度程序。尝试更改您的调度程序,看看它是否有影响。