
듀얼 코어 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=off
CPU 취약점에 대한 완화가 비활성화된다는 점을 명심하세요 . 이러한 매개변수가 3.10.0-1160.49.1.el7.x86_64 커널에서 사용 가능한지 확실하지 않지만 커널 매개변수의 전체 목록은 다음과 같습니다.여기.