正常运行时间+CPU平均负载

正常运行时间+CPU平均负载

我们有以下 CPU 详细信息

more lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                32
On-line CPU(s) list:   0-31
Thread(s) per core:    2
Core(s) per socket:    8

正常运行时间显示

uptime
 07:41:41 up 40 days, 11 min,  2 users,  load average: 17.82, 23.40, 24.73

所以我们有 32 个 CPU(每个核心线程:2)

关于正常运行时间的 CPU 平均负载较高值,这些值正常吗?

平均负载:17.82、23.40、24.73

答案1

这是一个很难的问题。

如果平均负载高于 CPU 数量(持续时间太长),则表明事物正在排队。

然而,如果它们较少,这并不表示任何事情。可能有一个进程使用了​​ 100% 的 CPU,但无法完成其工作。

另一方面,如果您有许多低优先级批处理进程,没有实时截止日期。这可能会导致平均负载上升,但不会影响机器的性能。

所以简短的答案是,这取决于。

在这种情况下:

当且仅当系统正在做有用的工作时,我认为没有理由惊慌。但是,可能有一个(非并行)任务无法跟上其工作负载,平均负载不会告诉您这一点。

答案2

请检查下面的命令。

第一种方法

找出主机中配置的处理器数量:

    cat /proc/cpuinfo | grep -i processor| wc -l

假设我们得到的输出是4: 那么,负载平均值达到 4 就可以了。如果超过4,那就有问题了。

注意:(可接受的)平均负载直接取决于配置的核心处理器数量。

第二种方法

您可以使用下面的脚本来确定负载平均值是否正常:

    #!/bin/bash

    processor_count=`cat /proc/cpuinfo | grep -i processor| wc -l`
    echo $processor_count

    w| awk 'NR==1 {print $1=$2=$3=$4=$5=" ";print $0}'| sed -r "s/^\s+//g"|awk -F ":" '{print $2}'| awk -v pr="$processor_count" -F "," '{if (($1 > pr) || ($2 > pr) || ($3 > pr)){print "Load average is high and its above 100% of utilization"}else{print "load average is fine"}}'

相关内容