Co łączy drukarkę Mera D-100M z lat 80-tych XX-wieku i nowoczesnego laptopa z 2020 roku?
O tym też dzisiaj będzie, wpis jednak chciałbym rozpocząć od tego obrazka:
Można? Można.
Teoretycznie notebookcheck.net testował kiedyś urządzenie, które w ich teście osiągnęło ok. 59h. Piszę teoretycznie, gdyż w praktyce (biorąc pod uwagę możliwości energetyczne obecnych systemów) takie wyniki w praktyce można chyba uzyskać tylko:
- podczas pracy z zewnętrznym monitorem (ekran komputera jest cały czas wyłączony)
- przez chwilę po odłączeniu ładowarki (stąd pochodzi mój zrzut ekranu)
Czy tak czy inaczej, cały czas próbuję wycisnąć co nieco z Hyperbooka L14 pod Ubuntu 21.04. System obecnie wskazuje mi na to, że bateria trochę się „rozruszała” i zamiast deklarowanych 73.9 Wh ma 74.6 Wh. Zrobiłem kilka ustawień:
Zmniejszenie ilości zapisów na dysku
System był instalowany z szyfrowaniem (patrz artykuł) i po instalacji miał plik wymiany, który wyłączyłem:
sudo swapoff -a
sudo rm /swapfile
i usunąłem wpis z pliku /etc/fstab
Następnie wyłączyłem modyfikację czasów dostępu do plików i katalogów, i włączyłem TRIM - w pliku /etc/fstab dodałem opcje
noatime,nodiratime,discard
do głównego systemu plików.
Katalogi /tmp i /var/tmp też przeniosłem do RAM - patrz artykuł (na każdy wystarcza spokojnie 512 MB)
Kolejną opcją była deaktywacja serwera drukowania i dziennika systemowego:
sudo systemctl disable rsyslog
sudo systemctl disable cups
i dodanie
Storage=none
do pliku /etc/systemd/journald.conf
Możnaby pójść dalej, ale mi się nie chciało (nawiasem mówiąc, popularne dystrybucje Linuxa z logami i monitorowaniem niebezpiecznie idą w stronę Windows)
Wykorzystanie opcji modułów jądra
We wpisie "Sprzęt i soft, który żyją własnym życiem" opisywałem włączanie trybu D3 dla poszczególnych urządzeń PCI urządzenia. Zaczynałem tam od wydania komendy, która wypisała mi ich listę:
sudo lspci -vvv
Można tam zobaczyć nazwy modułów jądra, które zostały załadowane. Dla każdego z nich można sprawdzić listę opcji, np.
modinfo -p i915
Na tej podstawie stworzyłem listę, którą dodałem w pliku /etc/default/grub do opcji GRUB_CMDLINE_LINUX. Potem jeszcze tylko
sudo update-grub
restart i mogłem już przystąpić do testów.
Początkowo moja lista wyglądała następująco:
GRUB_CMDLINE_LINUX="i915.enable_fbc=1 i915.enable_dc=4 i915.enable_psr=1 i915.enable_dpcd_backlight=1 snd_hda_intel.power_save=1 snd_hda_intel.power_save_controller=true iwlwifi.power_save=true iwlwifi.led_mode=3"
Uzyskałem wtedy niewidoczność karty Wifi i dźwiękowej, i brak jakichś specjalnych różnic (może nawet pogorszenie). Metodą prób i błędów uzyskałem wersję ostateczną:
GRUB_CMDLINE_LINUX="i915.enable_fbc=1 i915.enable_dc=4 i915.enable_psr=1"
Mikrokod do procesora
Zauważyłem, że nie jest najwyraźniej ładowany, a że lubię życie na krawędzi (just joking)... w pliku /etc/modprobe.d/intel-microcode-blacklist.conf wystarczyło odkomentować linijkę
blacklist microcode
Tuxedo
W notce "W poszukiwaniu urządzenia doskonałego…" pisałem o instalacji aplikacji od firmy Tuxedo, która m.in. pozwala na kontrolę prędkości wentylatorów (do tego włącza kombinację Fn+F1 do wyłączania touchpada, wyłącza kamerę i robi kilka innych rzeczy). Zarzucono mi, że wspominam o instalowaniu aplikacji podejrzanych (patrz moja polemika)... w międzyczasie zauważyłem m.in. to, że chociażby włączenie odpowiedniej usługi wydaje się bardzo szkodliwe dla czasu pracy na baterii (usługa jest dosyć energożerna, a zgłaszanie usterek jest średnio skuteczne na GitHub).
Na chwilę obecną wspomnianą aplikację mam wyłączoną, ale zainstalowaną:
wystarczyło wydać komendy
sudo systemctl stop tccd
sudo systemctl mask tccd
i w pliku /etc/systemd/system/tccd-sleep.service mieć linijki
ExecStart=/bin/bash -c "systemctl stop tccd"
ExecStop=/bin/bash -c "(systemctl start tccd; systemctl stop tccd)"
(chciałem mieć pewność, że kamera się nie włączy; pewnie można to zrobić lepiej)
Limity procesora
Można tu wyróżnić zarówno limity energetyczne (ilość W, która może być zużywana), jak i prędkościowe. O ustawianiu tych pierwszych wspominałem w notce "W poszukiwaniu urządzenia doskonałego…", w drugim przypadku nie chciałem limitować maksymalnej prędkości, i wystarczało mi ustawienie trybu oszczędzania zamiast pełnej prędkości, więc użyłem
sudo cpupower frequency-set --governor powersave
(uwaga: aplikacja od Tuxedo nie obsługuje jeszcze powersave, i warto wyłączyć opcję dotyczącą procesora w opcjach głównych)
Wersja ostateczna
Pomyślałem, że zbiorę te wszystkie swoje ustawienia w jeden skrypt, i będę go uruchamiał po starcie systemu i wybudzeniu z trybu standby. Treść skryptu:
# przy XWindows można zmieniać gammę
xgamma -rgamma 0.7 -ggamma 0.7 -bgamma 0.7
# włączam usługę (ona mi ustawia kamerę), wyłączam i na wszelki wypadek jeszcze upewniam, że jest nieaktywna
Komentarze