首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于高性能计算的CPU负载

用于高性能计算的CPU负载
EN

Server Fault用户
提问于 2020-07-16 15:00:27
回答 2查看 683关注 0票数 4

在高性能计算的背景下,CPU负载是否有一个合理/安全的水平?

一般情况下,我理解服务器的含义 of 负荷平均,但不知道为高性能计算而构建和使用的服务器会期望什么。

load <= # of cores的惯例是否适用于这种环境?

我对我的系统特定细节感到好奇,通常每个节点的load >> # of cores是这样的:

  • 24个物理核,用于48个虚拟核的超线程(相对新的硬件)
  • 负载平均值:通常为100-300

节点具有较高的正常运行时间,通常具有较高的CPU使用率/负载。硬件故障很少,特别是对于CPU,但是我不知道在高负载的节点的生存期内会发生什么。

示例top输出:

代码语言:javascript
复制
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 
...

iostat -x 5 3在同一服务器上的输出:

代码语言:javascript
复制
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
EN

回答 2

Server Fault用户

发布于 2020-07-16 15:41:58

显示可以运行的线程队列。在Linux中,这也包括等待磁盘的线程。故障NFS服务器可能会将负载平均增加到疯狂的数字。这并不意味着CPU被占用。

因此,负载平均值只显示了故事的一个方面,不能单独使用,这就是为什么我要求top输出。

有些工作负载是可并行的。这意味着所有的步骤都将一个接一个地运行在同一个核心上。实际问题通常是可部分并行的。

在性能方面,您有一些目标和限制。比如低延迟,吞吐量,成本(初始成本和运营成本).

如果您对吞吐量和低成本感兴趣,那么拥有高队列可能是正常的。您的所有CPU核心将是100%的使用率,一直。

票数 7
EN

Server Fault用户

发布于 2020-07-17 16:36:53

平均负载只是一种症状,是操作系统很容易报告的一个有用的指标。一个医生不能诊断出什么是人类的问题,一个人只要发烧症状,他们有更多的问题,是怎么回事。同样地,对于计算机病人,需要更多的背景来说明他们的表现。

在不同的系统之间,负载平均值可能会有很大的差异。有些平台不报告可能在平均负载中执行I/O的任务,这与Linux的工作方式不同。有些主机可以有平均负荷,每个核心在几十个,而不是跌倒。有些应用程序对延迟非常敏感,在用户响应时间不佳的情况下,每个内核的负载都大于一个内核。

除了OS级别的度量之外,收集应用程序特定的性能基准,并随着时间的推移对它们进行趋势化。一般例子:

  • 一个HPC系统每个CPU核心做多少个操作?
  • 用户请求响应时间可接受吗?
  • 一个数据库每秒有多少次查询?
  • 系统是否与典型的批处理保持一致?

要将OS指标放到上下文中,就必须对系统所做的有用工作进行一些度量。您的系统似乎在做有用的工作,即使在一个相对较高的负载平均值。与分叉炸弹不同的是,分叉炸弹将负载驱动到不可用的高级别,但作为拒绝服务攻击,没有任何用处。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1025507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档