这是我在卡住之前的最后一个重要信息:
top - 18:26:10 up 238 days, 5:43, 3 users, load average: 1782.01, 1824.47, 1680.36
Tasks: 1938 total, 1 running, 1937 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.4%us, 3.0%sy, 0.0%ni, 0.0%id, 94.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 65923016k total, 65698400k used, 224616k free, 13828k buffers
Swap: 33030136k total, 17799704k used, 15230432k free, 157316k cached
正如你所看到的,由于我启动了大约 2000 个执行hadoop get
命令的进程,%wa非常高。我限制内存和CPU cgroups
,如果我也限制磁盘IO会有帮助吗?如果是这样,有人能给我一些关于如何做到这一点的想法cgroups
吗?提前致谢。
答案1
您的系统正在大量交换(使用了 17G 交换),这将使从常规进程到相应驱动器的任何 I/O 速度极其缓慢 - 这会导致高%wa
.
不是 100% 确定,但即使交换本身也可能直接影响该%wa
数字(通常通过kswapd
进程,在您的情况下也可能是最大的 CPU 拥抱者)。
首先,您要限制进程数量,以便不使用(或很少)交换,然后重新检查 %wa 并评估您是否确实需要限制这些进程的 I/O。