将 %CPU 与顶部的平均负载进行协调

将 %CPU 与顶部的平均负载进行协调

我们有一个长时间运行的进程,它利用 OpenMP 通过在多个线程(每个核心一个)中完成的计算来饱和所有可用的 CPU。

我正在查看服务器上的 top(1),该程序在所有 24 个内核上运行。

正如人们所预料的那样,%CPU 列显示消耗 2380-2400% CPU 的进程。它已经不间断地运行了几个小时:

  PID USER  PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
27647 xxx   20   0 1416m 232m  11m R 2390.8  0.1   2324:59 pig

然而,平均负载仅在 9 到 11 之间波动:

top - 19:22:37 up 25 days,  5:35,  5 users,  load average: 10.78, 10.24, 9.60

而我预计它也会徘徊在 24 或略低于 24。

%CPU 是否在骗我——进程实际上有一半以上的时间在执行 I/O,但仍报告为正在运行?或者平均负载计算不正确?

这是在 Linux、RHEL-6、内核 2.6.32-696.6.3 上...

相关内容