purpura, woda uspokaja

purpura, woda uspokaja
fot. Salman Arif Khan

niedziela, 27 kwietnia 2014

power

Każdy wie, że power jest ważny. Ale dopiero posiadanie notebooka i praca w terenie pozwala to w pełni zrozumieć.

W domu mamy gniazdko i prąd. W terenie zdani jesteśmy na naszą baterię, a raczej bateryjkę. Bo moja, to 44 Wh (watogodziny). W porównaniu do bateryjek telefonów, to gigant. Ale realia są trochę inne. Notebook potrzebuje więcej prądu. Ile? Sam byłem ciekaw.

W dystrybucjach linuksowych jest wiele programów służących do pomiarów różnych wielkości. Parametrów środowiska i otoczenia systemu. W tym także i konsumpcji. Konsumpcji energii (komputerki muszą się czymś żywić). Wiele z tych programów jest w repozytoriach; zainstalowane lub tylko dostępne. Tutaj koncentruję się na dystrybucjach debianowych (w konsekwencji także ubuntowych), bo tych używam na co dzień.

W repozytoriach Debiana jest powertop. Aplikacja, przygotowana i rozwijana przez Intela, służąca do pomiaru zużycia energii. Korzystam z niej do wyznaczenia zapotrzebowania energetycznego urządzeń (dołączonych lub wbudowanych) oraz programów. Pozwala ona na wyznaczenie zapotrzebowania na energię całego komputerka, ale ja do tego celu używam też innej aplikacji. Jest to program Canonicala (od Ubuntu) pod nazwą powerstat. Do znalezienia w repozytoriach Ubuntu i pochodnych oraz Debiana niestabilnego. W Debianie stabilnym możliwy do zainstalowania po pobraniu ze strony autora odpowiedniej wersji (ze względu na zależności trzeba wybrać wersję odpowiednio wcześniejszą).

W stosunku do powertopa ma się on nijak, jest o wiele prostszy, ma jednak poważną zaletę. Wyznaczenie podstawowego zapotrzebowania na energię może odbywać się w porównywalnych warunkach dla każdego laptopa i każdej dystrybucji. Powerstat w wersji standardowej działa w sposób następujący. Po uruchomieniu przez trzy minuty gromadzi sobie dane, potem 30 razy próbkuje (w 10s interwałach). Na podstawie otrzymanych wyników wylicza średnie zapotrzebowanie. Proste. Powertop też to wszystko wylicza, jednak bazuje na większej ilości wyników. Stąd porównanie pomiędzy komputerami i dystrybucjami bywa trudne, bo w każdym przypadku może być inna ilość próbek.

Powerstat może być uruchamiany bezpośrednio przez użytkownika, lub jako root.

powerstat
sudo powerstat



Wynik końcowy - średnie zużycie energii - jest identyczny. Różnica polega w ilości prezentowanych danych. Powerstat działa tylko, gdy laptop pracuje na baterii. Informacja o programie i jego opcjach dostępna jest poprzez manual, czyli komendę

man powerstat

Manual jest trochę niepełny. Brak jest informacji co do mierzonych wielkości, ale pobór mocy jest samoobjaśniający się.

Zacząłem od Linux lite 1.8 (v. 64b). Nie miałem jeszcze odniesienia, co do zapotrzebowania energetycznego, dlatego w następnych krokach porównam to z semplice i pointem - dystrybucjami, z którymi pracuję na codzień.

Mierzyłem kilkakrotnie. Bateria naładowana, wifi włączone, bluetooth wyłączony, ekran 20%, po trzech minutach ekran wyłączony. Wyniki są niepowtarzalne, jednak zbliżone. Poniżej jeden z wyników (uruchomienie programu jako root zwiększa liczbę kolumn, przez co wynik jest trudniej czytelny na stronie)

linux@linux:~$ uname -a
Linux linux 3.8.0-34-generic #49~precise1-Ubuntu SMP Wed Nov 13 18:05:00 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

linux@linux:~$ powerstat
Running for 300 seconds (30 samples at 10 second intervals).
ACPI battery power measurements will start in 180 seconds time

  Time    User  Nice   Sys  Idle    IO  Run Ctxt/s  IRQ/s  Watts
01:56:07   0.2   0.0   0.2  99.6   0.0    2     90     48  13.22
01:56:17   0.3   0.0   0.1  99.6   0.0    1     93     48  13.20
01:56:27   0.2   0.0   0.2  99.6   0.0    1     96     50  13.22
01:56:37   0.3   0.0   0.4  99.3   0.0    1    151     60  13.20
01:56:47   0.2   0.0   0.2  99.6   0.0    2     93     49  13.20
01:56:57   0.4   0.0   0.1  99.5   0.0    1    118     53  13.20
01:57:07   0.2   0.0   0.2  99.6   0.0    1     98     50  13.23
01:57:17   0.3   0.0   0.2  99.6   0.0    1     95     49  13.20
01:57:27   0.3   0.0   0.3  99.4   0.0    1    109     53  13.23
01:57:37   0.2   0.0   0.1  99.7   0.0    1     96     49  13.31
01:57:47   0.3   0.0   0.1  99.6   0.0    1     90     48  13.20
01:57:57   0.3   0.0   0.1  99.5   0.0    2    105     52  13.31
01:58:07   0.2   0.0   0.1  99.7   0.0    1     94     50  13.23
01:58:17   0.2   0.0   0.2  99.6   0.0    1     90     48  13.23
01:58:27   0.3   0.0   0.2  99.5   0.0    1     98     50  13.33
01:58:37   0.2   0.0   0.4  99.4   0.0    1    158     62  13.22
01:58:47   0.3   0.0   0.1  99.6   0.0    1     95     50  13.24
01:58:57   0.3   0.0   0.2  99.5   0.0    1    103     52  13.23
01:59:07   0.2   0.0   0.1  99.7   0.0    1     97     51  13.30
01:59:17   0.2   0.0   0.1  99.7   0.0    1     91     46  13.24
01:59:27   0.2   0.0   0.2  99.6   0.0    2     98     50  13.23
01:59:37   0.2   0.0   0.2  99.6   0.0    1     90     50  13.36
  Time    User  Nice   Sys  Idle    IO  Run Ctxt/s  IRQ/s  Watts
01:59:47   0.3   0.0   0.1  99.6   0.0    1     91     48  13.24
01:59:57   0.2   0.0   0.3  99.5   0.0    1     97     49  13.26
02:00:07   0.2   0.0   0.2  99.6   0.0    1     96     51  13.24
02:00:18   0.3   0.0   0.1  99.6   0.0    2     91     48  13.26
02:00:28   0.3   0.0   0.2  99.5   0.0    1    106     52  13.26
02:00:38   0.2   0.0   0.5  99.3   0.0    1    154     61  13.26
02:00:48   0.3   0.0   0.2  99.6   0.0    1    100     50  13.27
02:00:58   0.4   0.0   0.1  99.5   0.0    2    104     53  13.29
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
 Average   0.2   0.0   0.2  99.6   0.0  1.2  102.8   50.9  13.25
  StdDev   0.1   0.0   0.1   0.1   0.0  0.4   18.2    3.7   0.04
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
 Minimum   0.2   0.0   0.1  99.3   0.0  1.0   90.0   45.7  13.20
 Maximum   0.4   0.0   0.5  99.7   0.0  2.0  158.2   61.6  13.36
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
Summary:
 13.25 Watts on Average with Standard Deviation 0.04
 

Wyszło ok. 13,25W. Czyli w stanie jałowym mój laptop pracowałby 44/13,25 h. Trzy godziny, dziewiętnaście minut (wynik dziesiętny trzeba przekonwertować do systemu sześdziesiątkowego, bo w tym systemie liczony jest czas). Widać, jaka jest zależność wielkości baterii i zużycia energii przez laptop na długość czasu pracy. Zależności te są odpowiednio wprost i odwrotnie proporcjonalne. Oznacza to, że komputerek pracuje tym dłużej im mamy silniejszą baterię i im mniej potrzebuje prądu. Proste. Baterii już nie możemy zmienić. Ale zawsze możemy zmienić system, a w nim powyłączać część niepotrzebnych serwisów.

Teraz semplice.

Warunki testowe - analogiczne. Wynik (w pierwszej linii wynik polecenia uname -a)

Linux asuma 3.13-1-amd64 #1 SMP Debian 3.13.10-1 (2014-04-15) x86_64 GNU/Linux

Running for 300 seconds (30 samples at 10 second intervals).
ACPI battery power measurements will start in 180 seconds time

  Time    User  Nice   Sys  Idle    IO  Run Ctxt/s  IRQ/s  Watts
07:48:38   0.3   0.0   0.5  99.2   0.0    1    218    111  10.29
07:48:48   0.4   0.0   0.4  99.3   0.0    1    161     82  10.30
07:48:58   0.2   0.0   0.3  99.5   0.0    1    135     70  10.30
07:49:08   0.4   0.0   0.2  99.5   0.0    1    155     81  10.29
07:49:18   0.4   0.0   0.3  99.3   0.0    1    171     88  10.29
07:49:28   0.5   0.0   0.4  99.2   0.0    1    168     86  10.32
07:49:38   0.3   0.0   0.4  99.4   0.0    1    138     71  10.30
07:49:48   0.3   0.0   0.4  99.3   0.0    1    163     82  10.30
07:49:58   0.3   0.0   0.3  99.4   0.0    1    138     71  10.30
07:50:08   0.3   0.0   0.8  98.9   0.0    1    182    100  10.35
07:50:18   0.3   0.0   0.4  99.3   0.0    1    176     93  10.30
07:50:28   0.3   0.0   0.4  99.3   0.0    1    169     86  10.33
07:50:38   0.2   0.0   0.3  99.5   0.0    2    142     74  10.30
07:50:48   0.4   0.0   0.3  99.4   0.0    2    157     81  10.30
07:50:58   0.3   0.0   0.3  99.4   0.0    1    139     72  10.30
07:51:08   0.3   0.0   0.3  99.5   0.0    1    132     68  10.30
07:51:18   0.3   0.0   0.4  99.3   0.0    1    164     86  10.30
07:51:28   0.3   0.0   0.4  99.3   0.0    1    164     85  10.30
07:51:38   0.3   0.0   0.4  99.3   0.0    1    158     80  10.30
07:51:48   0.4   0.0   0.3  99.3   0.0    1    163     84  10.30
07:51:58   0.4   0.0   0.3  99.3   0.0    1    148     75  10.30
07:52:08   0.3   0.0   0.9  98.8   0.0    1    188    104  10.35
  Time    User  Nice   Sys  Idle    IO  Run Ctxt/s  IRQ/s  Watts
07:52:18   0.4   0.0   0.4  99.3   0.0    1    164     86  10.32
07:52:28   0.4   0.0   0.3  99.4   0.0    1    165     85  10.30
07:52:38   0.2   0.0   0.3  90.4   9.1    1    139     73  11.06
07:52:48   0.3   0.0   0.4  99.1   0.2    1    166     86  10.89
07:52:58   0.3   0.0   0.4  99.1   0.2    1    144     74  10.91
07:53:08   0.3   0.0   0.3  99.2   0.3    1    134     69  10.91
07:53:18   0.4   0.0   0.4  99.0   0.3    1    159     83  10.89
07:53:28   0.4   0.0   0.3  99.1   0.3    1    149     76  10.89
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
 Average   0.3   0.0   0.4  99.0   0.3  1.1  158.2   82.1  10.43
  StdDev   0.1   0.0   0.1   1.6   1.6  0.2   18.3   10.0   0.25
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
 Minimum   0.2   0.0   0.2  90.4   0.0  1.0  132.0   68.1  10.29
 Maximum   0.5   0.0   0.9  99.5   9.1  2.0  217.9  111.0  11.06
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
Summary:
 10.43 Watts on Average with Standard Deviation 0.25 


I point (wersja 2.3 z backportowanym jądrem)

Linux asuma 3.13-0.bpo.1-amd64 #1 SMP Debian 3.13.10-1~bpo70+1 (2014-04-23) x86_64 GNU/Linux

Running for 300 seconds (30 samples at 10 second intervals).
ACPI battery power measurements will start in 180 seconds time

  Time    User  Nice   Sys  Idle    IO  Run Ctxt/s  IRQ/s  Watts
14:44:58   1.9   0.0   0.9  87.8   9.4    1    287    149  10.51
14:45:08   0.3   0.0   0.3  99.3   0.2    1    159     82  10.53
14:45:18   0.3   0.0   0.8  98.9   0.0    1    207    109  10.77
14:45:28   0.3   0.0   0.3  99.5   0.0    1    139     71   9.87
14:45:38   0.4   0.0   0.2  99.4   0.0    1    158     80   9.90
14:45:48   0.4   0.0   0.2  99.4   0.0    1    155     82  10.01
14:45:58   0.3   0.0   0.3  99.5   0.0    1    133     69   9.88
14:46:08   0.3   0.0   0.4  99.3   0.0    1    164     87   9.91
14:46:18   0.3   0.0   0.4  99.4   0.0    1    166     84   9.91
14:46:28   0.2   0.1   0.4  90.4   8.9    1    151     77  11.31
14:46:38   0.4   0.0   0.3  99.1   0.3    1    167     86  10.54
14:46:48   0.3   0.0   0.3  99.5   0.0    1    158     82  10.56
14:46:58   0.4   0.0   0.8  98.8   0.0    1    201    107   9.94
14:47:08   0.3   0.0   0.3  99.4   0.0    2    155     80  10.07
14:47:18   0.4   0.0   0.3  99.4   0.0    1    160     80   9.94
14:47:28   0.3   0.0   0.3  99.4   0.0    1    166     83   9.94
14:47:38   0.4   0.0   0.3  99.4   0.0    1    158     81  10.08
14:47:48   0.2   0.0   0.4  99.4   0.0    1    145     73   9.97
14:47:58   0.4   0.0   0.3  99.3   0.0    1    153     82   9.95
14:48:08   0.4   0.0   0.3  99.4   0.0    1    169     88   9.97
14:48:18   0.3   0.0   0.4  99.4   0.0    1    153     76  10.05
14:48:28   0.4   0.0   0.4  99.2   0.0    1    167     84   9.97
  Time    User  Nice   Sys  Idle    IO  Run Ctxt/s  IRQ/s  Watts
14:48:38   0.3   0.0   0.4  99.3   0.0    1    164     81   9.97
14:48:48   0.3   0.0   0.3  90.5   8.9    1    148     75  10.64
14:48:58   0.4   0.0   0.8  98.6   0.3    1    194    104  10.78
14:49:08   0.4   0.0   0.3  99.1   0.3    1    164     87  10.64
14:49:18   0.3   0.0   0.3  97.7   1.7    2    158     80  10.64
14:49:28   0.3   0.0   0.3  99.2   0.2    1    145     77  10.72
14:49:38   0.3   0.0   0.3  99.2   0.2    1    175     91  10.64
14:49:48   0.4   0.0   0.3  99.1   0.2    1    153     78  10.64
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
 Average   0.4   0.0   0.4  98.3   1.0  1.1  165.7   85.5  10.28
  StdDev   0.3   0.0   0.2   2.9   2.7  0.2   27.5   14.9   0.39
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
 Minimum   0.2   0.0   0.2  87.8   0.0  1.0  132.7   69.1   9.87
 Maximum   1.9   0.1   0.9  99.5   9.4  2.0  286.6  148.6  11.31
-------- ----- ----- ----- ----- ----- ---- ------ ------ ------
Summary:
 10.28 Watts on Average with Standard Deviation 0.39 
 

W obu powyższych przykładach teoretyczny czas pracy jest powyżej czterech godzin.

Z powyższych przykładów widać, że dystrybucje debianowe - semplice i point na biegu jałowym zużywają mniej energii niż dystrybucja ubuntowa - lite 1.8. Linux lite uważany jest za jedną z lżejszych dystrybucji. Co zatem w przypadku np. takiego Ubuntu?

Oczywiście, to jest bieg jałowy. Przy pracy w warunkach realnych - przeglądarka, edycja dokumentów, zapotrzebowanie energetyczne wzrasta. Nawet dwukrotnie. Za pomocą powertopa możemy wyliczyć zapotrzebowanie energetyczne poszczególnych urządzeń i programów. Mnie zaskoczyło, że bezprzewodowa myszka pobiera całkiem sporo, a już dołączony modem gsm (poprzez usb), to 3W potrzebnej mocy. Wifi rząd wielkości mniej.

Z drugiej strony, ale to już inna bajka, można próbować optymalizować zapotrzebowanie energetyczne. Wyłączamy niepotrzebne serwisy, a w tle zawsze mnóstwo tych demonów. To jest proste. Można stosować różne zaawansowane techniki agresywnego oszczędzania - np. TLP. Kolega z forum raportował mi, że zszedł do zapotrzebowania energetycznego rzędu siedmiu watów z kawałkiem. Nieźle.

Niby drobiazg. Energia. Jak jest, to jej nie doceniamy. Ale w warunkach mobilnych może być bezcenna.