我们有以下 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"}}'