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.

Odczyt S.M.A.R.T. via USB w Debian Lenny.

Dyski potrafią się sypnąć – pewnie każdemu zdarzyło się odzyskiwać dane z dysku, który „umarł”. Dyski mechaniczne posiadają jednak bardzo przyjemną cechę, która może zapobiec utracie danych, czyli tytułowy S.M.A.R.T.. Tylko, że… nie działa w przypadku dysków podłączonych po USB. Przynajmniej w Debianie Lenny. Przynajmniej domyślnie.

Wikipedii przepisywać nie ma sensu, więc krótko: pod każdym systemem dostępny jest pakiet narzędzi smartmontools. Do niedawna pakiet obsługiwał dyski IDE, SCSI oraz SATA. Natomiast bezradny był w przypadku dysków podłączanych przez USB (przynajmniej pod Linuksem), co znacznie ograniczało jego skuteczność.

Byłem przekonany, że to kwestia protokołu, ale przy okazji rozmowy okazało się, że da się, co więcej, niektórze narzędzia pod Windows umieją to zrobić. Linux jak zwykle w tyle? Okazuje się, że niekoniecznie. Co prawda wersja z Debiana Lenny nie potrafi odczytać stanu dysku podłączonego po USB, ale wersja z testinga – jak najbardziej.

Pakiet jest dostępny w backportach, a dla tych, którzy wolą zrobić sami informacja – samodzielnie backportuje się trywialnie. Wystarczy dodać do /etc/apt/sources.list repozytoria ze źródłami dla testing, pobrać źródła smartmontools oraz libcap-ng w wersji dla testing (wajig source smartmontools; wajig source libcap-ng), przebudować na Lennym (dpkg-buildpackage) najpierw libcap-ng, zainstalować otrzymane libcap-ng0_0.6.2-4_i386.deb oraz libcap-ng-dev_0.6.2-4_i386.deb, następnie zbudować smartmontools. Tak naprawdę do działania potrzebne są tylko libcap-ng0_0.6.2-4_i386.deb oraz smartmontools_5.39.1+svn3060-1_i386.deb). I to wszystko. Od tej pory działa smartctl -A /dev/sda, gdzie sda to dysk w kieszeni USB.

Przydatna sprawa, zwłaszcza, że w nowym routerku dysk w kieszeni jest dość krytyczny – wszak wszystkie katalogi, które muszą być dostępne do zapisu są właśnie na nim…

PS. Podziękowania dla peceta za informację o tej zmianie w smartmontools.

Fujitsu Siemens Esprimo V6515

Staremu laptopowi (Asus A6U) się umarło, więc wymieniłem mojej miłej notebooka. Stanęło na tanim, tytułowym FS Esprimo V6515. Poniżej szybkie wrażenia z krótkiego użytkowania sprzętu i instalacji Debiana w wersji Lenny.

Fujitsu Siemens Esprimo V6515

Źródło: http://gdgt.com/fujitsu-siemens/esprimo/mobile/v6515/

Może Asusowi nie zmarło się tak całkiem, ale praca była niemożliwa – twierdził, że się przegrzewa i się wyłączał. Losowo. Szybka poprawa chłodzenia nie pomogła (a raczej pomogła na chwilę), poza tym sprzęt średnio nowy i średnio rozwijalny (Sempron 3000+, 512 MB RAM, dysk IDE), więc stanęło na tym, że szybciej i pewniej zmienić, niż naprawiać (czym i tak pewnie się zajmę), bo może płyta walnięta, czujnik jakiś czy procesor, a nie po prostu chłodzenie. Pojawił się więc nowy, względnie tani lapek.

Tytułowy FS Esprimo V6515, to: matowa matryca (to IMO plus) 15,4″, 2 GB RAM (1 GB + 1 GB dołożony), Nvidia 8200M, procesor Intel Pentium Dual Core T3400 (2,16 GHz), dysk 160 GB (5400 rpm), nagrywarka DVD. W porównaniu z poprzednikiem, na oko – demon szybkości. Z Windows Vista Basic w markecie już za 1350 zł brutto, czyli niedrogo, nawet porównując koszt modernizacji/naprawy poprzednika.

Pierwsze wrażenie – ogór. Nie ma nic, raptem 3 złącza USB, ethernet, wyjśnie na zewn. monitor, jakieś słuchawki i… tyle. Żadnej kamery, modemu, dodatkowych złącz, slotu na karty. Nic. Do tego tandetnie i delikatnie wyglądający plastik. Całość duża – gruby (wysoki), szeroki i głęboki. Wagę przemilczę. No cóż, low end… Ale że ma to być „przenośna stacjonarka”, a nie laptop, to w sumie jakość nie jest aż tak ważna, podobnie jak czas pracy na baterii.

Zadecydowała cena (chyba jedne z najtańszych laptopów w ogóle) i grafika z CUDA, którą mam zamiar kiedyś się pobawić bardziej. Krótko – do jakości można przywyknąć, a szybkość faktycznie jest OK (pamięć RAM współdzielona z grafiką). Sprzęt nie kupowany z myślą o Linuksie, bo nie będzie to podstawowy system na nim, ale na oko powinno działać, zresztą „jakoś to będzie”.

Na pierwszy ogień – zaraz po instalacji Windowsa – poszedł memtest – błędów nie było. Spróbowałem uruchomić Knoppiksa z USB i… pierwszy zawód. Nie zadziałał. Standardowe wyłączenie acpi itp. również nie pomogły.

Podejście drugie to LiveUSB Debiana Lenny w wersji 64 bit (DIY). Działa. I jest szybki. Bardzo szybki. Nie wiem, czy to kwestia 64 bit, czy samego sprzętu, czy uruchamiana z pendrive’a, ale KDE uruchamia się błyskawicznie. Szybka instalacja po kabelku ethernetowym (karta bezprzewodowa nie działa z liveCD) i… Lenny średnio się nadaje na desktop. Przynajmniej dla tej maszyny.

Przy standardowej instalacji (znaczy się Lenny postawiony debootstrapem, nie z użyciem instalatora) nie działały: wireless, klawisze specjalne (głośniej, ciszej, jaśniej, ciemniej) oraz… dźwięk. No dobrze, być może dźwięk działał, bo coś tam cichutko szumiało, tylko nie zauważyłem wyciszonego suwaczka od „speakers”. Działała akceleracja 3D (sterownik binarny Nvidii z dystrybucyjnego repozytorium) i karta ehernetowa, przy czym grafika zmieniała jasność na maksimum (a klawisze nie działały).

Jeśli chodzi o wireless, to lspci wskazało, że jest to Atheros AR242x 802.11abg, czyli całkiem zacna karta (nie spodziewałem się wsparcia dla 802.11a w takim low endzie). Szybkie sprawdzenie i… wiki Debiana stwierdza, że na kernelu z Lenny’ego ta karta nie zadziała (choć ogólnie powinna działać i to na sterowniku z jądra). No dobrze, i tak nie lubię dystrybucyjnych kerneli. Szybkie ściągnięcie waniliowego 2.6.32.6, ponieważ nie mam czasu, to nie bawię się w tuning, tylko biorę konfig z Lenny’ego, make oldconfig, make-kpkg –initrd kernel_image, reboot i… WiFi działa, ale – zgodnie z przewidywaniami – grafika nie bardzo.

Module assistant nie zrobi pakietu na podstawie sterownika z Lenny’ego, bo kernel za nowy. Nic to, zaczyna się backportowanie. Instalacja źródeł nvidia-glx i nvidia-kernel-source z repozytorium unstable (wersja 190.53-1), kompilacja, instalacja i… działa (przy okazji wrzuciłem mój ulubiony wicd dla WiFi, także backportowany). Dla odmiany, zamiast jasności na maksimum, jest na minimum. Wspominałem, że klawisze specjalne (nadal) nie działają? Za to działa:

echo "5" > /sys/class/backlight/acpi_video0/brightness

Ale da się pracować. 😉 Do tego szybkie zrobienie dynamicznej zmiany taktowania procesora (bez problemu).

Z podstawowych rzeczy został dźwięk. Stwierdziłem, że albo opcje do modułu potrzebne, albo nowsza alsa. Albo jedno i drugie. Alsa backportuje się bez problemu, trochę nt. opcji modułu (i – nie ukrywajmy – wielu innych rzeczy) znalazłem na opisie instalacji Lenny’ego dla V6505 (nieco inny sprzęt, ale wiele zbieżności). Po instalacji alsy odkrywam wyciszony suwak „speakers”. Nie wiem, czy go wcześniej nie zauważyłem, czy go nie było. W każdym razie po zwiększeniu głośności dźwięk działa.

Ostatecznie stanęło na tym, że klawisze specjalne nie działają, reszta działa (ww. strona sugeruje, że Ubuntu 9.10 obsługuje wszystko od kopa, więc jak komuś zależy na bezproblemowej instalacji Linuksa, to raczej tę dystrybucję polecam, choć jej nie testowałem).

Co do samego sprzętu, to uwagę zwraca także duży pobór prądu – powertop pokazuje, że zużywa dużo więcej prądu, niż HP Compaq 8430 sprzed 2,5 roku. Mówiąc dużo więcej, mam na myśli przynajmniej jakieś 30% (IIRC). Oba na podobnych ustawieniach – bez obciążenia (minimalne taktowanie), mało uruchomionych programów, włączone wifi, ekran o normalnej jasności. Natomiast jeśli chodzi o szybkość, to nie chodziło o bootowanie z pendrive’a – nadal jest bardzo szybki. Ikonki w splashu KDE robią pyk-pyk-pyk i system gotowy do działania. Bez żadnego tuningu.

Podsumowując – całkiem fajny sprzęt (IMO lepszy wybór, niż kupno typowego desktopa, jeśli ktoś nie ma jakichś wielkich wymagań dla np. grafiki), nawet obsługiwany przez Linuksa, choć Debian Lenny nie jest dla niego najszczęśliwszym pomysłem – wymaga rzeźby (a mimo to klawisze specjalne nadal nie działają). Przy czym należy mieć na względzie, że to nie mój sprzęt i raczej nie miałem czasu na wgryzanie się i zabawę.

Na potrzeby serwisu Linux on Laptops popełniłem opis instalacji Debiana Lenny na Fujitsu Siemens Esprimo V6515 (ang.) – może się komuś przyda. Więcej szczegółów dotyczących sprzętu, konfiguracji i instalacji pakietów – tamże. Ew. aktualizacje opisów uruchamiania także będą się znajdowały raczej tam, niż w tym miejscu.