Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

시스템 부하 및 부하 평균 이해

top과 같은 도구 , uptime , w AppSignal의 호스트 측정항목은 로드 평균이라는 측정항목을 보고합니다. . 이 측정항목은 여러 기간 동안 평균을 낸 시스템 부하에 대해 알려줍니다.

$ uptime
10:14:14 up 60 days, 17:42,  1 user,  load average: 0.44, 0.28, 0.25

로드 평균은 일반적으로 uptime의 예와 같이 3개의 숫자로 표시됩니다. 위에. 결과 끝에 있는 세 개의 숫자는 마지막 1분 동안의 평균 로드를 나타냅니다(0.44 ), 지난 5분 동안(0.28 ), 마지막 15개(0.25 ).

AppSignal에서 로드 평균은 지난 8시간 동안 분 단위로 표시되고, 그보다 긴 시간 프레임에 대해서는 시간당 표시됩니다.

시스템 로드

이러한 부하 평균이 우리에게 무엇을 알려주는지(그리고 언제 경보를 울려야 하는지) 이해하려면 먼저 시스템 부하가 무엇인지 이해해야 합니다. 의미 및 계산 방법입니다.

시스템의 부하는 본질적으로 주어진 시간에 활성화된 프로세스의 수입니다. 유휴 상태일 때 로드는 0입니다. 프로세스가 시작되면 로드가 1만큼 증가합니다. 종료 프로세스는 로드를 1만큼 감소시킵니다. 실행 중인 프로세스 외에 대기 중인 모든 프로세스도 계산됩니다. 따라서 한 프로세스가 CPU를 적극적으로 사용하고 두 프로세스가 차례를 기다리고 있을 때 로드는 3입니다.

부하는 수명이 짧은 프로세스로 인해 빠르게 변동하며 밀리초 내에 0에서 5로 점프하고 다음 순간에 다시 되돌아올 수 있습니다. 이러한 변동성 때문에 시간 경과에 따른 평균 부하를 확인하는 것이 더 유용하며, 이는 시스템이 받은 부하에 대한 더 나은 개요를 제공합니다.

로드 평균

이제 시스템 부하가 어떻게 계산되는지 알았으므로 부하 평균을 살펴볼 수 있습니다. 우리가 보았듯이 시스템이 받는 부하는 일반적으로 시간 경과에 따른 평균으로 표시됩니다.

일반적으로 단일 코어 CPU는 한 번에 하나의 프로세스를 처리할 수 있습니다. 평균 로드가 1.0이라는 것은 하나의 코어가 100% 사용 중임을 의미합니다. 부하 평균이 0.5로 떨어지면 CPU가 50%의 시간 동안 유휴 상태인 것입니다.

로드 평균이 1.5로 올라가면 CPU가 항상 사용 중이고 평균적으로 다른 프로세스가 50%의 시간을 대기하고 있어 CPU가 처리할 수 있는 것보다 더 많은 작업을 제공합니다.

논리 프로세서

일반적으로 로드 평균은 시스템의 프로세서 수를 초과해서는 안 됩니다. 프로세서 수가 4개인 경우 로드는 일반적으로 4.0 미만으로 유지되어야 합니다.

이는 논리적 프로세서와 관련이 있다는 점에 유의하십시오. CPU의 실제 물리적 대신. 하이퍼 스레딩과 같은 소프트웨어 추상화로 인해 논리 프로세서 또는 처리 스레드의 수가 물리적 프로세서 코어의 수보다 많을 수 있습니다.

Linux에서 논리 프로세서의 수를 확인하려면 /proc/cpuinfo에 나열된 프로세서 수를 계산하십시오. 또는 grep processor /proc/cpuinfo | wc -l , 프로세서 라인 수를 자동으로 출력합니다.

Mac에서는 sysctl sysctl -n hw.ncpu를 사용하여 직접 논리 프로세서 수 .

여러 논리 프로세서가 있는 시스템의 경우 더 많은 동시 프로세스를 실행할 수 있으므로 로드 평균이 더 높아질 수 있습니다. 2개의 CPU 코어가 있는 시스템에서 로드 평균이 2.0이라는 것은 두 CPU가 모두 100% 활용된 반면 평균적으로 2개의 프로세스가 활성화되었음을 의미합니다.

<블록 인용>

👋 Ruby 성능 모니터링 체크리스트에서 다른 Ruby(on Rails) 성능 기사를 살펴보세요.

읽기 로드 평균

절대 프로세스 수의 평균이므로 적절한 로드 평균이 무엇인지, 언제 경고해야 하는지 결정하기가 어려울 수 있습니다. 일반적으로 각 CPU 코어는 한 번에 하나의 프로세스를 처리할 수 있으므로 논리 프로세서당 1.0을 넘을 때까지 시스템에 과부하가 걸리지 않습니다. 듀얼 코어 시스템(하이퍼 스레딩 없음)에서는 2.0이 됩니다.

일반적으로 마지막 1분에 평균 부하가 코어당 1.0 이상이면 문제가 없지만 5분 또는 15분 평균에서 부하가 증가하면 문제를 나타낼 수 있습니다.

:AppSignal의 이상 감지 기능을 사용하면 로드 평균이 일정 기간 동안 특정 값 이상으로 유지될 때 경고를 표시할 수 있습니다. 예를 들어 워밍업 설정을 사용하면 부하가 15분 동안 1.5를 초과하면 메시지를 보내드립니다.

평균 부하에 대한 질문에 답했습니까? 아니면 아직 명확하지 않은 부분이 있습니까? 주저하지 말고 @AppSignal로 알려주십시오. 물론 이 기사가 어떻게 마음에 들었는지, 또는 더 알고 싶은 다른 주제가 있는지 알고 싶습니다.