Saya menggunakan mesin Debian 8 amd64 untuk benchmarking. Selama percobaan, saya ingin CPU beroperasi pada frekuensi yang tetap (lebih disukai maksimum yang dimungkinkan). Ini akan mengesampingkan kecepatan jam CPU sebagai sumber variasi dalam hasil.
Setelah membaca, tampaknya hal yang benar untuk dilakukan adalah mengubah pengatur CPU performance
, yang dijelaskan di sini dalam dokumentasi kernel Linux :
"Kinerja" gubernur CPUfreq menetapkan CPU secara statis ke frekuensi tertinggi dalam batas scaling_min_freq dan scaling_max_freq.
Sayangnya, rincian lebih lanjut tentang scaling_min_freq
dan scaling_max_freq
tidak disediakan. Semoga itu tidak menjadi masalah, karena frekuensi CPU yang digunakan adalah nilai maksimum dari interval.
Jadi saya telah mengaktifkan gubernur ini menggunakan cpufreq-set:
$ cat / sys / devices / system / cpu / cpu * / cpufreq / scaling_governor kinerja kinerja kinerja kinerja
Dan untuk ukuran yang baik, saya juga menonaktifkan mode turbo boost di bios:
$ cat / sys / devices / system / cpu / intel_pstate / no_turbo 1
Berdasarkan uraian kinerja gubernur di atas, saya berharap tidak ada fluktuasi dalam kecepatan clock CPU. Namun jika saya berulang kali berlari cpufreq-info
, saya melihat kecepatan jam berfluktuasi:
$ cpufreq-info | grep 'CPU fr saat ini' frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 3,99 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 4,00 GHz. $ cpufreq-info | grep 'CPU fr saat ini' frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 3,96 GHz. $ cpufreq-info | grep 'CPU fr saat ini' frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 3,94 GHz. $ cpufreq-info | grep 'CPU fr saat ini' frekuensi CPU saat ini adalah 4,01 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 4,00 GHz. frekuensi CPU saat ini adalah 3,98 GHz.
Apakah fluktuasi ini disebabkan oleh perangkat keras, BIOS, kernel, atau faktor lain? Apakah ada cara untuk mengatur frekuensi CPU sedemikian rupa sehingga tidak berfluktuasi sama sekali?
sumber
Jawaban:
Setelah beberapa percobaan, saya pikir saya bisa menjawab pertanyaan saya sendiri.
Seperti yang disebutkan dalam utas ini , pada perangkat keras Intel tertentu, ada dua cara untuk mengelola frekuensi CPU:
Ketika pstate digunakan, BIOS memiliki beberapa pendapat atas kecepatan clock, dan tampaknya ini adalah sumber fluktuasi.
Anda dapat memaksa pstate off dengan menambahkan
intel_pstate=disable
argumen kernel (sunting/etc/default/grub
dan tambahkan argumen keGRUB_CMDLINE_LINUX_DEFAULT
. Akhirnya jalankansudo update-grub
).Setelah melakukan ini, output dari
cpufreq-info
terlihat jauh berbeda, dan saya juga melihat bahwa satu set gubernur CPU yang berbeda tersedia (misalnyaondemand
sekarang tersedia).Yang paling penting, setelah mengatur gubernur ke
performance
, kecepatan jam sekarang diperbaiki (dalam kasus saya ke 4.00GHz).Anda dapat melihat
/sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
untuk menentukan apakah pstate atau ACPI digunakan untuk menskalakan CPU. File-file ini dapat mengasumsikan nilaiacpi-cpufreq
atauintel_pstate
.sumber
[1] https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
sumber
intel_pstate=disable
ke kernel? Apakah saya menggunakan `" mode lama "ketika saya melakukan itu?Intel Architectures Software Developer's Manual.
2) ya. PS. Anda mungkin juga ingin bermain denganx86_energy_perf_policy
saya membaca utas ini karena saya terlalu mencari untuk menetapkan frekuensi tetap ke cpu saya karena kipas tidak bekerja lagi (tentu saja hal-hal itu terjadi ketika Anda di luar negeri di pulau yang hilang untuk rekreasi menyelam!) jadi maksud saya lebih untuk mengatur frekuensi terendah (800Mhz) ..saya akhirnya berhasil membuat perubahan ke scaling_max_freq di / sys / devices / system / cpu / cpu * / cpufreq / untuk setiap cpu dari konfigurasi & sekarang tidak apa-apa frekuensinya seharusnya berpindah dari 800Mhz untuk .... 800Mhz. Ini bekerja dan memecahkan masalah overheating yang saya punya pengalaman .. (frekuensinya sekarang 799Mhz dan tidak bergerak yang memungkinkan cpu tetap sekitar 50 ° C!)
PS: saya juga menonaktifkan mode turbo (3,1Ghz)
sumber