Tidak dapat menggunakan gubernur cpufreq “userspace” dan mengatur frekuensi cpu

22

Saya mencoba mengubah frekuensi cpu di laptop saya (menjalankan Linux), dan tidak berhasil.
Berikut ini beberapa detailnya:

# uname -a
Linux yoga 3.12.21-gentoo-r1 #4 SMP Thu Jul 10 17:32:31 HKT 2014 x86_64 Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz GenuineIntel GNU/Linux

# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
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: 0.97 ms.
  hardware limits: 800 MHz - 2.60 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 2.60 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.42 GHz (asserted by call to hardware).
(similar information for cpus 1, 2 and 3)

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave

Saya awalnya memiliki gubernur userspace dibangun ke dalam kernel, tetapi kemudian saya juga mencoba membangunnya sebagai modul (dengan hasil yang sama); itu dimuat saat menjalankan perintah di atas (dan saya tidak dapat menemukan pesan sistem saat memuatnya):

# lsmod
Module                  Size  Used by
cpufreq_userspace       1525  0
(some other modules)

Dan berikut adalah perintah yang saya coba untuk mengubah frekuensi:

# cpufreq-set -f 800MHz
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

# cpufreq-set -g userspace  
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

Ada ide?

aditsu
sumber
@don_crissti terima kasih, heh, saya mencoba echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbodan mendapat panik kernel instan: p Lalu saya reboot dengan intel_pstate=disabledan sekarang menggunakan acpi-cpufreq, tapi saya masih tidak bisa mengatur frekuensinya (walaupun saya tidak mendapatkan pesan kesalahan lagi). Btw, mengapa tidak membuat komentar Anda sebagai jawaban?
aditsu
@don_crissti Saya tidak tahu tentang cpupower; ini memiliki sintaks yang agak jahat, tetapi tampaknya bekerja lebih baik daripada cpufreq. Saya dapat mengatur frekuensi sekarang :) Terima kasih banyak dan ingat untuk mengirim jawaban (kecuali jika Anda benar-benar tidak menginginkan poin).
aditsu

Jawaban:

41

Ini karena sistem Anda menggunakan driver baru yang disebut intel_pstate. Hanya ada dua gubernur yang tersedia saat menggunakan driver ini: powersavedan performance.
The userspaceGubernur hanya tersedia dengan lebih tua acpi-cpufreqdriver (yang akan secara otomatis digunakan jika Anda menonaktifkan intel_pstatepada saat boot, Anda kemudian mengatur gubernur / frekuensi cpupower):

  • nonaktifkan driver saat ini: tambahkan intel_pstate=disableke baris boot kernel Anda
  • boot, lalu muat userspacemodul:modprobe cpufreq_userspace
  • atur gubernur: cpupower frequency-set --governor userspace
  • atur frekuensinya: cpupower --cpu all frequency-set --freq 800MHz
don_crissti
sumber
Terima kasih, btw, set frekuensi tampaknya melakukan hal yang sama tanpa--cpu all
aditsu
3
Pasti ada beberapa kelemahan menggunakan driver yang lebih lama. Apakah mereka?
kontextify
2
@kontextify Lebih banyak pengguna yang senang, lebih sedikit cenderung untuk secara sukarela bertindak sebagai tikus percobaan untuk menguji rilis baru.
Mephisto
0

Jawabannya ada dalam pertanyaan Anda:

for core in $(seq 0 "$(($(getconf _NPROCESSORS_ONLN) - 1))"); do
echo {performance|powersave} >/sys/devices/system/cpu/cpu$core/cpufreq/scaling_governor ;
done

Itu dan kernel harus dikompilasi dengan gubernur userspace diaktifkan.

Jaun Mauro Fernandez
sumber