CPU 확장을 우회하여 CPU를 최대 속도로 실행하려면 어떻게 해야 합니까?

CPU 확장을 우회하여 CPU를 최대 속도로 실행하려면 어떻게 해야 합니까?

듀얼 코어 CPU(Intel(R) Core(TM)2 Duo CPU)가 장착된 다소 오래된 노트북(Lenove T61)에서 CentOS 7(7.9.2009)(커널 3.10.0-1160.49.1.el7.x86_64)을 실행하고 있습니다. T7300 @ 2.00GHz). CPU 확장용 드라이버는 acpi-cpufreq이며,성능주지사, CPU가 에 나열된 최대 CPU 속도로 실행되도록 /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq하고 다음을 수행하여 이를 관찰할 수 있습니다.

$ grep -i mhz /proc/cpuinfo 
cpu MHz     : 2001.000
cpu MHz     : 2001.000

이 속도에서는 안정적입니다. 다음을 수행하여 이를 확인할 수 있습니다.

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
2001000
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq 
2001000

타이밍을 위해 CPU 클록 주기를 계산하는 실시간 프로그램을 일정한 빈도로 실행하려고 합니다. 기본 CentOS 커널(3.10.0)에서 지원되지 않는 하드웨어를 지원하기 위해 사용자 정의 커널(5.10.83-rt58)을 컴파일했습니다. 일반적으로 CPU 스케일링으로 인해 클럭 주파수가 튀는 현상이 발생하는데, 에 모든 값을 설정하면 안정적인 주파수를 얻을 수 있다는 것을 알았 /sys/devices/system/cpu/cpu*/cpuidle/state*/disable습니다 1. 빈도를 확인할 때:

$ grep -i mhz /proc/cpuinfo 
cpu MHz     : 1995.106
cpu MHz     : 1995.106

3.10.0 커널에서 볼 수 있듯이 2001MHz에 미치지 못합니다. 다음 명령은 이를 확인합니다.

$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1995106

그러나 출력은 다음과 같습니다.

$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
2001000

은 다르다. 내 질문은 내 CPU가 최대 주파수(2001MHz)가 아닌 ~6MHz에서 실행되는 이유를 아는 사람이 있습니까? 커널 3.10과 5.10 사이에서 CPU 스케일링에 급격한 변화가 있었습니까?

답변1

커널 매개변수를 추가하면 nohz_full=1 rcu_nocbs=1 mitigations=off내 코어 중 하나가 커널 5.10.83-rt58에서 2001MHz로 실행될 수 있다는 것을 알았습니다. 추가하면 mitigations=offCPU 취약점에 대한 완화가 비활성화된다는 점을 명심하세요 . 이러한 매개변수가 3.10.0-1160.49.1.el7.x86_64 커널에서 사용 가능한지 확실하지 않지만 커널 매개변수의 전체 목록은 다음과 같습니다.여기.

관련 정보