asc*_*nts 4 linux central-processing-unit cpu-usage high-load load-average
在高性能计算的背景下,是否存在合理/安全的 CPU 负载水平?
我理解的意思的平均负载在一般的服务器,但不知道会发生什么,建成并用于高性能计算服务器。
通常的约定是否load <= # of cores适用于这种环境?
鉴于我的系统特定详细信息,我很好奇,通常load >> # of cores每个节点:
节点的正常运行时间很长,CPU 使用率/负载通常很高。很少有硬件故障,尤其是 CPU,但我不知道在给定高负载的节点的整个生命周期中会发生什么。
示例top输出:
top - 14:12:53 up 4 days, 5:45, 1 user, load average: 313.33, 418.36, 522.87
Tasks: 501 total, 5 running, 496 sleeping, 0 stopped, 0 zombie
%Cpu(s): 33.5 us, 50.9 sy, 0.0 ni, 15.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 19650371+total, 46456320 free, 43582952 used, 10646443+buff/cache
KiB Swap: 13421772+total, 78065520 free, 56152200 used. 15164291+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
85642 user 20 0 36.5g 7.6g 245376 S 1566 4.0 1063:21 python
97440 user 20 0 33.1g 5.3g 47460 S 1105 2.8 512:10.86 python
97297 user 20 0 31.0g 4.0g 69828 S 986.4 2.1 430:16.32 python
181854 user 20 0 19.3g 5.0g 19944 R 100.0 2.7 2823:09 python
...
Run Code Online (Sandbox Code Playgroud)
iostat -x 5 3在同一台服务器上的输出:
avg-cpu: %user %nice %system %iowait %steal %idle
50.48 0.00 12.06 0.38 0.00 37.08
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 350.41 705.68 58.12 22.24 2126.25 3393.61 137.36 6.02 74.93 9.10 246.94 1.19 9.56
dm-0 0.00 0.00 4.87 8.70 511.41 516.65 151.59 0.31 22.55 28.40 19.28 2.62 3.56
dm-1 0.00 0.00 403.67 719.23 1614.71 2876.92 8.00 8.83 7.10 7.38 6.95 0.08 9.05
dm-2 0.00 0.00 0.00 0.00 0.02 0.01 65.03 0.00 3.74 3.82 1.00 2.12 0.00
Run Code Online (Sandbox Code Playgroud)
平均负载显示准备运行的线程队列。在 Linux 中,这也包括等待磁盘的线程。可能会发生损坏的 NFS 服务器可能会将平均负载增加到疯狂的数字。这并不意味着 CPU 被占用了。
所以平均负载只显示了故事的一方面,不能单独考虑,这就是我要求top输出的原因。
注意一些工作负载是可并行化的。这意味着所有步骤将一个接一个地在同一个核心上运行。实际问题通常是部分可并行化的。
在性能方面,您有一些目标和限制。像低延迟、吞吐量、成本(初始成本和运营成本)......
如果您对吞吐量和低成本感兴趣,那么排长队可能是正常的。您所有的 CPU 内核都将始终处于 100% 的使用率。
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |