在负载运行期间,IO 等待始终达到 60-70% 左右的高值

在负载运行期间,IO 等待始终达到 60-70% 左右的高值

我陷入了 IOwait 相关问题,我正在监视的服务器在加载运行时显示了非常高的 IOwait 值(50%-70%)。我使用 SAR 报告命令生成了此数据。理想值应低于8%-9%因为服务器有12芯(1/12 ~ 0.08)。我在某处读过这篇文章并相应地采取了假设。

可以采取什么措施来纠正这个高 IOwait 问题,它与服务器中可以检查以提高性能的其他因素有何关系。

答案1

请允许我透露一下 Linux 的小秘密:Linux 中没有可靠的 iowait 统计数据。这只是事实。从过程(5)我们读:

iowait(自 Linux 2.5.41 起)

(5) 等待I/O完成的时间。该值并不可靠,原因如下:

  1. CPU不会等待I/O完成; iowait 是任务等待 I/O 完成的时间。当CPU因未完成的任务I/O而进入空闲状态时,将在该CPU上调度另一个任务。

  2. 在多核CPU上,等待I/O完成的任务不在任何CPU上运行,因此每个CPU的iowait很难计算。

  3. 在某些情况下,该字段的值可能会减少。

因此,我的建议是忘记 Linux 中的 iowait 测量。

答案2

CPU 越强大,iowait 就越大,而不是相反。

一般来说,为了减少 iowait 这可以帮助:

  1. 如果可能/适用,优化应用程序代码,例如次优的数据库查询可能会迫使 DBMS 执行低效的计划并导致磁盘负载过多。

  2. 如果读取负载很重,请获取更多 RAM。

  3. 使存储子系统更快。更快的磁盘、更快的 RAID、更快的存储控制器、回写式缓存。这本身就是一门科学。

抱歉,对于这样的通用问题,只有一个通用答案。

相关内容