모든 CPU의 평균 부하 범위가 0-1+가 아닌 이유는 무엇입니까?

모든 CPU의 평균 부하 범위가 0-1+가 아닌 이유는 무엇입니까?

CPU당 로드 평균이 0-1(또는 0-1024)인 것으로 알고 있습니다. 예를 들어 사용량이 많은 쿼드 코어의 로드 평균은 4.0 이상일 수 있습니다. (예: 작업이 많은 경우) 나는 그것이 100+ 등과 같이 클 수 있다는 것을 알고 있습니다.

또한 이는 CPU 사용률(즉, 100%를 초과할 수 있음)은 아니지만 CPU 성능을 반영한다는 것도 이해합니다.

그런데 왜 시스템의 CPU 수로 자동으로 나누어지지 않습니까?

이것은 역사적인 질문에 가깝습니다. 왜:

(load)

아니다:

(load) / (# of cores)

모든 CPU를 고려하시나요? 왜 CPU별로? 모든 CPU에 대해 이를 갖는다는 것은 먼저 시스템에 얼마나 많은 CPU가 있는지 알아낸 다음 그 숫자를 나누어서 의미 있는 숫자를 얻어야 함을 의미합니다. 이는 다양한 시스템을 관리할 때 번거로운 작업입니다.

이것은 리눅스용입니다.

답변1

로드 평균은 CPU 시간을 사용하거나 CPU 시간을 기다리는 프로세스 이상을 포괄합니다. 또한 중단 없는 절전 상태(일반적으로 디스크 I/O를 기다리는 것을 의미)에 있는 프로세스도 다룹니다.

CPU 수로 나누면 이상한(종종 쓸모없는) 숫자가 나옵니다. 시스템에 단일 디스크에서 대기 중인 4개의 코어와 7개의 프로세스가 있는 경우 로드 평균은 정의에 따라 1.75로 수렴됩니다. 하지만 이 숫자는 아무 의미가 없습니다. I/O 바인딩 워크로드를 측정할 때 코어 수로 나누면 의미 없는 결과가 나옵니다.

물론 CPU를 기다리는 평균 프로세스 수와 중단 없이 절전 모드에 있는 평균 프로세스 수를 계산할 수 있습니다. 이 두 숫자의 합은 기존 부하 평균입니다. 어떤 경우에는 CPU에서 대기 중인 평균 프로세스 수를 CPU 수로 나눈 값도 의미 있는 숫자일 수 있습니다.

그러나 무중단 절전 모드의 평균 프로세스 수를 디스크 수로 나눈 것은 의미가 없습니다. 결국 무정전 절전 모드에 있다고 해서 어떤 디스크가 기다리고 있는지 의미하는 것은 아니며, 디스크 수도 가상 장치에 포함되어야 하는지 확실하지 않습니다.

답변2

당신은 말하지 않았지만 나는 이것이 Linux용이라고 가정하고 있습니다. CPU별 기록 이유를 찾고 있지만 질문에 따르면 실제 커널 작업 대기열이 아닌 CPU 사용률 측면에서 로드 평균을 여전히 고려하고 있는 것으로 나타났습니다. 각 CPU의 사용률을 보려면 top과 같은 프로그램에서 CPU 사용률을 볼 수 있습니다.

4개의 CPU 코어가 있는 경우 이는 코어가 동시에 4개의 CPU에 대해 4개의 작업을 대기열에 넣을 수 있음을 의미합니다. 따라서 가방 4개 + 수하물 몇 개를 들고 다니게 됩니다. 커널이 실행 중인 작업 뒤에 더 많은 작업을 대기열에 추가하면 숫자는 4보다 커집니다. 0~100% 범위는 전혀 아니며 작업 부하에 따라 필요한 만큼 그 수치가 높아집니다. 실패한 네트워크 파일 시스템의 IO 작업 백로그로 인해 로드가 15,000개 이상으로 증가하는 것을 보았습니다. 실제로 이 숫자는 1024에 도달한 후 재설정됩니다.

관련 정보