A.17. CPU 스케일링
테스트에서 다루는 내용
cpuscaling 테스트에서는 배치된 컴퓨팅 요구에 따라 클럭 속도를 늘리고 줄이는 CPU의 기능을 검사합니다.
지원되는 RHEL 버전
- RHEL 7
- RHEL 8
- RHEL 9
테스트의 기능
이 테스트는 다른 스케일링 관리자를 사용하여 CPU를 다양한 주파수에서 (CPU를 더 높거나 낮은 클럭으로 변경할 시기를 알려주는 명령 세트)와 표준화된 워크로드를 완료하는 데 걸리는 시간 내 차이를 측정합니다. 하드웨어 탐지 루틴이 /sys에서 두 개 이상의 cpu 빈도를 포함하는 다음 디렉터리를 찾을 때 테스트가 예약됩니다.
/sys/devices/system/cpu/cpuX/cpufreq
cpuscaling 테스트는 논리 CPU당 한 번 나열되지 않고 패키지당 한 번 계획됩니다. 테스트가 실행되면 /sys/devices/system/cpu/cpuX/topology/physical_package_id
를 통해 토폴로지를 확인하고 특정 패키지의 모든 논리 CPU에 대해 병렬로 테스트를 실행합니다.
테스트에서는 turbostat 명령을 먼저 실행하여 프로세서 통계를 수집합니다. 지원되는 아키텍처에서 turbostat 출력 파일에 advance 통계 열이 표시되는지 확인하지만 파일에 열이 포함되어 있지 않으면 경고를 반환합니다. 그러면 테스트에서 cstate 하위 테스트를 실행하려고 시도하고 실패하면 pstate subtest를 실행합니다.
각 CPU 패키지의 테스트 절차는 다음과 같습니다.
테스트에서는 sysfs 파일 시스템에 있는 값을 사용하여 최대 및 최소 CPU 주파수를 결정합니다. 다음 명령을 사용하여 모든 시스템에 대해 이러한 값을 확인할 수 있습니다.
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
항상 최대와 최소 두 개 이상의 주파수가 표시되지만 일부 프로세서는 CPU 속도 제어를 미세화할 수 있으며 파일에 두 개 이상의 값을 표시합니다. max와 min 사이의 추가 CPU 속도는 테스트 중에 특별히 사용되지 않지만 max 및 min frequencies 사이에서 CPU 전환으로 사용될 수 있습니다. 테스트 절차는 다음과 같습니다.
-
테스트는
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
파일에서 최대 및 최소 프로세서 속도를 기록합니다. - 사용자 공간 관리자가 선택되고 최대 빈도가 선택됩니다.
-
모든 프로세서의
/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq
값을 읽고 최대 속도를 확인할 수 있습니다. 이 값이 선택한 빈도와 일치하지 않으면 테스트에서 오류를 보고합니다. - 패키지의 모든 프로세서에는 pi를 2x10^12 자리로 계산하는 동시 작업이 제공됩니다. 피벗 계산을 위한 값은 완료하는 데 상당한 시간이 걸리기 때문에 선택되었습니다(약 30초).
- 각 CPU에 대해 pi를 계산하는 데 걸린 시간이 기록되며 패키지에 대한 평균이 계산됩니다.
- 사용자 공간 governor가 선택되고 최소 속도가 설정됩니다.
- 최소 속도는 sysfs 데이터로 확인되며 CPU가 요청된 속도가 아닌 경우 오류가 발생합니다.
- 동일한 pi 계산은 패키지의 모든 프로세서에 의해 수행되고 결과가 기록됩니다.
- 온디멘드 governor가 선택되어 있어 최소 및 최대 속도 사이에서 CPU를 제한합니다.
- 최소 속도는 sysfs 데이터로 확인되며 CPU가 요청된 속도가 아닌 경우 오류가 발생합니다.
- 동일한 pi 계산은 패키지의 모든 프로세서에 의해 수행되고 결과가 기록됩니다.
- 성능 governor가 선택되어 CPU를 항상 최대 속도로 강제 적용합니다.
- 최대 속도는 sysfs 데이터로 확인되며 CPU가 요청된 속도가 아닌 경우 오류가 발생합니다.
- 동일한 pi 계산은 모든 프로세서 프로세서와 기록된 결과에 의해 수행됩니다.
이제 세 하위 섹션에서 분석을 수행합니다. 1에서 8 단계로, 최대 및 최소 CPU 속도로 피벗 계산 시간을 얻을 수 있습니다. 두 속도로 pi를 계산하는 데 걸리는 시간의 차이점은 CPU 속도의 차이에 비례해야합니다. 예를 들어, 가상 테스트 시스템의 최대 주파수가 23-4이고, 시스템 30초를 사용하여 최대 속도로 Pi 계산을 실행하는 경우, 최소 속도로 시스템이 60초가 걸릴 것으로 예상할 수 있습니다. 다양한 이유로 완벽한 결과를 얻지 못할 수 있으므로 결과에 대해 10 % 마진 오류 ( 예상보다 느리거나 느림)를 허용합니다. 이 예에서는 최소 속도 실행이 54에서 66초 사이일 수 있고 여전히 통과 테스트(60 = 54의 90% 및 60 = 66)의 110%로 간주된다는 의미입니다.
9 단계에서 11 단계로, 온디멘트 관리자 (ondemand governor)를 사용하여 피벗 계산 시간을 테스트합니다. 이로 인해 작업이 수행될 때 시스템이 CPU 속도를 최대로 빠르게 늘릴 수 있음을 확인할 수 있습니다. 단계 11에서 얻은 계산 시간을 가져와서 5단계에서 얻은 최대 속도 계산 시간과 비교합니다. 통과 테스트에는 이 두 값이 10 %를 넘지 않습니다.
12 단계에서 12 단계로, 우리는 성능 관리자를 사용하여 피벗 계산을 테스트합니다. 이는 시스템이 항상 최대 빈도로 CPU를 유지할 수 있음을 확인합니다. 14단계에서 얻은 피벗 계산 시간을 사용하여 5단계에서 얻은 최대 속도 계산 시간과 비교합니다. 다시 말해, 통과 테스트에는 10%를 넘지 않는 두 값이 다릅니다.
cpuscaling 테스트는 /proc/cpuinfo
에 ida
CPU 플래그가 있으면 Intel 프로세서가 감지될 때 실행됩니다. 이 테스트에서는 각 패키지의 CPU 중 하나를 선택하고 하우스키핑 목적으로 CPU0을 생략하고, ondemand governor를 사용하여 최대 속도로 성능을 측정합니다. 패키지의 모든 코어가 병렬로 테스트되는 경우 이전 테스트보다 성능이 5% 이상 빨라질 것으로 예상합니다.
테스트 준비
테스트를 준비하려면 BIOS에서 CPU 빈도 스케일링이 활성화되어 있는지 확인하고 정책 가이드에 설명된 요구 사항을 충족하는 CPU가 설치되어 있는지 확인하십시오.
테스트 실행
cpuscaling 테스트는 비대화형입니다. 테스트 옆에 있는 확인란을 선택하고 Run Selected (선택 항목 실행) 버튼을 클릭하여 테스트를 수행합니다.
런타임
cpuscaling test는 2013년, 단일 CPU, 6-core/12-thread 3.3ECDHE Intel 기반 워크스테이션에서 Red Hat Enterprise Linux 6.4, AMD64 및 Intel 64를 실행하는 데 약 42분 정도 걸립니다. 코어 수가 증가하고 소켓이 더 많은 시스템은 시간이 오래 걸립니다. 필요한 지원 테스트는 전체 실행 시간에 약 1분 정도 추가됩니다.