저는 최근 2개의 "효율" 코어와 8개의 성능 코어를 갖춘 M1 pro CPU가 장착된 MacBook Pro를 받았습니다. htop/btop/top을 실행하면 프로세스 스케줄러가 항상 수요가 낮은 특정 프로세스를 효율성 코어에 할당하여 해당 코어가 항상 60%~100% 용량으로 실행되기 때문에 로드 평균이 2보다 큽니다.
2개의 효율적인 코어가 이미 여러 코어에 의해 성능이 저하된 로드 평균 측정항목의 유용성을 감소시키는 것 같습니다. 먼 옛날에는 단일 코어 CPU를 사용했을 때 로드 평균이 직관적으로 이해되었습니다. 하지만 이제 시스템에는 2가지 유형의 CPU 코어가 있으며, 최신 전화기에는 효율성, 성능 및 단일 초고성능 코어라는 3가지 유형의 코어가 있습니다.
이러한 새로운 부하 평균은 어떻게 계산해야 합니까? 일반적인 시스템 로드 측정항목을 재정의하려는 노력이 진행 중입니까?
효율성 코어는 우선 순위가 낮은 프로세스를 실행하도록 설계되었으므로 이러한 프로세스를 기본 측정 항목에서 제외하는 것이 합리적일까요? 나머지 부하 값은 비효율적인 CPU에 할당됩니다.
예를 들어 로드 평균은 3.4입니다. 효율성 코어에서 2를 빼면 1.4입니다. 그런 다음 성능 코어 수로 나누면 1.4 / 8 = 0.175입니다.
답변1
먼저 "로드"가 실제로 무엇인지에 대해 이야기해야 합니다. 이는 실행 중인 프로세스 수에 현재 소위 "논스톱 절전" 상태, 즉 대부분 주변 IO의 데이터를 기다리는 프로세스 수를 더한 것입니다.
즉, 16개의 코어 머신이 있고(개별 코어가 "강하거나 약한" 것과 상관없이) 100개의 프로세스를 실행하면 각 프로세스에 IO가 과도하게 로드됩니다(예: 메모리 매핑된 파일의 페이지를 망치는 방식으로, 또는 전환 요구에 따라 로드하여 100의 로드를 얻을 수 있습니다. 이는 부하 평균이아니요주로 CPU 코어 사용량에 따라 다릅니다. 현재 부하 상황을 측정하려고 시도합니다.체계예.
서로 다른 시스템의 부하를 비교하는 것은 그다지 유용하지 않습니다. 로드가 원활하다면(로드가평균엄밀히 말하면 잘못되었습니다. 전기 공학 배경이 있는 경우에는 다음과 같습니다.지수가중이동평균, 즉 간단한 단극 IIR 필터의 출력)이 감소하고 작업을 따라잡는 중이며, 출력이 증가하면 더 많은 작업을 수행하고 있는 것입니다. 그러나 두 개의 서로 다른 시스템을 서로 옆에 배치하고 로드가 확실히 비교할 수 있을 것이라고 기대할 수는 없습니다. 따라서 서로 다른 CPU 아키텍처에서 보다 일반적으로 유용하도록 로드를 재정의하는 것은 논란의 여지가 있습니다. 그것은 일이 진행되는 방식이 아닙니다.
2개의 효율성 코어가 로드 평균 측정항목의 유용성을 감소시키는 것 같습니다.
이제 귀하가 요청한 질문은 "로드"가 단순히 "CPU 로드"(즉, 특정 순간에 유휴 상태가 아닌 CPU 수)라고 가정한다는 점을 알고 있으므로 Linux "로드" 측정 기준을 논의하는 대신 이 질문을 해결해야 합니다.
과거에는 CPU 활용도가 거의 쓸모가 없었습니다. 2000년경에 CPU 코어가 주파수를 동적으로 조정했기 때문에 AMD의 PowerNow!는 소비자 컴퓨터(노트북)를 휩쓸었습니다. 50%의 시간 동안 1.2GHz로 실행되는 코어는 3.9GHz로 실행되는 코어보다 가치가 없으며 두 코어 모두 동시에 동일한 시스템에 존재하며 장기적으로 계산하는 데 걸리는 시간에 따라 주파수를 변경할 수 있습니다. 평균. 이는 CPU 사용률이 임계값을 초과하고 충분한 작업이 준비된 경우 발생합니다. 그렇죠, 아니죠. 솔직히 말해서 "CPU 사용률"은 "90% 미만이면 내 시스템이 확실히 더 많은 CPU 작업을 수행할 수 있지만 그 외에는 작업에 따라 다르다고 말하기는 어렵습니다"에 지나지 않는다고 생각했습니다.
그래서 솔직히 말해서 지난 20년 정도 동안 그것은 지나치게 유용한 척도가 아니었습니다.
먼 옛날에는 단일 코어 CPU를 사용했을 때 로드 평균이 직관적으로 이해되었습니다.
주파수 스케일링은 그 시점에서 이미 문제였습니다. "CPU가 스토리지 또는 네트워크를 기다리는 시간의 90%"는 활용도가 낮은 것처럼 보이지만 실제로는 "내가 제공하려는 워크로드에 대해 100% 포화 상태입니다."를 의미합니다. ". 하나 있다매우거기에는 직관성이 제한되어 있습니다. 최근 1990년대 초반에는 CPU와 RAM, 주변 버스가 분리되어 CPU가 유휴 상태가 아닌 시간을 측정하는 것이 설명 측면에서 다소 모호합니다.체계짐. 이것이 제공하는 것은 컴퓨터의 많은 제한된 리소스 중 하나가 고갈되었는지 여부에 대한 정보이며 컴퓨터의 CPU 사용률은 0.1이므로 해당 비율은 더 많은 작업을 수행할 수 있는 실제 능력에 정비례하지 않습니다. 코어) 아마도 높은 클럭 주파수에서는 많이 실행되지 않을 것이므로 부하가 높아지면 컴퓨터가 갑자기 더 강력해집니다. 컴퓨터에 훨씬 더 복잡하고 예측할 수 없는 이기종 CPU 코어가 있는 경우에도 동일한 일이 발생합니다. 이는 새로운 발명이 아닙니다. 하이퍼스레딩은 약 15년 전에 소비자 컴퓨터에 도입되었으며 NUMA 컴퓨터는 오래 전에 이미 나타났습니다.
이러한 새로운 부하 평균은 어떻게 계산해야 합니까?
솔직히 말해서 전혀 그렇지 않습니다. 현재 지표를 유지하세요! 현재 로드 메트릭의 목적은 하나입니다. 동일한 시스템의 워크로드를 비교 가능하게 만드는 것입니다. 그럼에도 불구하고 합리적인 크로스 플랫폼 비교를 하기는 어렵습니다.
일반적인 시스템 로드 측정항목을 재정의하려는 노력이 진행 중입니까?
시스템 활용도에 정말로 관심을 갖고 작업 부하에 맞게 시스템 크기를 올바르게 조정하는 사람들(노트북처럼 보유하고 있는 시스템이 예상 작업을 충분히 빠르게 수행할 수 있는지 여부뿐만 아니라), 시스템 활용도를 낮추는 것과 같은 방식으로 이 작업을 수행합니다. 에워크로드에 구애받지 않음단일 숫자: 특정 작업 부하(또는 필요한 작업 부하 범위)에 대한 병목 현상이 무엇인지 확인한 다음 필요한 추가 리소스를 할당해야 합니다. "CPU 시간"은 이러한 리소스 중 하나일 뿐입니다.