Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam!
Postanowiłem utworzyć temat odnośnie oszczędzania baterii pod Linuxem, bo nigdzie nie widziałem ładnie wytłumaczonego tego w PL. Domyślnie Linux na baterii nie sprawdza się zbyt dobrze, ale są możliwości (niestety trochę poukrywane) aby to poprawić. Jak ktoś ma jakiekolwiek spostrzeżenia proszę pisać. Sukcesywnie będę aktualizował post i dodawał kolejne doświadczenia. Póki co;
1. Jeżeli nie korzystamy wyłączamy kartę graficzną i korzystamy z zintegrowanej od Intela;
-nVidia
http://wiki.debian.org/Bumblebee (z tego co wiem można zainstalować sobie samo bbswitch). inne możliwości (wydają się gorsze); https://github.com/Bumblebee-Project/Bumblebee/wiki … of-PM-methods
aby sprawdzić czy moduł działa prawidłowo można posłużyć się dmesg | grep bbswitch
jako ciekawostka; W Arch Linux i te nowsze jądra OOTB przez vgaswitcheroo potrafią "wyłączyć" nvidię, lecz nie do stanu D3Cold jak robi to bbswitch
-karty AMD (?proszę o pomoc jak tutaj to wygląda)
Większość środowisk powinno spokojnie zadowolić się kartą Intela. Już Core 2 Duo spokojnie radzi sobie z FullHD na youtube a do FullHD z dysku można użyć playera obsługującego vaapi - wtedy dekodowaniem zajmuje się GPU a procesor ma znacznie mniej roboty przez co też trochę zyskujemy, Tutaj jak to wygląda w przypadku Ivy Bridge;
http://img.pl/kFf.png -bez VAAPI
http://img.pl/lFf.png -z VAAPI
(niektóre aplikacje jak np. xbmc mogą mieć problemy z korzystaniem przez VAAPI)
2.
watch grep \"cpu MHz\" /proc/cpuinfo
Sprawdzamy czy cpufreq dynamicznie zarządza częstotliwością procesora. Pozwala to obniżyć temperaturę i oszczędzić baterię
http://wiki.debian.org/HowTo/CpuFrequencyScaling
Ustawienie ondemand utrzymuje zegary na najniższym poziomie i jeżeli potrzeba automatycznie podkręca. Mam tak zarówna na AC jak i baterii, nie zauważyłem by obniżało wydajność - z tego co widziałem Windows8 zachowuje się podobnie.
3. Instalujemy PowerTOP.
Podczas działania na baterii w zakładce "Overview" mamy szacowane użycie w Watach oraz statystyki dotyczące pojedynczych procesów/urządzeń. Możemy przeanalizować, które aplikacje/urządzenia generują najwięcej przerwań/wybudzeń(?) procesora oraz zużywają najwięcej energii. W zakładce Tunables pokazane są nasze obecne ustawienia dotyczące oszczędzania energii - najlepiej żeby wszędzie było Good. Osobiście pozbierałem różne rzeczy z internetu i zrobiłem sobie taki oto skrypcik;
http://pastebin.com/raw.php?i=A7XhDPnV
Wymaga to jednak przystosowania do swojego sprzętu (np. nie każdy np. posiada bluetooth, watchdoga czy systemd) - poza tym nie ma w nim jeszcze akcji cofających w razie podłączenia zasilania. Po użyciu skryptu, we wszystkich wpisach w PowerTOP powinno być już GOOD (klawisz r odświeża w PowerTOP). Uniwersalnie można stworzyć regułkę w /etc/udev/rules.d/10-power.rules
SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="/ścieżka/do/skryptu/powersave battery" SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="/ścieżka/do/skryptu/powersave AC"
Aby skrypt odpalał się automatycznie po odcięciu/podłączeniu zasilacza.
4. w /etc/sysctl.conf można odkomentować sobie wpis
vm.laptop_mode = 5
5.w /etc/modprobe.d/modprobe.conf ustawienia odnośnie oszczędzania energii dla zintegrowanego Intela;
options i915 i915_enable_rc6=7 i915_enable_fbc=1 lvds_downclock=1
===INNE===
cat /proc/interrupts
pozwala zobaczyć czy w przypadku kilku rdzeniowych procesorów przerwania są rozkładane na kilka rdzeni a nie tylko na jeden.
można próbować ratować się pakietem irqbalance, u mnie np. działa to dobrze Out of the box
Działania Turbo Boost nie widać w /proc/cpuinfo można podejrzeć sobie np. za pomocą i7z
zegrep CONFIG_HZ /proc/config.gz
Podczas Idle pozwala systemowi oszczędzić maksymalnie energię. To już zależy od jądra z tego co słyszałem im niższa wartość tym lepiej. Na Arch Linux jest 300, nie znalazłem opcji, aby ustawić to na dystrybucyjnym jądrze.
cat /sys/module/pcie_aspm/parameters/policy
Jeżeli default albo powersave nie musimy nic zmieniać.
Aby ustawienia zadziałały również przy wybudzaniu z uśpienia/hibernacji trzeba skonfigurować /etc/pm/* ,a w przypadku Arch Linux i systemd można napisać sobie usługę;
http://pastebin.com/raw.php?i=7QnNMhdu
z tego co pamiętam np. na Archu regułki udeva nie są wykonywane przy wybudzaniu z uśpenia/hibernacji.
Generalnie dużo zależy też od środowiska i programów których używamy. Miałem średnio 240 wybudzeń procesora, wystarczyło, że wyłączyłem syndaemon, conky, parcellite i przy samym openboxie zesztło do 80-58.
Warto również zwrócić uwagę na parkowanie głowicy dysku. U mnie tylko hdparm -B254 /dev/sda jest w stanie pohamować nadmierne parkowanie - w przeciwnym razie parkuje dosłownie co chwila. Dlatego też na baterii myślę nad jakimś skryptem, który włączałby parkowanie tylko gdy laptop jest przenoszony. Wyłącznie parkowania, patrząc na wskazania hddtemp podniosło temperaturę dysku o ~2C - mam 8GB RAMu i ze względu na agresywny cache oraz lekki system mało ten dysk ma pracy - lecz w przypadku cięższych kiedyś temperatura skoczyła do 39C włączyłem parkowanie i momentalnie się unormowała. Eksperymentowałem z wartością -B120 - dysk w pewnym momencie całkowicie mi się wyłączył. Na dłuższą metę jednak gdy tylko chciałem coś zrobić włączał się z powrotem. Jeżeli coś wybudza dysk nawet jeżeli nic nie robimy można to sprawdzić za pomocą;
echo 1 > /proc/sys/vm/block_dump
dmesg | tail
Możliwe, że dysk mógłby być wyłączony nawet np. przy przeglądaniu internetu z pomocą aplikacji typu;
https://wiki.archlinux.org/index.php/Anything-sync-daemon
lecz to zabawa na dłuższą metę i wymaga więcej RAMu.
Widnows8 usypia kartę dźwiękową nawet na zasilaczu. W Linuxie na stałe możemy to zrobić np.
/etc/modprobe,d/karta.conf a tam "options snd_hda_intel power_save=1"
Nie miałem czasu ,ale po prostych testach;
Linux - start z 90% naładowania ----> 5% naładowania (kontroler baterii w moim laptopie ładuje dopiero jak poziom naładowania <90%)
2:31h. maksymalne podświetlenie, normalne przeglądanie internetu, słuchanie muzyki, kopiowanie, dekompresja kilku plików
Windows - start z 100% naładowania ----> 5% naładowania
2:29h. maksymalne podświetlenie, normalne przeglądanie internetu, słuchanie muzyki, chwile zabawy z FL Studio
Sądzę, że mit iż Linux nie potrafi zarządzać energią można odłożyć między bajki. Mam nadzieję, że z nowymi jądrami będzie jeszcze lepiej. Przez ten czas miałem podłączony Hub USB z diodą Led i myszką bezprzewodową. Na obu systemach wszystko działało okey, lecz nie przetestowałem czy Linux potrafi wyłączyć nieużywane porty a zostawić tylko ten jeden konkretny używany. Windows w przeciwieństwie do Linuxa parkował od czasu do czasu głowicę dysku.
Sory za wszelakie błędy, nie mam informatycznego wykształcenia. Jeżeli jakieś sugestie, pytania, dopowiedzenia to zapraszam do dyskusji. Rzeczy oczywiste jak ustawienie podświetlenia, czasu po którym następuje hibernacja/uśpienie itd... pominąłem specjalnie.
Offline
To może artykuł na portal? :)
Offline
Tylko co wtedy gdy ktoś miałby swój sposób, jakąś informację, czy poradę? Tutaj łatwo można dopisać. Ale jestem otwarty i mogę zrobić jak chcecie ;p Szkoda, że w artykułach nie ma np. komentarzy.
Offline
Moim zdaniem wystarczyłby dopisek żeby wszelkie pytania, spostrzeżenia itp. umieszczać w tym wątku. Ale decyzja oczywiście należy do Ciebie.
Offline
Okey, to jest wyjście. To jutro uzupełnię ile mogę skrypcik i te porady i można przenieść do artykułów a spostrzeżenia, pytania kierować tutaj.
Offline
dominbik napisał(-a):
Szkoda, że w artykułach nie ma np. komentarzy.
Celowo nie daliśmy takiej możliwości, bo wtedy mielibyśmy de facto dwa fora na utrzymaniu. „Normalne” tutaj i drugie na portalu — pod każdym tekstem byłaby sterta postów „u mnie to nie działa, pomocy”, „przy okazji, a jak zrobić coś w tym stylu, tylko...” i tak dalej. ;)
Offline
Co do Vaapi i Intela:
libva: VA-API version 0.32.0 libva: va_getDriverName() returns 0 libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva: va_openDriver() returns 0 vainfo: VA-API version: 0.32 (libva 1.0.15) vainfo: Driver version: Intel i965 driver - 1.0.17 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointVLD VAProfileH264Baseline : VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD
Bardzo ładnie działa z XBMC, Kaffeine, Vlc etc.
IMHO jeśli nie planuje się grać w super wypasione gierki to nie warto kupować dodatkowej karty.
W miarę normalne typu HIB działają dobrze na Intelu HD, a odpada problem niepotrzebnego zużycia energii.
Warto tez powyłączać nieużywane urządzenia/porty w laptopie.
Karty AMD często da się wyłączyć w Biosie, ponoć nawet działa przełączanie na standardowych sterach. Tak piszą na forach Ubuntu.
Offline
@azhag teraz rozumiem.
@yossarian rzeczywiście sprawdziłem teraz xbmc z Ipla i działa okey. Wcześniej sprawdzałem na Polsat HD z weeb tv i chyba to było buforowanie.
Offline
Ja mam wątpliwości co do CPUFreq
1) Jeśli się nie mylę Ondemand automatycznie ustawia sobie wartości, jednak jego misją jest wydajność
Tutaj bym zastosował Conservative (czy jakoś tak), którego priorytetem jest oszczędność baterii.
Ewentualnie, zrobienie skryptu Super-Powersaver, w którym CPUFreq działałby na PowerSaver, wtedy komputer działa straaasznie wolno, ale oszczędzanie jest
2) Bardzo fajną rzeczą pod Ubuntu, ale myślę, że da się przerobić pod Debiana - jest Touchpad-Indicator, jeśli mysz jest włączona, to wyłącza touchpad, dodatkowe oszczędzanie energii
3) Możesz zrobić tak, że jeśli ktoś używa internetu po kablu, to żeby Fifirifi automatycznie wyłączyło, to też oszczędzanie energii
Fervi
Ostatnio edytowany przez fervi (2013-02-03 15:58:31)
Offline
fervi napisał(-a):
Ja mam wątpliwości co do CPUFreq
1) Jeśli się nie mylę Ondemand automatycznie ustawia sobie wartości, jednak jego misją jest wydajność
Tutaj bym zastosował Conservative (czy jakoś tak), którego priorytetem jest oszczędność baterii.
Ewentualnie, zrobienie skryptu Super-Powersaver, w którym CPUFreq działałby na PowerSaver, wtedy komputer działa jak ArnVaker dojeżdżany przez stado dzikich murzynów, ale oszczędzanie jest
Misją Ondemand nie jest wydajność. Poczytaj sobie:
http://www.mjmwired.net/kernel/Documentation/cpu-freq/governors.txt
2) Bardzo fajną rzeczą pod Ubuntu, ale myślę, że da się przerobić pod Debiana - jest Touchpad-Indicator, jeśli mysz jest włączona, to wyłącza touchpad, dodatkowe oszczędzanie energii
Nie potrzeba do tego nic przerabiać z łubuntu. Wystarczy standardowy sterownik.
3) Możesz zrobić tak, że jeśli ktoś używa internetu po kablu, to żeby Fifirifi automatycznie wyłączyło, to też oszczędzanie energii
Jak ktoś używa po kablu to wyłącza wifi w Biosie.
Offline
fervi napisał(-a):
ArnVaker dojeżdżany przez stado dzikich murzynów
Uprzedzam, że następnym razem za tekst w tym stylu dostaniesz bana.
Offline
Jak ktoś używa po kablu to wyłącza wifi w Biosie.
Ja nie wyłączam, bo zdarza mi się gdzieś jechać, zresztą w zasadzie nikt nie wyłącza Wifi, oprócz nerdów z Debjana
Nie potrzeba do tego nic przerabiać z łubuntu. Wystarczy standardowy sterownik.
Tutaj chodzi o to, że dany produkt jest w łubudubuntu, a w Debianie nie, oczywiście można takie coś napisać i o taki skrypt chodzi
@yossarian
Nie chodziło mi o to, że ondemand stawia na pełną wydajność, ale jeśli mamy porównywać tryb konserwatywny i na żądanie, wychodzi, że konserwatywny bardziej na baterię się na daje
Fervi
Ostatnio edytowany przez fervi (2013-02-03 16:21:23)
Offline
fervi napisał(-a):
Ja nie wyłączam, bo zdarza mi się gdzieś jechać, zresztą w zasadzie nikt nie wyłącza Wifi, oprócz nerdów z Debjana
A jakieś dowody na to „nikt”? Czy to, jak zwykle, twoja wybujała fantazja znowu się odzywa?
Tutaj chodzi o to, że dany produkt jest w łubudubuntu, a w Debianie nie, oczywiście można takie coś napisać i o taki skrypt chodzi
Jak ktoś ma problem ze skopiowaniem kilku regułek udeva lub prostego skryptu, to używa graficznych narzędzi:
albo (o ile nie ma IQ ferviego) po prostu:
synclient touchpadoff=1
@yossarian
Nie chodziło mi o to, że ondemand stawia na pełną wydajność, ale jeśli mamy porównywać tryb konserwatywny i na żądanie, wychodzi, że konserwatywny bardziej na baterię się na daje
Naprawdę?
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0 1 2 3
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 10.0 us.
hardware limits: 800 MHz - 2.30 GHz
available frequency steps: 2.30 GHz, 2.30 GHz, 1.80 GHz, 1.60 GHz, 1.40 GHz, 1.20 GHz, 1000 MHz, 800 MHz
available cpufreq governors: powersave, conservative, userspace, ondemand, performance
current policy: frequency should be within 800 MHz and 2.30 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 2.30 GHz:5,42%, 2.30 GHz:0,10%, 1.80 GHz:0,04%, 1.60 GHz:0,06%, 1.40 GHz:0,10%, 1.20 GHz:0,16%, 1000 MHz:0,25%, 800 MHz:94,87% (37039)
analyzing CPU 1:
…
current CPU frequency is 800 MHz.
cpufreq stats: 2.30 GHz:5,23%, 2.30 GHz:0,02%, 1.80 GHz:0,01%, 1.60 GHz:0,01%, 1.40 GHz:0,01%, 1.20 GHz:0,02%, 1000 MHz:0,04%, 800 MHz:94,66% (11369)
analyzing CPU 2:
…
current CPU frequency is 800 MHz.
cpufreq stats: 2.30 GHz:3,70%, 2.30 GHz:0,08%, 1.80 GHz:0,04%, 1.60 GHz:0,04%, 1.40 GHz:0,05%, 1.20 GHz:0,06%, 1000 MHz:0,08%, 800 MHz:95,95% (16813)
analyzing CPU 3:
…
current CPU frequency is 800 MHz.
cpufreq stats: 2.30 GHz:9,69%, 2.30 GHz:0,02%, 1.80 GHz:0,00%, 1.60 GHz:0,01%, 1.40 GHz:0,02%, 1.20 GHz:0,03%, 1000 MHz:0,04%, 800 MHz:95,19% (11017)
Jak zwykle najwięcej masz do powiedzenia. Jak zwykle są to tylko wyssane z palca teorie.
Offline
Przeczytałem z twojego źródła, wychodzi na to, że Conservative to taki OnDemand, ale z ustawieniami bardziej na oszczędzanie energii.
Po drodze zajrzałem na internet i nie wiadomo, zresztą zakładając, że ondemand jest trybem domyślnym, musi oferować wysoką moc z racji tego, że Linux jest też na zwykłych komputerach, gdzie raczej energii się nie oszczędza
Fervi
Offline
A czytać umiesz?
95% czasu na najniższych ustawieniach to „wysoka moc z racji tego, że Linux jest też na zwykłych komputerach, gdzie raczej energii się nie oszczędza”?
Jak tak ci się podobają rozwiązania zawarte w Ubuntu to co robisz (poza wypisywaniem swoich wątpliwych mądrości) na forum Debiana?
Offline
2.5 Conservative
(...)This behaviour more suitable in a battery powered environment.(...)
Według mnie to oznacza, lepiej śmigać na baterii z tym, niż ondemand
Fervi
Offline
Ondemand jest bardziej elastyczne i dlatego jest domyślnie ustawione bo również korzysta z najniższych wartości, a gdy potrzeba mocy obliczeniowej (obciążenie powyżej 95%) ma się szybki dostęp do wyższych wartości.
Zazwyczaj różnica jest niewielka bo rzadko potrzeba pełnej mocy procesora, co było widać na moich wynikach.
Ja nie spierałem się o lepszość poszczególnych ustawień tylko z twoją argumentacją że Ondemand = pełna moc.
Offline
A raczej pełna moc to Maximum Power, czy jak to tam
Ale z tego co kiedyś czytałem Ondemand używa większe osiągi ma niż Conservative
Fervi
Offline
Do proca jest cpufreqd, działa, i ustawia się tam akcję per/program.
egrep -v '#|^$' /etc/cpufreqd.conf [General] pidfile=/var/run/cpufreqd.pid poll_interval=2 verbosity=4 [/General] [Profile] name=On Demand High minfreq=40% maxfreq=100% policy=ondemand [/Profile] [Profile] name=On Demand Low minfreq=20% maxfreq=80% policy=ondemand [/Profile] [Profile] name=Performance High minfreq=100% maxfreq=100% policy=performance [/Profile] [Profile] name=Performance Low minfreq=80% maxfreq=80% policy=performance [/Profile] [Profile] name=Powersave High minfreq=70% maxfreq=70% policy=powersave [/Profile] [Profile] name=Powersave Low minfreq=30% maxfreq=65% policy=powersave [/Profile] [Rule] name=AC Rule profile=Performance High [/Rule] [Rule] name=AC Off - Low Battery battery_interval=0-30 profile=Powersave Low [/Rule] [Rule] name=AC Off - Medium Battery battery_interval=30-70 profile=On Demand Low [/Rule] [Rule] name=AC Off - High Power battery_interval=70-100 profile=On Demand High [/Rule] [Rule] name=CPU Too Hot acpi_temperature=65-78 cpu_interval=50-100 profile=Performance Low [/Rule] [Rule] name=Movie Watcher programs=xine,mplayer,smplayer,vlc,make battery_interval=0-100 acpi_temperature=0-65 profile=Performance High [/Rule]
Wygląda na straszne lamerstwo, ale chodzi prawidłowo.
Do limitów proca i pamięci dla programów?
Cgroup wymiata w tym temacie, konfiguracja jest dość banalna.
egrep -v '#|^$' /etc/cgroup/cgrules.conf *:/usr/lib64/firefox/firefox cpu,memory,net_cls users/firefox/ *:/usr/lib64/firefox/plugin-container cpu,memory,net_cls users/firefox/ *:/opt/firefox20/firefox cpu,memory,net_cls users/firefox/ *:/opt/firefox20/plugin-container cpu,memory,net_cls users/firefox/ *:/opt/bin/skype cpu,memory,net_cls voip/skype/ *:/opt/bin/skype2235 cpu,memory,net_cls voip/skype/ *:/usr/bin/pidgin cpu,memory,net_cls users/pidgin/ *:/usr/bin/akregator cpu,memory,net_cls users/akregator/ *:/usr/bin/liferea cpu,memory,net_cls users/liferea/ *:/usr/bin/vlc cpu,memory,net_cls users/vlc/ *:/usr/bin/mplayer cpu,memory,net_cls users/mplayer/ *:/usr/bin/mplayer2 cpu,memory,net_cls users/mplayer/ *:/opt/google/chrome/chrome cpu,memory,net_cls users/chrome/ *:/usr/lib64/opera/opera cpu,memory,net_cls users/opera/ *:/usr/bin/totem cpu,memory,net_cls users/totem/ *:/usr/bin/tvtime cpu,memory users/tvtime/ *:/usr/bin/kaffeine cpu,memory,net_cls users/kaffeine/ *:/bin/cat cpu,memory system/cat/ *:/usr/lib64/thunderbird/thunderbird-bin cpu,memory,net_cls users/thunderbird/ *:/usr/bin/emerge cpu,memory,blkio,net_cls system/emerge *:/usr/local/bin/fbsdkvm cpu,memory,blkio,net_cls kvm/fbsd *:/usr/bin/qemu-system-x86_64 cpu,memory,blkio,net_cls kvm/fbsd *:/usr/bin/filezilla net_cls /users/wget/ *:/usr/bin/wget net_cls /users/wget/ *:/usr/bin/axel net_cls users/axel/ *:/usr/bin/curl net_cls users/axel/
Konfiguracja limitów?
cgconfig u mnie nie chciał czytać własnego konfigu, ale da się to zrobić przy pomocy kilku poleceń basha:
http://jacekalex.sh.dug.net.pl/cgstart
Do tego demon cgred bardzo grzecznie dodaje procesy do odpowiednich grup, dowód:
cat /proc/`pidof firefox`/cgroup 13:hugetlb:/ 12:net_prio:/ 11:perf_event:/ 10:blkio:/ 9:net_cls:/users/firefox 8:freezer:/ 7:devices:/ 6:memory:/users/firefox 5:cpuacct:/ 4:cpu:/users/firefox 3:debug:/ 2:cpuset:/
Ogólnie działa, kłopot jest z cgroup.memory, na razie przy próbie przekroczenia limitu program jest ubijany natychmiast, jeszcze nie wyczaiłem, jak przerobić to na miękkie ograniczenie typu soft.
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2013-02-03 19:53:02)
Offline
Strony: 1