하중 평균 0.00은 어떻게 존재할 수 있습니까?


12

로드 밸런스는 CPU 사용량을 측정하는 방법이라는 것을 알고 있습니다. 그러나 부하 평균이 어떻게 0.00존재할 수 있는지 이해하지 못합니다 . 커널이 항상 실행되지 않습니까? CPU 부하에 포함되지 않습니까?


6
0.00으로 표시되는 대부분의 경우 실제로는 0.0001 정도입니다.
PlasmaHH

1
옛날에는 실행 대기열의 평균 길이였습니다. 다시 말해, 실행할 준비가 된 프로세스 수 (I / O 등을 기다리지 않는 프로세스) 수입니다. 존재하지 않는 경우 0.00입니다. 요즘 이것은 그래픽 데스크탑을 실행하지 않고 GUI가없는 서버를 실행하는 경우에만 가능합니다.
Thorbjørn Ravn Andersen

완벽을 기하기 위해 커널 유휴 스레드가로드 평균으로 계산되는 커널 버그가있는 것은 BSD 중 하나라고 생각합니다. 시스템이 전혀 아무것도하지 않을 때로드 평균 1.00이 발생했습니다. 꽤 빨리 고쳐졌습니다.
CVn

답변:


16

일정 기간 동안의로드 평균은 해당 기간 동안 CPU와 경쟁 한 평균 프로세스 수입니다. 수행 할 작업이 없으면 "커널"이 실행되지 않습니다. 보다 구체적으로, 수행 할 작업이없는 경우 CPU는 계산되지 않는 특수한 "유휴"스레드에 제공됩니다 (CPU를 넣는 것과 같은 작업은 인터럽트를 기다리는 상태 임).

예를 들어, 5 분 동안로드 평균 0.6은 일반적으로 5 분 동안 CPU가 일부 프로세스 (또는 커널) 및 총 2 분 동안 총 3 분 동안 사용되었음을 의미합니다. 유휴 상태였습니다. 그러나 @UKMonkey가 관찰 한 것처럼 4 분 반 동안 아무것도하지 않으면 6 개의 프로세스가 지난 30 초 동안 CPU와 경쟁했습니다 ...

CPU가 유휴 상태 인 경우 모든 프로세스가 입력 또는 출력 작업이 완료되기를 기다리고 있거나 특정 미래에 깨어날 때까지 대기하기 때문에 코드를 실행하는 데 사용할 프로세스가없는 경우 유휴 상태입니다.

@Panther의 링크는로드 평균에 대한보다 심도 깊은 토론을 제공합니다.


1
5 분 동안 평균 0.6의로드는 4 분 반 동안 아무 것도하지 않았다는 것을 의미 할 수 있습니다. 그리고 지난 30 초 동안 CPU 시간을 기다리는 많은 프로세스가있었습니다. 그것은 얼마나 많은 작업을 나타내는지는 아닙니다. CPU가 완료되었지만 사용 대기중인 프로세스 수
UKMonkey

@UKMonkey : 완벽하게 사실입니다. 평균은 평균이며 여러 방법으로 동일한 평균을 얻을 수 있습니다. 중간 정도의 평균이 피크가 합리적이라는 의미는 아니라고 설명하기 위해 답변을 수정했습니다.
AlexP

13

로드 평균은 CPU 코어에 과부하가 걸리는 정도를 측정하여 한 번에 사용하려는 프로세스 수를 나타냅니다.

다음은 단일 코어 (단일 스레드) CPU를 가정합니다.

  • 0.0

    CPU가 전혀 동작하지 않습니다. 프로세스가 CPU 사용을 시작한 경우이를 사용하는 유일한 프로세스입니다.

    유휴 CPU는 실행중인 프로세스가 없음을 의미하지 않습니다. 예를 들어 백그라운드 서비스와 커널이 여전히 실행 중이며 여전히 메모리를 차지하고 있습니다. 그들은 아무것도하지 않기 때문에 CPU를 사용하지 않습니다.

  • 1.0

    CPU 사용량이 최대이지만 CPU 사용을 위해 프로세스간에 경합이 없습니다. 즉, 단일 프로세스 만 실행되므로 자체 CPU 시간의 100 %를 청구 할 수 있습니다. 또는 여러 프로세스가 실행되고 있지만 100 % CPU를 요구하는 프로세스는 없으며 그 조합 된 CPU 사용량이 최대 100 %가됩니다. CPU가 있어도 실행 속도만큼 빠르게 실행됩니다.

  • 1.0 이상

    CPU는 최대 사용량이며 동시에 사용하려는 여러 프로세스가 있으므로 유휴 CPU에서 실행할 수있는 것보다 더 느리게 효과적으로 실행됩니다. 예를 들어,로드 평균 3.0은 프로세스가 실행하려는 속도의 3 분의 1로 실행 중임을 나타냅니다. 로드 평균 50.0은 실행중인 다른 모든 프로세스로 인해 프로세스가 실행하려는 속도의 1/50으로 실행 중임을 나타냅니다. 즉, 1.0보다 높은 수치는 사용 가능한 CPU가 점점 더 많은 프로세스간에 확장되고 있음을 나타냅니다.

다중 코어 CPU를 사용하더라도 수치의 의미는 변경되지 않지만 해석은 변경 될 수 있습니다. 예를 들어, 4 코어 CPU가있는 경우 1.0의로드는 여전히 한 코어에서 100 % CPU를 사용하는 하나의 프로세스와 동일하지만 3 개의 다른 코어가 있습니다. 따라서 4 코어 CPU에서 최대 효율 지점은 1.0이 아니라 4.0입니다. 1/3 효율로 모든 것이 실행되는 지점은 3.0이 아니라 12.0입니다. 복잡성을 더하기 위해 단일 프로세스에는 각각 자체 CPU를 요구하는 둘 이상의 스레드가있을 수 있습니다. 따라서 다중 스레드 인 경우 단일 프로세스에서 4 개 코어 모두의 100 %를 사용할 수 있습니다.

중요 사항

CPU 사용량은 프로세스 성능을 제한 할 수있는 하나의 리소스 일뿐입니다. I / O는 또 다른 것이며 CPU로드에 포함되지 않습니다. 일정량의 CPU를 사용하는 프로세스는 다른 병목 현상을 겪을 수 있으므로 더 가벼운로드 된 시스템에서 더 많은 것을 사용할 수있는 것은 아닙니다.

최고의로드 평균은 얼마입니까

실제로는 수행중인 작업과 응답 성을 선호하는지 또는 CPU가 가능한 한 열심히 작동하는지에 달려 있습니다.

가능한 한 많은 작업을 수행해야하는 경우로드 평균은 코어 수 이상이어야합니다. 이보다 훨씬 큰 것은 더 많은 컴퓨터 / 서버에서 작업을 분리하면 더 빨리 더 빨리 수행 할 수 있음을 나타냅니다.

가능한 한 빨리 반응해야하는 (빠른 반응) 부하 평균은 코어 수 (예 : 절반 또는 1/3)보다 편안한 여유를 가져야합니다.

가상화 게스트 (예 : KVM)의 경우 실제로 동일한 호스트의 다른 게스트와 CPU를 공유하기 때문에로드 평균이 낮을수록 좋습니다.


때때로 "I / O 대기"스레드가로드 평균 serverfault.com/a/524818/27813에 포함되어있는 것을보고 놀랐습니다 .
rogerdpack

@rodgerpack 예, D상태 프로세스는 항상 Linux의로드 평균에 포함됩니다. 예, 혼란 스럽습니다. 예, 주로 평균로드 이외의 다른 측정 항목을 살펴 봐야합니다.
kubanczyk

2

0.00의로드 평균은 기본적으로 시스템이 유휴 상태이고 측정 된 시간 동안 CPU에 지연이나 스트레스 또는 병목 현상이 없음을 의미합니다.

CPU가 비활성 상태가 아니라 프로세스가 CPU 시간을 원하는 경우 대기가 없음을 의미합니다.

부하 (시스템, 사용자 당?)를 측정 한 방법 및 시간에 따라 게시 할 수있는 작은 정보를 더 많이 말하기는 어렵습니다.

자세한 내용과 흥미로운 내용은

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.