Nie można użyć regulatora cpufreq „przestrzeni użytkownika” i ustawić częstotliwości procesora


22

Próbuję zmienić częstotliwość procesora na moim laptopie (z systemem Linux), ale bez powodzenia.
Oto kilka szczegółów:

# 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 cpufreq@vger.kernel.org, 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

Początkowo miałem wbudowany regulator jądra w jądro, ale potem również próbowałem zbudować go jako moduł (z tymi samymi wynikami); został załadowany podczas uruchamiania powyższych poleceń (i nie mogłem znaleźć żadnych komunikatów systemowych podczas ładowania):

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

A oto polecenia, które próbowałem zmienić częstotliwość:

# 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?

Jakieś pomysły?


@don_crissti dzięki, heh, próbowałem echo 1 > /sys/devices/system/cpu/intel_pstate/no_turboi dostałem natychmiastową panikę jądra: p Potem uruchomiłem się ponownie intel_pstate=disablei teraz używa acpi-cpufreq, ale nadal nie mogę ustawić częstotliwości (chociaż nie otrzymuję już komunikatów o błędach). Przy okazji, dlaczego nie zamienić komentarza w odpowiedź?
aditsu

@don_crissti Nie wiedziałem o cpupower; ma nieco nieprzyjemną składnię, ale wydaje się, że działa lepiej niż cpufreq. Jestem teraz w stanie ustawić częstotliwość :) Bardzo dziękuję i pamiętaj, aby opublikować odpowiedź (chyba że naprawdę nie chcesz punktów).
aditsu

Odpowiedzi:


41

Wynika to z faktu, że Twój system używa nowego sterownika o nazwie intel_pstate. Podczas korzystania z tego sterownika dostępne są tylko dwa regulatory: powersavei performance.
Regulator userspacejest dostępny tylko ze starszym acpi-cpufreqsterownikiem (który zostanie użyty automatycznie, jeśli wyłączysz go intel_pstatepodczas uruchamiania; następnie ustaw regulator / częstotliwość za pomocą cpupower):

  • wyłącz bieżący sterownik: dodaj intel_pstate=disabledo linii rozruchowej jądra
  • uruchom, a następnie załaduj userspacemoduł:modprobe cpufreq_userspace
  • ustawić gubernatora: cpupower frequency-set --governor userspace
  • ustaw częstotliwość: cpupower --cpu all frequency-set --freq 800MHz

Dzięki, btw, zestaw częstotliwości wydaje się robić to samo bez--cpu all
aditsu

3
Korzystanie ze starszego sterownika musi mieć pewne wady. Czym oni są?
kontextify

2
@kontextify Więcej zadowolonych użytkowników, mniej skłonnych do dobrowolnego służenia jako szczury laboratoryjne w celu przetestowania nowego wydania.
Mefisto

0

Odpowiedź jest na twoje pytanie:

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

To i jądro muszą zostać skompilowane z włączonym gubernatorem przestrzeni użytkownika.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.