TLP – dywersyfikacja energetyczna Linuksa

Przenośne maszyny od dawna zadomowiły się wśród ludzi na dobre, ale Linux jakoś nie ma szczęścia do efektywnego wykorzystywania ich ograniczonych zasobów energetycznych. A z pewnością krótszy czas działania na baterii to powtarzający się motyw utyskiwania na ogólną sprawność Linuksa. Jednak po zgłębieniu tematu okaże się, że mechanizmów oszczędzania energii nasz system ma akurat sporo. Lecz jakoś do tej pory nikomu nie chciało się zebrać ich w jednym pliku konfiguracyjnym i stosować, gdy przechodzimy na dwudziesty pierwszy stopień zasilania. Epokę leniwego oczekiwania na cud kończy program TLP, który jest projektem wycelowanym w wykorzystanie niuansów energetycznych, dość skrzętnie ukrytych przed zwykłym użytkownikiem.

TLP sam w sobie stanowi uzupełnienie i rozszerzenie oryginalnych technik zarządzania energią w Linuksie. Niczego nie zastępuje, lecz sprytnie ustawia w celu przyoszczędzenia mW. Zakres jego działania sprowadza się do dwóch trybów – przy zasilaniu sieciowym oraz bez niego (na baterii). Zmiana trybu następuje automatycznie i wszystko odbywa się bez niepokojenia użytkownika.

TLP z jednej strony w użytkowaniu jest uproszczony aż do bólu – wystarczy tylko go uruchomić. Z drugiej strony nie znajdziemy wygodnego interfejsu graficznego, aby wyedytować przechowywane w pliku /etc/default/tlp parametry i opcje określające styl pracy TLP. Ew. zmiany konfiguracji musimy przeprowadzić ręcznie, zmieniając rzeczony plik. Lecz jak wspomniałem, zwykłemu zjadaczowi chleba wystarczy tylko zainstalować TLP i uruchomić komputer ponownie (TLP wystartuje automatycznie). Ambitni mogą zapoznać się z dokumentacją na stronie projektu i samodzielnie wyrzeźbić swoje ustawienia (/etc/default/tlp). Niemniej, w tym przypadku trzeba już wiedzieć mniej więcej co w kernelu i systemie piszczy. A jest tego trochę – począwszy od zarządzania częstotliwością pracy procesora, przez regulację zasilania dysków (aż po ich wyłączenie), kontrolę wbudowanych urządzeń, optymalizację pracy kernela, NMI i wiele, wiele innych.

Bateria bez wspomagania TLP
Bateria ze wspomaganiem TLP

I tak to wygląda w praktyce. Mój laptop przeznaczony do prac stacjonarnych zwykle wytrzymuje na baterii w okolicach ~ 2 godzin. Po uruchomieniu TLP jego obecny uptime na baterii to 2 godziny i 40 min (oczywiście w ciągłym użytkowaniu). I jak podpowiada system, baterii wystarczy jeszcze na 30 min. Jak na mojego energochłonnego Della – bardzo sympatyczny wynik.

Aby zainstalować program w wersji dla Ubuntu 12.04/12.10/13.04, Minta 13/14/15 i pochodnych, należy dodać do systemu repozytorium ppa:linrunner/tlp:

sudo apt-add-repository ppa:linrunner/tlp
sudo apt-get update
sudo apt-get install tlp tlp-rdw smartmontools ethtool

Ponieważ niektóre funkcje dublują się z programem laptop-mode-tools, należy pamiętać o jego usunięciu, gdy chcemy w pełni i wydajnie korzystać z TLP. Poniżej lista spraw, o które potrafi zadbać TLP. Aby uniknąć nieporozumień w nomenklaturze technicznych terminów pozostawiam pisownię oryginalną.

  • Kernel laptop mode and dirty buffer timeouts
  • Processor frequency scaling including “turbo boost” / “turbo core”
  • Power aware process scheduler for multi-core/hyper-threading
  • Hard disk advanced power magement level and spin down timeout (per disk)
  • SATA aggressive link power management (ALPM)
  • PCI Express active state power management (PCIe ASPM) – Linux 2.6.35 and above
  • Runtime power management for PCI(e) bus devices – Linux 2.6.35 and above
  • Radeon KMS power management – Linux 2.6.35 and above, not fglrx
  • Wifi power saving mode – depending on kernel/driver
  • Power off optical drive in drive bay (on battery)
  • I/O scheduler (per disk)
  • USB autosuspend with blacklist
  • Audio power saving mode – hda_intel, ac97
  • Enable or disable integrated wifi, bluetooth or wwan devices upon system startup and shutdown
  • Restore radio device state on system startup (from previous shutdown).
  • Radio device wizard: switch radios upon network connect/disconnect and dock/undock
  • Disable Wake On LAN
  • WWAN state is restored after suspend/hibernate
  • Untervolting of Intel processors – requires kernel with PHC-Patch
  • Battery charge thresholds – ThinkPads only
  • Recalibrate battery – ThinkPads only