가동 시간 + 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

따라서 CPU는 32개입니다(코어당 스레드 수: 2).

가동 시간에 대한 높은 CPU 부하 평균 값과 관련하여 이러한 값은 정상입니까?

부하 평균: 17.82, 23.40, 24.73

답변1

이것은 어려운 질문입니다.

로드 평균이 CPU 수보다 높으면(너무 오랫동안) 대기열에 대기 중이라는 의미입니다.

그러나 그 수가 적다면 아무 의미가 없습니다. CPU를 100% 사용하고 있지만 작업을 완료할 수 없는 프로세스가 있을 수 있습니다.

반면에 우선순위가 낮은 배치 프로세스가 많으면 실시간 기한이 없습니다. 이로 인해 부하 평균이 상승할 수 있지만 장비 성능에는 영향을 미치지 않습니다.

짧은 대답은 상황에 따라 다르다는 것입니다.

이 경우:

시스템이 유용한 작업을 수행하는 경우에만 당황할 이유가 없습니다. 그러나 워크로드를 따라갈 수 없는 (비병렬) 작업이 있을 수 있으며 로드 평균은 이를 알려주지 않습니다.

답변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"}}'

관련 정보