CPU yang idle menampilkan 800 MHz di /proc/cpuinfo karena optimisasi kernel 5.11+. Gunakan cpupower atau turbostat untuk pembacaan frekuensi yang akurat.
Deskripsi masalah
Saat sebuah instans dalam keadaan idle, file /proc/cpuinfo mungkin melaporkan frekuensi CPU sebesar 800 MHz untuk beberapa CPU. Nilai ini berbeda dari frekuensi yang tercantum dalam spesifikasi instans, seperti yang ditunjukkan di bawah ini.
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 2996.976
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 3192.046
cpu MHz : 800.000
cpu MHz : 3200.000
cpu MHz : 800.000
cpu MHz : 2975.717
cpu MHz : 800.000
cpu MHz : 3005.653
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
Solusi ini juga berlaku untuk kernel dan sistem operasi berikut:
Penyebab
Mulai dari Linux kernel 5.11, sebuah patch (ID commit: 3fcd6a230fa7d03bffcb831a81b40435c146c12b) ditambahkan untuk meningkatkan performa sistem dan respons CPU.
x86/cpu: Avoid cpuinfo-induced IPIing of idle CPUs
Currently, accessing /proc/cpuinfo sends IPIs to idle CPUs in order to
learn their clock frequency. Which is a bit strange, given that waking
them from idle likely significantly changes their clock frequency.
This commit therefore avoids sending /proc/cpuinfo-induced IPIs to
idle CPUs.
Saat /proc/cpuinfo diakses, fungsi rcu_is_idle_cpu memeriksa apakah CPU sedang idle. Jika iya, fungsi tersebut mengembalikan nilai min_freq, yang secara default bernilai 800 MHz. Beberapa versi kernel melaporkan nilai min_freq ini sebagai frekuensi dasar CPU.
Solusi
Frekuensi yang ditampilkan saat idle mungkin tidak sesuai dengan spesifikasi, tetapi performa aktual tidak terpengaruh karena CPU tetap mencapai frekuensi yang ditentukan saat dibebani.
Untuk pembacaan frekuensi yang akurat, gunakan alat seperti cpupower atau turbostat.
Sebagai contoh, jalankan cpupower untuk memeriksa frekuensi:
sudo cpupower frequency-info
Output menunjukkan bahwa frekuensi CPU saat ini adalah 3,20 GHz.
[ecs-user@iZ2zxxx187kyZ ~]$ sudo cpupower frequency-info
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: Cannot determine or is not supported.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 3.20 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
Beberapa tipe instans mungkin tidak mendukung frekuensi kueri ini. Lihat Ikhtisar family instans untuk mengetahui frekuensi dasar instans spesifik Anda.