PowerNap – a great autosuspend solution

PowerNap jest tym czego zawsze brakowało mi w Linuksie – mianowicie jakiegoś bardziej inteligentnego zarządzania energią. Podejście, że jeśli nie ruszam myszką i nie stukam w klawisze to oznacza, że nie korzystam z komputera jest po prostu nieprzystające do współczesnych czasów. Mogę przecież oglądać film, albo ściągać DVD Debiana i nie chciałbym, aby w tym czasie mi się komputer wyłączył. Cóż, można oczywiście całkowicie wyłączyć automatyczne usypianie systemu, ale to też nie jest rozwiązanie. Chciałbym po prostu, żeby Linux sam wiedział kiedy ma się wstrzymać. Na szczęście powstał PowerNap, który całkiem nieźle odpowiada moim oczekiwaniom, choć można by to rozbić jeszcze lepiej.

PowerNap – instalacja

Niestety, problem z PowerNapem jest taki, że już nie jest rozwijany, niestety! W związku z czym nie działa na nowych dystrybucjach np. na Ubuntu od wersji 15.10 Wily Werewolf (Wycwaniony Wilkołak). Na szczęście społeczność Ubuntu nie zawodzi, w wątku powernap on ubuntu 15.10 znalazłem 2 porady jak naprawić powernapa, w wątku Can’t stop powernapd on 16.04.1 jedną, i jeszcze jedną w wątku Fixing powernap on ubuntu server eoan 19.10 i mamy gotowego, świetnie działającego PowerNapa. Aby i sobie, i Wam uprościć instalację, utworzyłem 4 patche i wszystko wrzuciłem do małego skryptu, który możecie ściągnąć z mojej strony, wypakować i uruchomić:

PowerNap – konfiguracja

W PowerNapie możemy zdefiniować 2 poziomy oszczędzania energii zdefiniowane w parametrach: ACTION_METHOD i STAGE2_ACTION_METHOD. Mogą przyjąć jedną z 4 wartości:

  • 0 – powersave – oszczędzanie energii,
  • 1 – suspend – wstrzymanie / uśpienie,
  • 2 – hibernate – hibernacja,
  • 3 – poweroff – wyłączenie,
  • 4 – best-effort – najlepszy wybór.

Domyślnie na pierwszym poziomie aktywowane jest oszczędzanie energii, a na drugim najlepszy wybór – czyli to co użytkownik zdefiniował w /etc/powernap/action, a jeśli nic to wstrzymanie, hibernację lub wyłączenie w zależności, na co pozwala system. Nam zależy oczywiście na wstrzymanie, gdyż przywrócenie komputera z tego stanu to tylko parę sekund. Właściwie prawie wszystkie domyślne wartości są optymalne, z jednym wyjątkiem – drugi poziom oszczędzania energii jest domyślnie wyłączony STAGE2_ABSENT_SECONDS = 0 i powinniśmy go włączyć – ustawić jakiś czas np. 500 sekund.

Dalsza cześć pliku konfiguracyjnego jest znacznie ciekawsza. PowerNap może monitorować wiele aspektów pracy komputera, w pliku konfiguracyjnym zdefiniowane są one jako Monitory:

  • WoLMonitor – monitoruje czy do komputera dotarł magiczny pakiet (ang. Magic Packet), służący zazwyczaj do budzenia komputera, ale w tym przypadku będzie on służył tylko podtrzymaniu jego aktywności. Domyślnie monitorowane są oba standardowe porty, na których zwykle działa Wake On LAN, czyli 7 i 9.
  • ConsoleMonitor – monitorowana jest aktywność w konsoli oraz myszka i klawiatura PS/2.
  • ProcessMonitor – sprawdza czy dany proces jest uruchomiony. Można używać wyrażeń regularnych. Warto dodać tu daemona SSH np. sshd = "sshd: .*\[priv\]$". Często ludzie dodają tu również wszelkiej maści odtwarzacze multimedialne. W tym ostatnim przypadku zalecałbym jednak pewną dozę ostrożności – jeśli uruchomisz taki odtwarzacz, a nie zaczniesz w nim niczego faktyczne odtwarzacz, komputer i tak się nie uśpi.
  • LoadMonitor – to monitor obciążenie procesora. Domyślnie jest on ustawiony zgodnie z liczbą rdzeni procesora. Ja proponuje obniżyć tę wartość – jeśli 2-rdzeniowa maszyna jest obciążona na poziomie powiedzmy 0.7 to widać wyraźnie, że coś robi i ja bym jej nie przerywał.
  • TCPMonitor – monitoruje połączenia TCP na określonych portach. Dodajemy te na których mamy uruchomione jakieś serwery.
  • UDPMonitor – podobnie jak powyżej, ale dla połączeń UDP. Nie przychodzą mi tu do głowy jakieś przykłady.
  • IOMonitor – monitoruje aktywność wejścia / wyjścia określonych procesów. Można to wykorzystać do monitorowania aktywności programów P2P np. transmission-da.
  • InputMonitor – monitoruje myszkę i klawiaturę USB.
  • DiskMonitor – status aktywności dysku. Funkcja ta nadaje się do monitorowania dysków, które już zostały tak skonfigurowane, że po pewnym czasie braku aktywności wyłączają się. Montorować w ten sposób można dyski przeznaczone wyłączenie na składowanie danych, nie nadaje się ta funkcja do monitorowania dysku z systemem.

wol-on-conn – Budzenie serwera połączeniem

Na koniec nie pozostaje mi nic innego jak tylko zachęcić Was do przeczytania artykułu, który idealnie uzupełnia poruszoną tematykę wol-on-conn – Budzenie serwera połączeniem

Dodaj komentarz