여기서 CPU 로드와 CPU 사용률을 구별해야 합니다. 둘은 서로 다른 개념이지만 해당 정보는 동일한 top 명령에 표시될 수 있습니다. CPU 사용률은 프로그램이 실행되는 동안 실시간으로 CPU를 차지하는 비율을 보여줍니다. 이는 특정 기간 동안의 CPU 사용량에 대한 통계입니다. 이 표시기를 통해 특정 기간 동안 CPU가 얼마나 사용되는지 확인할 수 있습니다. 점유된 경우 시간이 매우 높으면 CPU가 이미 과부하 상태인지 고려해야 합니다. CPU 로드는 일정 시간 동안 CPU가 처리하고 CPU가 처리하기를 기다리는 프로세스 수의 합계에 대한 통계 정보를 나타내며, 이는 CPU 사용 큐 길이에 대한 통계 정보입니다.
CPU 사용률이 높다고 해서 작업 부하가 커야 한다는 의미는 아닙니다. 아마도 작업이 CPU 집약적일 수도 있습니다. 동일한 낮은 CPU 사용률 상황에서 높은 로드 평균이 발생합니까? 점유 시간과 사용 시간을 이해하면 CPU가 타임 슬라이스를 할당한 후 이를 사용할지 여부는 전적으로 사용자에게 달려 있으므로 전적으로 낮은 사용률과 높은 부하 평균이 가능하다는 것을 알 수 있습니다. 또한 IO 장치로 인해 CPU 부하가 높아질 수도 있습니다.
이러한 관점에서는 CPU 사용량만으로 CPU가 과부하된 작업 상태인지 판단하는 것만으로는 충분하지 않으며, 이를 전체적으로 CPU 사용량을 살펴보려면 로드 평균과 결합해야 합니다. 둘 사이의 차이점을 보여주는 예가 인터넷에 있습니다. 공중 전화 부스에서는 한 사람이 전화를 걸고 네 사람이 기다리고 있습니다. 1분 이내에 전화를 걸면 전화를 끊고 다음 라운드를 기다리면 됩니다. 여기서 전화는 CPU에 해당하고, 전화를 걸거나 전화를 기다리는 사람은 작업 수에 해당합니다. 전화 부스를 사용하는 동안 일부 사람들은 전화를 걸고 떠나고 일부는 통화를 마치지 않고 다시 대기열을 선택하며 여기에 새로운 사람들이 줄을 서게 될 것입니다. 또는 작업 수가 감소합니다. 평균 부하를 계산하기 위해 5초마다 인원수를 계산하고, 1분, 5분, 15분의 통계를 평균하여 1분, 5분, 15분의 평균 부하를 구성합니다. 어떤 사람은 전화기를 들고 바로 전화를 걸고 통화가 1분 정도 지속되는 반면, 어떤 사람은 처음 30초 안에 전화번호를 찾거나, 전화할까 말까 망설이다가 마지막 30초 안에 실제로 전화를 걸 수도 있다. 휴대폰을 CPU로 간주하고 인원수를 작업으로 간주하면 전자(작업)의 CPU 사용률이 높고 후자(작업)의 CPU 사용률이 낮다고 말합니다. 물론, CPU는 처음 30초 동안 작동하지 않고 다음 30초 동안 정지합니다. CPU는 계속 작동합니다. 단지 일부 프로그램에는 계산이 많이 포함되어 CPU 사용률이 높고, 일부 프로그램에는 계산이 거의 포함되지 않아 CPU 사용률이 당연히 낮습니다. 그러나 CPU 사용률이 높든 낮든 나중에 대기열에 추가되는 작업 수와는 아무런 관련이 없습니다.
작업은 궁극적으로 처리를 위해 CPU 코어에 할당되므로 CPU 수와 CPU 코어 수(즉, 코어 수)는 CPU 로드에 영향을 미칩니다. CPU 2개는 CPU 1개보다 좋고, 듀얼코어는 싱글코어보다 좋습니다. 따라서 CPU 성능의 차이와는 별개로, CPU 로드는 코어 수, 즉 "코어가 몇 개인지, 즉 로드가 얼마나 되는가"를 기준으로 계산된다는 점을 기억해야 합니다. 단일 코어의 경우 100%를 초과하지 않는 것이 가장 좋습니다. 즉, 로드는 1.00입니다.
Linux에는 현재 실행 중인 시스템의 가상 매핑을 저장하는 /proc 디렉터리가 있습니다. CPU 정보를 저장하는 cpuinfo라는 파일이 있습니다. /proc/cpuinfo 파일은 실제 CPU가 아닌 논리적 CPU별로 정보를 섹션별로 표시하며 각 논리적 CPU의 정보는 한 섹션을 차지하며 첫 번째 논리적 CPU 식별자는 0부터 시작합니다.
으아악이 파일의 CPU 정보를 이해하려면 다음과 같은 몇 가지 관련 개념을 알아야 합니다. 프로세서는 논리적 CPU의 식별을 나타내고, 모델 이름은 실제 CPU의 모델 정보를 나타내며, 물리적 ID는 실제 CPU 및 식별을 나타냅니다. , CPU 코어는 CPU의 실제 코어 수 등을 나타냅니다.
논리 CPU 설명: 오늘날의 서버는 일반적으로 CPU 성능을 향상시키기 위해 "하이퍼스레딩"(HT) 기술을 사용합니다. 하이퍼스레딩 기술을 사용하면 CPU는 동시에 여러 프로그램을 실행하고 CPU의 리소스를 공유할 수 있습니다. 이론적으로는 두 개의 CPU처럼 두 개의 스레드를 동시에 실행해야 합니다. 하이퍼스레딩 기술은 동시에 두 개의 스레드를 실행할 수 있지만 두 개의 실제 CPU와는 달리 각 CPU에는 독립적인 리소스가 있습니다. 두 스레드가 동시에 리소스를 필요로 하는 경우, 그 중 하나는 계속하기 전에 해당 리소스가 유휴 상태가 될 때까지 리소스를 일시적으로 중지하고 포기해야 합니다. 따라서 하이퍼스레딩의 성능은 두 CPU의 성능과 동일하지 않습니다. 하이퍼스레딩 기술이 적용된 CPU에는 다른 제한 사항이 있습니다.
로드 평균의 개념은 UNIX 시스템에서 유래되었습니다. 각 회사의 공식은 다르지만 모두 CPU를 사용하는 프로세스 수와 CPU를 기다리는 프로세스 수를 측정하는 데 사용됩니다. 실행 가능한 프로세스 수 따라서 부하 평균은 CPU 병목 현상에 대한 참조 지표로 사용할 수 있습니다. CPU 수보다 크면 CPU가 충분하지 않을 수 있음을 의미합니다.
하지만 Linux에서는 조금 다릅니다!
CPU를 사용하는 프로세스 수와 CPU를 기다리는 프로세스 수 외에도 Linux의 평균 로드에는 중단 없는 절전 모드에 있는 프로세스 수도 포함됩니다. 일반적으로 IO 장치와 네트워크를 기다릴 때 프로세스는 중단할 수 없는 절전 상태에 있습니다. Linux 설계자의 논리는 무정전 절전 모드가 매우 짧아야 하며 곧 작업을 재개하므로 실행 가능과 동일하다는 것입니다. 그러나 중단할 수 없는 수면은 비록 짧더라도 여전히 수면입니다. 또한 현실 세계에서는 중단할 수 없는 수면이 그다지 짧지 않을 수도 있습니다. 중단할 수 없는 수면의 수가 많거나 길다는 것은 일반적으로 IO 장치에 병목 현상이 발생했음을 의미합니다. 우리 모두 알다시피, 슬립 상태의 프로세스에는 CPU가 필요하지 않습니다. CPU가 모두 유휴 상태이더라도 슬립 프로세스는 실행될 수 없습니다. 따라서 슬립 프로세스 수는 CPU 부하를 측정하는 지표로 사용하기에 적합하지 않습니다. 부하 평균을 입력하는 관행은 부하 평균의 원래 의미를 직접적으로 파괴합니다. 따라서 Linux 시스템에서는 로드 평균 표시기가 무엇을 의미하는지 모르기 때문에 기본적으로 쓸모가 없습니다. 높은 로드 평균을 보면 실행 가능한 프로세스가 너무 많은지, 중단할 수 없는 절전 프로세스가 너무 많은지 알 수 없습니다. CPU가 부족한지, IO 장치에 병목 현상이 있는지 판단하는 것은 불가능합니다.
한편, 디스크 속도가 느릴 때(디스크를 많이 사용할 때) CPU 부하가 급증하는 이유를 설명할 수 있습니다. 기본적으로 CPU 부하가 높을 때 두 가지 상황이 있습니다. CPU 자체가 너무 많은 작업을 처리하고 소프트 인터럽트와 컨텍스트 전환이 너무 자주 발생하여 부하가 높아지고 디스크가 너무 느려서 중단할 수 없는 절전 모드가 너무 많이 발생합니다. CPU 부하가 높습니다.
위 내용은 느린 디스크로 인해 Linux 로드가 급증하는 이유 파악의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!