przystajnik

Archiwum tagów la ram

Pamięć odzyskana – rzecz o optymalizacji Ubuntu 16.04

Wszyscy mamy nowoczesne komputery z niebotyczną ilością megabajtów pamięci RAM na pokładzie. No chyba, że ktoś ma zaledwie 2 lub 4GB, wtedy okazuje się, że najnowsze Ubuntu 16.04 w wersji Unity/GNOME może sprawić mu niemiłą niespodziankę. Zgodnie bowiem z teorią ewolucji, wszystkie komponenty naszego systemu stają się szybsze, ładniejsze, automatycznie inteligentne i smuci tylko jeden fakt – większość z nich nadal pozostaje totalnie niezoptymalizowanym kawałkiem kodu. Pamiętacie czasy, gdy Ubuntu z Unity zajmowało 400 – 500MB pamięci RAM? Pora przełożyć kartkę w kalendarzu na ścianie, gdyż te czasy już minęły. Najnowsza odsłona Ubuntu 16.04 potrafi zagarnąć na swoje potrzeby od 800 do 1GB pamięci RAM. Co więcej, po starcie tendencja pożerania RAMu się utrzymuje i jeżeli mamy „zaledwie” 2GB to komfort pracy zaczyna schodzić na dalszy plan naszych prób okiełznania systemu.

BQ Aquaris M10 „nikt tego nie kupi” w sprzedaży

Debiut na targach w Barcelonie pierwszego autonomicznego tabletu z Ubuntu wywołał skrajne emocje. Z jednej strony fani Linuksa z zadowoleniem przyjęli fakt kolejnego dedykowanego urządzenia, z drugiej strony każdy podświadomie był realistą. Znając rozmach i skalę wiodących producentów, mariaż BQ z Canonicalem wydawał się być nieporozumieniem o wygórowanych ambicjach. Jednak słowo się rzekło i wspomniane BQ Aquaris M10 w wersji Full HD i HD trafiło do klientów. O dziwo zainteresowanie przedsprzedażą opróżniło magazyny z wersji Full HD, a w parę godzin po rozpoczęciu oficjalnej sprzedaży w sklepie trzeba się pośpieszyć, aby stać się posiadaczem bardziej rozbudowanego modelu (dostępnych 442 ~345 sztuk i wciąż maleje).

CPU-X 2.1.1 i prawda o naszym sprzęcie

Niekiedy przewagą programów słabiej wyposażonych w funkcje nad programami rozwiniętymi ponad miarę jest po prostu tempo rozwoju. Społeczność nie lubi zastoju, który może pośrednio prowadzić do zapomnienia o projekcie. A taki zastój obserwujemy ostatnio w fenomenalnym I-Nex wyświetlającym infomacje o naszej maszynie. Kiedy I-Nex wyświetlał niemal wszystko co w pudle siedzi, konkurencyjny CPU-X pokazywał podstawowe info o procesorze. Minęły miesiące, I-Nex nadal pokazuje co pokazywał, a CPU-X nadrobił zaległości.

Terminal pogryzł człowieka: saidar

saidar

O czym śni komputer? Przeważnie oczywiście nie ma czasu na sen, no może na jawie. Niekiedy obciążona przeróżnymi zadaniami maszyna dwoi się i troi, by sprostać naszej aktywności a my dopingujemy ją niewybrednie zza zaciśniętych zębów. A niesłusznie, bowiem wystarczy uruchomić odpowiedni monitor zasobów systemu by stwierdzić, że chwilowe przestoje, zacięcia lub inne przypadki nie są wynikiem leniwego charakteru naszej elektroniki, tylko efektem jej wytężonej pracy. Niemal każdy zaprawiony w bojach miłośnik tekstowych form wymiany informacji zna sztandarowe programy ujawniające nam co się dzieje w systemie – top, htop, iotop i kilka innych. Ale równie miło chwile kontemplowania zajętości zasobów może dostarczyć nam niepozorny saidar.

Czy lekkie środowiska są lekkie?

Problem oszczędnego gospodarowania zasobami naszych maszyn chyba nigdy się nie skończy. Gdy docieramy do rozsądnego kompromisu ilości pamięci w stosunku do zapotrzebowania na RAM naszego środowiska graficznego, nadchodzi rewolucja, nowe funkcje, nowe możliwości i ponownie jesteśmy w miejscu, w którym zastanawiamy się nad dokupieniem RAMu. W przypadku otwartej architektury naszego peceta nie stanowi to problemu. Gorzej, gdy do rzeczonej maszynki nie mamy możliwości dorzucenia kości pamięci. Dodatkowo, oprogramowanie użytkowe też nie stoi w miejscu i rozwijając się, pochłania coraz to kolejne megabajty pamięci roboczej. Stąd też odpowiedni dobór środowiska graficznego to gra warta świeczki. Ale które środowiska są naprawdę lekkie, a które nie?

I-Nex 0.6.6 z Cerberem na smyczy

Każdy kto kiedykolwiek próbował wydobyć z komputera informacje gdzie i jaki podzespół w nim pracuje z pewnością wie, jak zbieranie takich informacji potrafi być zwodnicze i uciążliwe. Setki standardów, kilkadziesiąt sterowników, różne dane umieszczane w różnych miejscach, brak stuprocentowego i konkretnego odniesienia do właściwości sprzętu i danych producenta – to wszystko powoduje, że pod Linuksem dowiedzieć się czegoś o naszej maszynie możemy nieco po łebkach, albo w mocno technicznej i nieczytelnej dla wielu formie. Dlatego to co potrafi robić program I-Nex zakrawa nieraz na technologiczne voodoo – to niepozorne narzędzie rozwijane przez Michała Głowienkę wyświetla takie informacje o naszej maszynie, istnienia których moglibyśmy nawet nie podejrzewać.

Środowiska, dystrybucje i nasze wątłe zasoby pamięci

Jak stwierdzić, która dystrybucja i które środowisko na naszym domowym komputerze będzie sprawowało się najlepiej? Oprócz wielu aspektów moralno-estetyczno-technicznych, uogólniając – kluczowe dla sprawnego działania systemu są moce procesora i ilość dostępnej pamięci RAM. Idąc tropem pamięci – im mniej system pamięci zarezerwuje dla siebie, tym zostanie jej więcej dla uruchamianych przez użytkownika programów. To chyba oczywiste, że przełoży się to na komfort pracy i ogólne odczucia. Należy jednak pamiętać, że oprócz pamięci na sprawność środowiska mają też wpływ inne komponenty sprzętowe, jak choćby karta graficzna (i sterowniki dla niej).Jak zatem uciąć dywagacje jakie środowisko dla naszego komputera będzie najlepsze? Po raz kolejny okazuje się, że najprostsze rozwiązania są najlepsze. Uruchamiając po kolei różne dystrybucje z różnymi środowiskami i zaraz po uruchomieniu systemu porównując objętość zajętej przez niego pamięci RAM. Autor tego oczywistego rozwiązania, posiadając odpowiednie zacięcie i chęci oraz kilka obrazów iso z szerokim spektrum dystrybucji i środowisk, stwierdził co następuje:

    Ubuntu 12.10 (Quantal Quetzal)

  • Unity – 335 mb
  • Lubuntu – 165 mb
    Fedora 17 (Beefy Miracle)

  • Gnome-shell – 335 mb
  • KDE – 277 mb
  • XFCE – 179 mb
    Linux Mint 13 (Maya)

  • MATE – 311 mb
  • Cinnamon – 196 mb
    Bodhi Linux 2.0 (Beta)

  • Enlightenment – 116 mb
    Crunchbang 11 (Waldorf)

  • Openbox – 112 mb

Jak widać, ‚bogate’ środowiska typu Unity, Gnome-Shell i KDE żyją kosztem naszej pamięci (w co chyba nikt nie wątpił). Cieszy natomiast doskonały wynik XFCE, które zyskało miano następcy GNOME2 (czy też kontynuatora). Również dobrze wypada nowoczesny Cinnamon. Mocno optymalizowany Enlightenment wiedzie oczywiście prym i dla osób potrafiących odnaleźć się w tym środowisku, to doskonały wybór. Oszczędni i gotowi na kompromisy funkcjonalne mogą zaprzyjaźnić się ze zlepkiem komponentów zastosowanym w Crunchbang (Openbox, Thunar, itp). I teraz chyba już nikt nie powinien mieć problemów z dopasowaniem środowiska do swojego komputera.

Pomnażanie pamięci RAM

Każdy komputer ma za mało pamięci – ten niepozorny truizm nierzadko obgryza nam kostki, gdy akurat wzrasta nasze zapotrzebowanie na moce przerobowe naszej maszyn. O ile stosunkowo nowe konfiguracje sprzętowe osiągają przyzwoity pułap pamięci RAM (>2GB), o tyle starsze konstrukcje z niebagatelną niegdyś pojemnością pamięci ~1GB wiją się w bólu pod naporem coraz bardziej żarłocznych, nowoczesnych aplikacji. Pomimo przystępnych cen kości pamięci (choć te starsze osiągają notowania na poziomie artefaktów wydobytych z egipskich grobowców), nie zawsze i wszędzie da się dodatkową kość zamontować. I co wtedy?W Linuksie mamy wtedy kilka wyjść. Od użytkowania minimalistycznego pulpitu, okrojonego z nadmiernej automatyki, programów-kombajnów, itp., aż po sprawniejsze zarządzanie wątłymi zasobami naszego komputera. W osiągnięciu tego drugiego założenia pomocny może być sprytny moduł zRam (dawne Compcache), który… zabierze nam pamięć RAM, by oddać ją rozmnożoną. Całość koncepcji opiera się o wykorzystanie leciwej metody użycia partycji SWAP. Zwyczajowo jest to kawałek dysku/pliku, do którego w momentach krytycznych system zapisuje nadmiarowe dane z pamięci. Gdy sytuacja się zaognia, to zrzucanie/pobieranie danych z partycji SWAP wywołuje bóle głowy przy wtórze zawodzącego jęku dysku. Innymi słowy, zapisywanie i odczytywanie z dysku stanowią wąskie gardło dla wymaganego szybkiego i masowego przerzucania danych. Dlatego zRam robi rzecz sprytną, a mianowicie umiejscawia obszar wymiany tam, skąd odczyt i zapis będzie najszybszy. Czyli w pamięci RAM. I teraz najlepsze. Bo jaki to ma sens – zabierać RAM, żeby szybciej działał SWAP, którego potrzebujemy bo mamy za mało pamięci? Sens tkwi w kompresji tych danych. Dzięki temu, zRam wykorzystując, powiedzmy 50MB pamięci RAM, faktycznie przechowuje tam np. 120MB danych. Zresztą wystarczy spojrzeć na poniższe statystyki:

$#./zram_stat.sh
                Current     Predicted
Original:      98M	185M
Compressed:    27M
Total mem use: 29M	55M
Saved:         68M	130M
Ratio:         29%	(28%)

Physical RAM:  743M
Effective RAM: 812M	(873M)

Pozycja Total mem use to ilość zabranej nam pamięci RAM: 29MB. Original to te 29MB po rozkompresowaniu: 98MB. Czyli zysk Saved na czysto uzyskujemy w okolicach 68MB. Może wygląda to niepozornie, lecz i maszyna testowa nie była długo uruchomiona, by w pełni odkryć uroki współpracy z zRam. Tak czy owak, efektywny RAM zwiększył się nam z 743MB do 812MB.

Jednak nie ma nic za darmo. Na potrzeby kompresji danych zużywana jest jakaś cześć mocy naszego procesor. Nie należy też oczekiwać, że zRam dokona cudów na komputerze obdarzonym kością 256MB. Przypuszczalnie jest to najlepsze rozwiązanie dla osób, które oscylują w granicach ~1GB (od 512MB od 1.5GB – 2GB). Opisana metoda nie zastąpi w 100% fizycznej pamięci. To jedynie koło ratunkowe, które w obliczu mocnych procesorów jest mniej uciążliwe niż notoryczne mielenie dyskiem. Jak się sprawdza w praktyce? Na to pytanie każdy będzie musiał sobie odpowiedzieć sam – przy mojej testowej konfiguracji (Celeron 2.4GHz, 768MB pamięci) system odczepił się od dysku i wykorzystywał w granicach 30 – 120MB (czyli po dekompresji 90MB – 220MB). Samodzielną kontrolę zużytych przez zRam zasobów można przeprowadzić wydając polecenia:

swapon -s
cat /sys/block/zram*/*

Do prawidłowego funkcjonowania program potrzebuje podania kilku parametrów, mianowicie liczby posiadanych rdzeni procesora, ilości zamontowanej pamięci, itp. Jednak to wszystko załatwi za nas skrypt startowy, który zainstaluje się wraz z programem i umieści odpowiednie parametry w odpowiednim miejscu podczas uruchomienia komputera. Z instalacją zRam użytkownicy Ubuntu 11.04/11.10/12.04 i Minta 11/12/13 radzą sobie w ten sposób:

sudo add-apt-repository ppa:shnatsel/zram
sudo apt-get update
sudo apt-get install zramswap-enabler

Każdy kto nie może skorzystać z powyższej metod, może pobrać źródła i odpowiedni skrypt ze strony projektu.

Translate »