Cpulimit, czyli cichy laptop.

Czasem jest tak, że do wykonania jest jakieś zadanie, na czasie wykonania którego nie zależy nam szczególnie, ale wykonujemy je na sprzęcie, który przy większym obciążeniu zaczyna np. hałasować. Dobrym przykładem jest kompresja/dekompresja dużych archiwów lub konwersja filmów na laptopie. Mój laptop praktycznie nigdy nie korzysta z wiatraka. Włącza się on dopiero, gdy procesor osiągnie 75 st. C, ale za to jak się włączy… tragedia, że szkoda słów.

Zwykły nice nie wystarczy (to dobre do zapewnienia dobrej responsywności innych zadań), ale to jest Linux, więc na pewno coś jest, co może pomóc. I rzeczywiście istnieje program, który pozwoli procentowo przydzielić zasoby CPU, a  nazywa się on cpulimit.

Zasada działania jest prosta – uruchomiony program śledzi wskazany proces i okresowo zatrzymać jego działanie (wysyłając SIGSTOP), a następnie, po bardzo krótkiej chwili wznawia je (wysyłając SIGCONT). Dodatkowo oblicza, na ile zatrzymać działanie tak, aby średni czas działania był zgodny z podanym przez użytkownika procentowym udziałem przydzielonego czasu procesora. Żadnych cudów, ale efekt bardzo fajny – po -l 60 (limitowanie do 60%) mam pewność, że wiatrak się nie załączy – temperatura nie zbliża się w okolice krytycznych 75 st. C.

Żeby nie było za dobrze, są też wady. Oczywista to wydłużenie czasu wykonania operacji. Mniej oczywista, to trochę „śmieci” na ekranie (przy uruchomieniu jeden raz pojawia się informacja o zatrzymaniu działania procesu). Kolejna wada, to działanie tylko dla pierwszego procesu pasującego do nazwy (ale to już polecam przeczytanie uwag w man cpulimit).

Ponieważ miałem problem z opcjami -e oraz -P (pewnie zaraz zgłoszenie błędu pójdzie), za to -p działa bez problemu, to, jeśli ktoś koniecznie chce odwoływać się do nazwy, polecam użycie:

cpulimit -p `pidof PROCES` -l 60 -v

Z podobnych zagadnień, jeśli ktoś chciałby przypisać proces do danego CPU, to powinien zainteresować się programem taskset.

UPDATE: Jak Paweł słusznie zauważył w komentarzu (dzięki za info), już było na ten temat pisane. Dodaję linka.

Linki:

  1. Strona domowa programu cpulimit.
  2. Ciekawie wyglądający opis tworzenia demona na bazie programu cpulimit (nie testowałem w praktyce).
  3. Nieco więcej o taskset.
  4. Wpis Grzglo na ten sam temat – parę informacji więcej (zwł. o demonie) oraz dyskusja.
  5. Opis Control Groups w Linuksie – inny, wspierany przez kernel, bardziej uniwersalny, wydaje się, że lepszy (ale i nieco trudniejszy w użyciu) sposób na to samo.

Mój pierwszy Mac.

Wczoraj późnym popołudniem nadeszła długo oczekiwana paczka, a w niej… MacBook (13,3″, Core 2 Duo 2,26 GHz, 2 GB RAM). Ekran niby mały, ale w pełni wystarczający, nie to co w netbookach. A przy tym niesłychanie przenośny. Nie bawiłem się nim jeszcze, ale już przy samym wypakowaniu widać różnicę – w pełni profesjonalne pakowanie. Początkowo planowałem instalację Linuksa, ale po włączeniu MacOS zrezygnowałem – system działa po prostu cudownie i nie ma sensu kaleczyć tego sprzętu Linuksem. Więcej wrażeń z użytkowania – wkrótce.

UPDATE: Oczywiście powyższa informacja to primaaprilisowy żart (co czytelnicy patrzący w źródło mogli sprawdzić), raczej udany, bo jedna osoba dała się nabrać, druga prawie. Całość sponsorowana jest przez opóźnione o 7 minut wyjście do pracy, a zainspirowana tym wpisem.

Z ciekawych rzeczy – blox poinformował mnie podczas dodawania tego wpisu, że sięgnąłem limitu 250 tagów. Drugi raz dobijam do limitu, zobaczymy, czy znowu zwiększą…