Zarządzanie częstotliwością procesora w laptopie
: 18 sty 2007, 18:49
Poniższe How-To ma za zadanie ułatwić zarządzanie częstotliwością procesora na komputerach przenośnych. Domyślnie Ubuntu nie wykorzystuje maximum prędkości procesora, nawet podczas podłączenia do zasilania. Wiem, że problem był już poruszany, ale postanowiłem nieco bardziej szczegółowo opisać problem. Proponowane przeze mnie rozwiązanie oparte jest na wiadomościach zebranych na tym forum, forum ubuntuforums.org, wiadmościach znalezionych w sieci i odrobinie własnej inwencji Jest to moje pierwsze How-To więc proszę o wyrozumiałość Mam nadzieję, że komuś okaże się przydatne. Aha, jeżeli ktoś zdecyduje się skorzystać z podanych tu rozwiązań, robi to na własną odpowiedzialność Jeżeli komuś wybuchnie laptop, to ja umywam ręce
Do rzeczy.
Rozwiązanie testowane było na:
Laptop: HP Compaq nx9105 z procesorem Mobile AMD Sempron 2800+
System: Ubuntu 6.10 Edgy Eft
Kernel: dystrybucyjny 2.6.17-10-generic
Wymagane pakiety: gnome-applets laptop-mode-tools acpi-support
Powyższe paczki powinny znajdować się w systemie po standardowej instalacji, jeżeli jednak ich nie posiadamy to oczywiście:
Na początek zajmiemy się modyfikacją pliku konfiguracyjnego /etc/laptop-mode/laptop-mode.conf , który informuje skrypt /etc/init.d/laptop-mode w jaki sposób zarządzać energią, procesorem itp. Możemy tam znaleźć mnogość opcji ale my zajmiemy się tymi dotyczącymi procesora.
Wcześniej jednak musimy się dowiedzieć jakie częstotliwości i zarządców obsługuje nasz procesor.
Aby sprawdzić obsługiwane częstotliwości wpisujemy w terminalu:
W moim przypadku wynik był taki:
Aby sprawdzić obsługiwanych zarządców:
U mnie dało to:
Oczywiście podane częstotliwości i zarządcy mogą się różnić w zależności od posiadanego procesora.
Teraz możemy przejść do modyfikacji pliku laptop-mode.conf korzystając z wartości podanych przez wypisane wyżej polecenia:
Proponowane przeze mnie modyfikacje (nie będę się rozpisywał czemu one służą, gdyż w pliku każda opcja jest opisana):
jeżeli wartośc jest "0" zmieniamy na "1"
wartość "0" zmieniamy na "1"
wartość "0" zmieniamy na "1"
Poniższe opcje modyfikujemy wstawiając wartości podane nam wcześniej przez polecenia:
U mnie wygląda to tak:
I to w zasadzie wszystko w tym pliku. Ja dokonałem jeszcze kilka modyfikacji ale nie są one wymagane:
np.
Teraz sprawiamy by skrypt laptop-mode urochamiał się podczas bootowania systemu:
To jednak nie wszystko. Laptop-mode nie będzie działało jeżeli nie powiadomimy o tym ACPI.
i z "false" zmieniamy na "true":
Teraz uruchamiamy ponownie acpi-support:
Sprawdzamy czy laptop-mode działa:
Jeżeli dostajemy wartość inną niż "0" tzn. że jest uruchomione.
Jeżeli nie, proponuje po prostu zrestartować system.
Ok. Teraz aby móc monitorować na bieżąco i ręcznie ustawiać częstotliwość procka za pomocą apletu gnome wpisujemy:
i dajemy odpowiedź "tak".
Potem już tylko:
prawy przycisk myszy na penelu->dodaj do panelu->monitor częstotliwości procesora
W preferencjach ustawiamy: wyświetlanie menu->zarządcy i częstotliwości
I w zasadzie to wszystko. Teraz przy podłączeniu do zasilania, GNOME pracuje, w moim przypadku, przy prędkości procka 1,6 GHz (max.prędkość) a przy korzystaniu z baterii 800 MHz. Oczywiście, automatycznie się przełączając, przy podłączaniu/odłączaniu zasilania.
Jest jeszcze jedna sprawa, która nie dawała mi spokoju. Przy takiej konfiguracji laptop-mode, podczas uruchomienia GNOME, procesor ustawiany jest na połowę "mocy" (800MHZ-nawet przy podłączonym zasilaniu). Oczywiście można to zmienić za pomocą apletu gnome, ale drażniło mnie to, że musiałem to robić przy każdym restarcie systemu. Aby to ominąć możemy stworzyć "mini-skrypt", który będzie ustawiał procesor na max prędkości, w końcowej fazie bootowania systemu.
o zawartości:
zapisujemy.
Nadajemy mu prawa do wykonywania:
i sprawiamy by uruchamiał się przy bootowaniu systemu:
Teraz przy starcie GNOME procek pracuje z max. prędkością, przy podłączonym zasilaniu. Możemy ją obniżyć, gdy zechcemy, korzystając z apletu gnome.
I to chyba wszystko. Może komuś się to przyda. Oczywiście jestem otwarty na wszelkie uwagi i poprawki.
Pozdrawiam.
Do rzeczy.
Rozwiązanie testowane było na:
Laptop: HP Compaq nx9105 z procesorem Mobile AMD Sempron 2800+
System: Ubuntu 6.10 Edgy Eft
Kernel: dystrybucyjny 2.6.17-10-generic
Wymagane pakiety: gnome-applets laptop-mode-tools acpi-support
Powyższe paczki powinny znajdować się w systemie po standardowej instalacji, jeżeli jednak ich nie posiadamy to oczywiście:
Kod: Zaznacz cały
sudo apt-get install gnome-applets laptop-mode-tools acpi-support
Wcześniej jednak musimy się dowiedzieć jakie częstotliwości i zarządców obsługuje nasz procesor.
Aby sprawdzić obsługiwane częstotliwości wpisujemy w terminalu:
Kod: Zaznacz cały
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
Kod: Zaznacz cały
1600000 800000
Kod: Zaznacz cały
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
Kod: Zaznacz cały
powersave userspace ondemand conservative performance
Teraz możemy przejść do modyfikacji pliku laptop-mode.conf korzystając z wartości podanych przez wypisane wyżej polecenia:
Kod: Zaznacz cały
sudo gedit /etc/laptop-mode/laptop-mode.conf
Kod: Zaznacz cały
# Enable laptop mode when on battery power.
ENABLE_LAPTOP_MODE_ON_BATTERY=1
Kod: Zaznacz cały
# Enable laptop mode when on AC power.
ENABLE_LAPTOP_MODE_ON_AC=1
Kod: Zaznacz cały
# Should laptop mode tools control the maximum CPU frequency?
CONTROL_CPU_FREQUENCY=1
Poniższe opcje modyfikujemy wstawiając wartości podane nam wcześniej przez polecenia:
Kod: Zaznacz cały
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
Kod: Zaznacz cały
BATT_CPU_MAXFREQ=800000
BATT_CPU_MINFREQ=800000
BATT_CPU_GOVERNOR=powersave
LM_AC_CPU_MAXFREQ=1600000
LM_AC_CPU_MINFREQ=800000
LM_AC_CPU_GOVERNOR=userspace
NOLM_AC_CPU_MAXFREQ=1600000
NOLM_AC_CPU_MINFREQ=1600000
NOLM_AC_CPU_GOVERNOR=performance
np.
Kod: Zaznacz cały
CONTROL_READAHEAD=0
CONTROL_HD_IDLE_TIMEOUT=0
Teraz sprawiamy by skrypt laptop-mode urochamiał się podczas bootowania systemu:
Kod: Zaznacz cały
sudo update-rc.d laptop-mode multiuser
Kod: Zaznacz cały
sudo gedit /etc/default/acpi-support
Kod: Zaznacz cały
ENABLE_LAPTOP_MODE=true
Kod: Zaznacz cały
sudo /etc/init.d/acpi-support stop
sudo /etc/init.d/acpi-support start
Kod: Zaznacz cały
cat /proc/sys/vm/laptop_mode
Jeżeli nie, proponuje po prostu zrestartować system.
Ok. Teraz aby móc monitorować na bieżąco i ręcznie ustawiać częstotliwość procka za pomocą apletu gnome wpisujemy:
Kod: Zaznacz cały
sudo dpkg-reconfigure gnome-applets
Potem już tylko:
prawy przycisk myszy na penelu->dodaj do panelu->monitor częstotliwości procesora
W preferencjach ustawiamy: wyświetlanie menu->zarządcy i częstotliwości
I w zasadzie to wszystko. Teraz przy podłączeniu do zasilania, GNOME pracuje, w moim przypadku, przy prędkości procka 1,6 GHz (max.prędkość) a przy korzystaniu z baterii 800 MHz. Oczywiście, automatycznie się przełączając, przy podłączaniu/odłączaniu zasilania.
Jest jeszcze jedna sprawa, która nie dawała mi spokoju. Przy takiej konfiguracji laptop-mode, podczas uruchomienia GNOME, procesor ustawiany jest na połowę "mocy" (800MHZ-nawet przy podłączonym zasilaniu). Oczywiście można to zmienić za pomocą apletu gnome, ale drażniło mnie to, że musiałem to robić przy każdym restarcie systemu. Aby to ominąć możemy stworzyć "mini-skrypt", który będzie ustawiał procesor na max prędkości, w końcowej fazie bootowania systemu.
Kod: Zaznacz cały
sudo gedit /etc/init.d/cpufreq.sh
Kod: Zaznacz cały
#!/bin/sh
/usr/bin/cpufreq-selector -g performance $@
Nadajemy mu prawa do wykonywania:
Kod: Zaznacz cały
sudo chmod +x /etc/init.d/cpufreq.sh
Kod: Zaznacz cały
sudo update-rc.d cpufreq.sh start 90 2 3 4 5 . stop 90 0 1 6 .
I to chyba wszystko. Może komuś się to przyda. Oczywiście jestem otwarty na wszelkie uwagi i poprawki.
Pozdrawiam.