3.4. 커널 명령줄 옵션을 사용하여 C-state 비활성화
호스트의 애플리케이션 대기 시간이 C-state의 영향을 받는지 여부를 테스트하려면 커널 명령줄 옵션에서 C-state(사용 상태)를 일시적으로 비활성화합니다.
processor.max_cstate 및 intel_idle.max_cstate 커널 명령줄 매개변수는 사용할 수 있는 최대 C-state CPU 코어를 구성합니다. 예를 들어 매개 변수를 1 로 설정하면 CPU가 C1 미만의 C-state를 요청하지 않습니다.
특정 상태를 하드 코딩하지 않으려면 더 동적 솔루션을 사용하는 것이 좋습니다. 사용자 정의 TuneD 프로필을 사용하여 C 상태 비활성화를 참조하십시오.
사전 요구 사항
-
tuned서비스는 C-state 설정을 업데이트하지 않도록 실행 중이거나 구성되지 않았습니다.
프로세스
시스템이 사용하는 유휴 드라이버를 표시합니다.
# cat /sys/devices/system/cpu/cpuidle/current_driver intel_idle드라이버에 대한 자세한 내용은
kernel-doc패키지에서 제공하는/usr/share/doc/kernel-doc- <version> /Documentation/admin-guide/pm/cpuidle.rst파일을 참조하십시오.호스트가
intel_idle드라이버를 사용하는 경우intel_idle.max_cstate커널 매개변수를 설정하여 CPU 코어에서 사용할 수 있는 가장 높은 C-state를 정의합니다.# grubby --update-kernel=ALL --args="intel_idle.max_cstate=0"intel_idle.max_cstate=0을 설정하면intel_idle드라이버가 비활성화됩니다. 결과적으로 커널은 EFI 펌웨어에 설정된 C-state 값을 사용하는acpi_idle드라이버를 사용합니다. 이러한 이유로 이러한 C 상태 설정을 재정의하도록processor.max_cstate도 설정합니다.CPU 벤더와 관계없이 모든 호스트에서 CPU 코어에서 사용할 수 있는 가장 높은 C-state를 설정합니다.
# grubby --update-kernel=ALL --args="processor.max_cstate=0"중요intel_idle.max_cstate=0외에도processor.max_cstate=0을 설정하면acpi_idle드라이버가processor.max_cstate의 값을 재정의하고1로 설정합니다. 결과적으로processor.max_cstate=0 intel_idle.max_cstate=0을 사용하면 커널이 C0이 아닌 C1이 가장 높은 C-state가 됩니다.변경 사항을 적용하려면 호스트를 다시 시작하십시오.
# reboot
검증
최대 C-state를 표시합니다.
# cat /sys/module/processor/parameters/max_cstate 1호스트가
intel_idle드라이버를 사용하는 경우 최대 C-state를 표시합니다.# cat /sys/module/intel_idle/parameters/max_cstate 0