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.
Co odpowiada za taki stan rzeczy? Oczywiście postęp. Ale wystarczy szybki rzut okiem na listę aktualnych procesów i programów startowych, aby zauważyć dwie kwestie. Po pierwsze, programy startowe zostały skrzętnie ukryte przed naszą krytyczną oceną. Aby je ujawnić na nowo, należy wykonać polecenie:
sudo sed -i 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop
Potem jest już łatwiej, bo aktywujemy Dasha (lub inne menu) i odnajdujemy Programy Startowe. W przywołanym oknie ujrzymy listę programów, które są „systemowe” i uruchamiane przy każdym naszym zalogowaniu. Jeżeli jednak skojarzymy niektóre nazwy i dane jest nam szczęście posługiwania się w pełnym wymiarze naszym wzrokiem/słuchem/palcami, możemy wyłączyć niektóre z technik wspomagających osoby niepełnosprawne. Spokojnie możemy z list odznaczyć Accessibility Profile Manager Indicator, Onboard, Orca Screen Reader. Niby niewiele, ale w ogólnym rozliczeniu przyczyni się i do szybszego startu systemu i zaoszczędzenia kilku megabajtów więcej.
To dopiero czubek góry ułatwiających nam życie dodatków. Przyglądając się liście działających procesów, zauważymy swojsko brzmiące nazwy „evolution-*” oraz „gnome-software”. Zastanawiające jest to szczególnie wtedy, gdy nie mamy uruchomionego menadżera oprogramowania oraz nie korzystamy (w ogóle) z programu pocztowego Evolution. Co te procesy robią w pamięci naszego komputera? Cóż, ujmując rzecz dyplomatycznie – działają z wyprzedzeniem i w oczekiwaniu na naszą chęć skorzystania z ich możliwości. Nie przeszkadza im to okupować niemal 300 i więcej megabajtów.
#~$ ps -eo rsz,comm |egrep ‘gnome-software|evolution’ | sort -n
19464 evolution-addre
19840 evolution-addre
27652 evolution-sourc
50240 evolution-calen
51028 evolution-calen
60012 evolution-calen
93360 gnome-software
Takie zachowanie tych komponentów doczekało się już bardziej dosadnej nazwy i otrzymało status oficjalnego błędu, który od jakiegoś czasu widnieje na Launchpadzie. Bo w miarę korzystania z komputera, te procesy potrafią „puchnąć” jeszcze bardziej i jeszcze bardziej uniemożliwiać nam wydajną pracę. Niemniej, jeżeli potrafimy się obyć bez graficznego menadżera oprogramowania, możemy usunąć Gnome-software i/lub zainstalować w jego miejsce stary dobry Synaptic. Trefne procesy evolution-* służą do synchronizowania naszego kalendarza i innych usług oferowanych przez Google (książka adresowa). Jeżeli nie zamierzamy korzystać z takiej funkcjonalności, możemy te programy… No właśnie, nie odinstalować, bo to są mocne zależności dla środowiska GNOME (paczka evolution-data-server i evolution-data-server-common). Dlatego póki co, najskuteczniejszym sposobem jest uniemożliwienie im wystartowania. Czy to przez usunięć, czy też przez zmianę nazwy – ale można to zrobić mniej więcej w ten sposób:
sudo mv /usr/share/dbus-1/services/org.gnome.evolution* /var/backups/
Tym oto harcerskim sposobem pozbyliśmy się natrętów (zawsze można przywrócić te usługi kopiując je z powrotem z /var/backups/ do /usr/share/dbus-1/services/).
Co nam to wszystko dało i czy w XXI wieku warto bawić się w takie optymalizacje? To już musimy zadecydować osobiście. Na mojej instalacji Ubuntu udało się w ten sposób zmniejszyć zużycie pamięci z początkowych 900MB do 490MB. Różnica jest jednak spora i o ile nie posiadamy 8GB – 16GB na pokładzie (co też po pewnym czasie może być za mało), warto rozważyć samodzielne poprawki w systemie.
Fakt że komputery coraz częściej posiadają przynajmniej 8GB RAM nie powinno wcale zwalniać twórców od optymalizacji, wręcz przeciwnie. Za przykład kiedyś mógłbym dać sprzęt Apple miałem telefon z ich oprogramowaniem chodził bajka natomiast z jakimś odblokowanym system już tak fajnie nie było ale producent widać że przygotował soft pod sprzęt. Jako odwrotny przykład śmiało można podać produkt Adobe PS, ciężki moloch z niepotrzebnym śmieciem w środku czyli mało optymalizacji. Oczywiście ja zatrzymałem się dobrych lat parę z tymi produktami i nie wiem jak obecnie to działa i czy rolę się odwróciły. Może ktoś kto korzysta lub korzystał niedawno z obu mógłby potwierdzić czy coś się zmieniło?
to jest dziwne ze android zabiera mi 600MB z 1G a linux na tej samej maszynie zabiera 420MB ze srodowiskiem graficznym mate.
U mnie bardzo dużo ramu żre Google Chrome.Po zamknięciu przeglądarki zużycie spada nawet o 3 GB.
No muszę przyznać że nie tylko ja dostrzegam “spiski żarówkowe” – naprawdę niezłe artykuły o software’owym powiększaniu RAM.
Teraz przydałby się taki artykuł, który opisywałby start systemu i możliwości pozbycia się ze startu niechcianych procesów/aplikacji i skracałby do minimum start systemu. Chodzi mi o start samego systemu bez x-ów, do momentu logowania do bash.
Jakiego systemu? Wiele zależy od kernela, ustawień programu rozruchowego, ustawień menedżera usług (systemd, openrc)… W końcu też samego skompillowania paczek (a może na początku). Ze względu na to, że wiele systemów ma swoje ustawienia, nadto wiele osób wykorzystuje swoje ustawienia usług nie istnieje i nie może istnieć jeden poradnik co zrobić, by start był szybszy. To się robi na konkretnym komputerze, o którym dokładnie się wie jakie usługi są podnoszone i muszą być podnoszone, w jakiej kolejności itp. itd. Większość tego (jeśli prawie nie wszystko) opisane jest w dokumentacji np. systemd (dla administratorów) czy w man.
Dam Ci tylko przykład. Mam systemd i system CUPS podnoszony przy starcie (nie chce mi się za każdym razem go włączać przed drukowaniem, choć byłoby to sensowne rozwiązanie z punktu widzenia przyspieszenia startu). Normalnie CUPS jest zarządzany przez plik usługi (*.service), który w przypadku uruchamiania komputera z niepodłączoną drukarką powodował kilkusekundową zwłokę (swoją, bo inne usługi startowały – to jest systemd). Zmieniłem na socket i CUPS startuje bez zbędnej zwłoki. Podobnie jeśli np. masz mlocate w systemie i masz to standardowo ustawione, to pierwszy start do Xów (tzn. nie otwieram ich) wykonany danego dnia na komputerze, który wyłączony był przed godz. 24 poprzedniego będzie trwał dużo dłużej niż następny. Można to przestawić i uruchamiać wówczas, gdy zwykle masz włączony komputer. Itd. itp. Jednej (czy zespołu “jednych”) rady nie ma, bo każdy komputer, każdy system się różni. Masz do wyboru sięgnąć po różne materiały źródłowe (np. wiki Archa, Fedory, czy OpenSUSE jeśli chodzi o systemd, czy Gentoo jeśli chodzi OpenRC itd.) i zrobić to samemu, albo zlecić to komuś, kto się na tym zna. “Zaocznie” nikt się w ogóle czegoś takiego nie podejmie zrobić w Twoim systemie, bo zwyczajnie prawdopodobieństwo sukcesu jest loterią.
Przecież można to cholerstwo wywalić z gnoma bez problemu. Zawsze tak robiłem, bo evolution startowało na innych desktopach też i zajmowało pamięć. To, że instaluje się to razem z całym gnomem nie znaczy, że nie da się tego wyinstalować. Całe evolution z gamą zależnych pakietów nie jest potrzebne do prawidłowej pracy gnoma i system lepiej zachowuje się bez nich.
Siedziałem pod Lubuntu 16 LTS i mając 2 GB ramu. Na starciem w pamięci ma 400 MB, jak włączałem przeglądarkę to po pewnym czasie zbierało sie do 2GB i zaczął używać SWAP. Wtedy wystarczyło wyjść z przeglądarki i ram wracał do 400 MB. Teraz wymieniłem sprzęt i mam 8 GB, z przyzwyczajenia używam LUBUNTU. Problem w tym, że cokolwiek użyję zostaje w pamięci. Po paru godzinach użytkowania pamięć mam zapchaną i nawet po wyłączeniu wszystkiego (głównie przeglądarki) pamięć spada już do 1 GB. Jak się znów zapełni i wszystko wyłączę spada do 2GB, i tak dalej. Czy jest w lubuntu mechanizm automatycznego czyszczenia pamięci lub program który by tego pilnował?