Tło problemu
Tak się składa, że apetyt programów i systemów na pamięć RAM systematycznie rośnie, a moje desktopy ilością RAMu nie grzeszą. Faktem jest, że RAM jest teraz tani i praktycznie nie sposób kupić nowego komputera z mniej niż 2-4 GB RAM (chyba, że netbook jakiś), ale… nie każdy sprzęt jest nowy (mój nie jest), nie każdy pozwala na większą ilość RAM no i – przede wszystkim – inwestowanie w stosunkowo drogi, stary RAM do równie starego sprzętu nie ma IMO sensu. A skoro działa, to po co wymieniać? 😉
Poza tym, Linux potrafi działać na komputerach z małą ilością RAMu. Przynajmniej powinien umieć. W każdym razie możliwa jest w miarę komfortowa praca na desktopach z 0,5-1 GB RAM, nawet z KDE (3.5). Chociaż ostatnio pożegnałem się z KDE i zwykle używam LXDE. Oczywiście zależy, co się robi, ale przy typowym korzystaniu, typu włączenie komputera, uruchomienie paru programów (komunikator, przeglądarka WWW, konsola, coś do PDF, jakiś arkusz kalkulacyjny czy edytor tekstu itp.) i wyłączenie komputera na koniec dnia, wszysko było OK. Nawet na 0,5 GB nie odczuwałem specjalnego spowalniania i wykorzystania swap (czasem się zdarzało, ale nie jakoś krytycznie), ale odkąd korzystam z laptopów, hibernacji lub niewyłączania komputera, jest znacznie gorzej.
Główni winowajcy (na laptopie firmowym) to: Firefox 4 – 21% RAM, Icedove – 7,5%, Xorg – 5,4%, plugin-container (czytaj: flash) 3,8%, psi – 3,4% i konsole 2,8%. Na prywatnym lapku podobnie, tylko Firefox 3.6 zajmuje 11%, i dochodzi Chromium 6,7% (najwyższe wystąpienie, jest ich kilka) i liferea 5,4%. Niby nic specjalnego, ale po kilkunastu dniach okazuje się, że na swapie użyte jest 100-400 MB, a przy odpaleniu jakiejś większej aplikacji (czytaj Openoffice) dysk zaczyna ostro pracować. Przy czym dyski w laptopach to zwykle 5400 rpm, więc raczej nie są demonami szybkości… Jednak najgorsze dzieje się przy instalacji aktualizacji. Polecenie wajig daily upgrade praktycznie zabija maszynę, do tego stopnia, że chwilowo traci responsywność – trzeba czekać na przełączenie się między oknami, kursor myszy nie porusza się płynnie itp.
Podejście pierwsze: zmiana parametru swappiness
Określa on, jak chętnie system korzysta ze swap na dysku i przyjmuje wartości od 0 do 100 (szerszy opis parametru swappiness i dyskusja). Domyślnie wynosi on 60, co niekoniecznie jest wartością dobrą dla desktopa. Jak widać, trwa spór o to, czy lepiej ustawić 0 czy 100. Wyszedłem z założenia, że 0 jest lepszą wartością.
Tymczasowe ustawienie wartości swappiness na 0:
echo 0 > /proc/sys/vm/swappiness
Sprawdzenie aktualnego ustawienia:
cat /proc/sys/vm/swappiness
Jeśli chcemy, aby zmiana była wykonywana przy każdym uruchomieniu, to do /etc/sysctl.conf dodajemy linię:
vm.swappiness = 0
Dla jasności: ustawienie swappiness na 0 nie powoduje, że system w ogóle nie korzysta ze swap. Korzysta, jeśli musi tylko mniej chętnie w normalnych warunkach. Efekt: większość czasu jest lepiej, widać, że system praktycznie nie korzysta ze swap. Niestety, jak już zacznie korzystać, to utrata responsywności jest większa, niż przy domyślnej wartości 60 (ocena metodą najdoskonalszą, czyli na oko), więc nie do końca o to mi chodziło.
Podejście drugie: dodanie compcache
Okazało się, że w Debianie w końcu pojawił się compcache w postaci pakietu o nazwie compcache-tools. Pakiet jest nieco śmieszny (tzn. kwalifikuje się to na bug report…), bo działa na kernelu 2.6.32 ze Squeeze, natomiast na 2.6.38 z testing/unstable brakuje modułu, choć sam pakiet właśnie testing/unstable jest. W skrócie – działa to tak, że zamiast po prostu zapisywać dane z RAM na dysk, najpierw dodatkowo je kompresuje (w RAM), a dopiero potem ew. zrzuca na dysk. Czyli większe użycie procesora w zamian za mniejsze zużycie pamięci i mniej operacji na dysku.
Aktywacja compcache (nieco inna, niż w manie, wersja z mana z insmod nie działała):
modprobe ramzswap
rzscontrol /dev/ramzswap0 --memlimit_kb=153600 --backing_swap=/swapfile.swp --init
swapon /dev/ramzswap0
Kolejno: załadownie modułu, określenie parametrów i inicjacja kompresowanego swap (tu: 150 MB RAM i wykorzystanie swap w pliku /swapfile.swp), aktywacja swap. Miałem to włączone przez kilkanaście dni, łącznie ze swappiness 0, ale nie podejmuję się oceny. IMHO niespecjalnie się różni od gołego zmniejszonego swappiness. Natomiast po reboocie system podziałał z 2 dni (bez włączonego compcache) i… system plików (reiserfs) przemontował się w RO. Fsck znalazł błędy, przebudowanie drzewa naprawiło, ale… zgubił 76 plików – i tak były niedostępne (nic krytycznego, głównie moduły Perla).
WTF? Przecież nigdy wcześniej takich cyrków nie było. Co więcej, przy próbie włączenia compcache otrzymałem komunikat typu backing swapfile has holes. To z kolei naprowadziło mnie na ten opis problemu. Niestety, pasuje idealnie, co skutecznie zniechęciło mnie – przynajmniej na jakiś czas – do zabaw z compcache. Odkryłem co prawda nieużywaną partycję swap, której mógłbym użyć, zamiast pliku, ale najpierw doczytam dokładnie. Uszkodzenia systemu plików to nie jest to, co tygrysy lubią najbardziej.
The end?
Zanim będę kontynuował, pozwolę sobie zapytać, jakie ustawienia parametru swappiness i ew. inne ustawienia proponujecie dla desktopa z Linuksem i LXDE, stosunkowo mocnym procesorem i stosunkowo małą ilością pamięci RAM (1 GB)?
W tekście jest błąd: w jednej linii jest „echo 100 /proc/sys/vm/swappiness” a zaraz poniżej „vm.swappiness = 0”. Trzeba zgadywać do autor miał na myśli 😉 Z jednej strony ustawienie swapiness na 100 i utworzenie swap w ram (ramzswap) jest tak samo nierozsądne jak ustawienie swapiness na 0 (brak swapowania) przy niewielu MB RAM’u w komputerze.
No moja fedorka spokojnie chodzi z Thunderbirdem, FF+15kart, DeadBeefem i innymi zjadaczami po 15mb (gnome-do,naut,pidgin) na ~50% ramu (z 1GB). Nie uzywam hibernacji bo dziala losowo – nie wiem czym jest to spowodowane ;P
Moze to tez rozwiazanie ? 😛 W sumie szybkosc wlaczania komputera nie ma az takiego znaczenia. Robię to raz, góra kilka razy dziennie. Max 5min dziennie straty – lol ale dużo. Kto się nie zgadza – dobra – to może jeszcze śpi od 11 do 5 bo tak jest najefektywniej ? Albo goli się podczas jazdy samochodem, bo wieczorem kończy 5raport albo programuje Windows10.
Wiecie, mi sie wydaje(moze z wlasnego doswiadczenia, bo pracuje na laptopie z 1gb pamieci ram), ze wystarczy odpowiednio dobrac aplikacje. Mniej graficznych, wiecej konsolowych. Zamiast FF/Opery – Midori. Komunikacja, zamiast pidgina, finch, ekg2, centerim, zamiast graficznego odtwarzacza muzyki mpd albo moc i moge tak w kolko. Ja u siebie zadko kiedy uzywam wiecej jak 300MB Pamieci.
Pozdrawiam, fi9o.
@pijoter: 100 – 0 – dzięki, poprawione. Czemu swappiness na 0 jest nierozsądne przy względnie małej ilości RAM? To nie jest brak swapowania (do tego swapoff -a bym musiał użyć; sprawdzone empirycznie), tylko określenie, „na ile chętnie” system przenosi zawartość RAM na swap.
@alkuzad: Cóż, mi hibernacja jednak działa (tzn. przywraca się zawsze z hibernacji, jedyne co, to potrafi nie umieć się zahibernować po zmianie kernela). Sam czas włączenia i zamknięcia systemu faktycznie byłby pomijalny, ale jak do tego dodam czas uruchomienia aplikacji, zalogowania się do serwisów, to robi się nieciekawie i wolę hibernować, po prostu. Nawiasem, różnica 3 minut dziennie, codziennie, to 18h w ciągu roku. Cant waste no time. 😉 Jasne, mogę robić reboot co tydzień, problemu pewnie nie będzie, ale to takie średnio eleganckie rozwiązanie.
@fi9o: Są dobrane, generalnie. Fx jest wygodny, po prostu. Chromium jest lekkie, generalnie (i chcę mieć osobne przeglądarki do pewnych rzeczy). W pracy mam Psi, bo potrzebuję powiadomień wyskakujących – konsolowe komunikatory średnio to potrafią (BTW, jak już szukasz czegoś lekkiego, to polecam bitlbee – rozie.blox.pl/2011/02/BitlBee-czyli-ostateczny-klient-CLI-do-wszytkiego.html – sporo lżejszy od centerim, który – pewnie za sprawą historii – potrafił żreć sporo RAM). MPD jest w użyciu (+GMPC). Nie chodzi o to, by się katować konsolą (która czasem jest wygodna, a czasem niekoniecznie), tylko żeby stuningować system. Do mniej więcej tygodnia wszystko działa OK, schody zaczynają się później.
Fakt gdy mamy małą ilość ram w sprzęcie, praca zaczyna robić się uciążliwa.Wiem jak to jest często korzystam z mojego laptopa c600 a wraz z nim linuxy,które lubię testować,lecz najbardziej dobija mnie fakt iż producenci pcmcia nie tworzą oprogramowania na linuxy.
leppakaklifoth.blogspot.com/
Debian Squeeze z tej strony, XFCE, odpalony Firefox (też ok. 15 zakładek), Thunderbird, Pidgin i DeaDBeeF i na P4 2.8 GHz z 1 GB RAM zużywa 30% pamięci wszystko ;d
Swappiness na 10, powyłączane wszystkie TTY poza trzema, powyłączane wszystkie zbędne usługi, w Fx NoScript i AdBlock, więc reklamy mnie nie obciążają.
I zazwyczaj chodzi dobrze, chyba, że odpalę jakąś grę. Aczkolwiek to desktop i nie chodzi dłużej niż 20 godzin bez przerwy :p
To mi pomogło:
http://www.linuxjournal.com/article/8308?page=0,0
http://www.linuxjournal.com/article/8317?page=0,0
http://www.linuxjournal.com/article/8322?page=0,0
Alternatywą jest jeszcze xfce (gnomish look, funcjonalne i lżejsze) i fluxbux, claws-mail jest w miarę lekkim mailerem (albo mutt/alpine w konsoli), jako player mpd + jakiś klient (lub plugin do przegladarki w roli klienta). Albo dokupić RAM, jeżeli to DDR2 to nie taki drogi a sporo poprawia komfort ;]
@Van: Dzięki, przejrzę linki, dam znać (pewnie za kwartał), co wyszło. Mam LXDE, więc chyba nawet lżej niż XFCE. Adblock obecny, Noscript – jeszcze nie (może być to celna uwaga). Ale trochę flasha jednak potrzeba (i JS też…), niestety. Tylko normalnie (raz na dobę wyłączenie) nie ma problemu – problem zaczyna się przy uptime rzędu kilka(naście) dni.
@XANi: LXDE. Thunderbirda akurat lubię. MPD jest w użyciu. Dokupienie RAM – nie bardzo ma sens: SDRAM jeszcze, ew. pierwsza wersja DDR, więc korzystniej wymienić całość, po prostu… Albo firmowy lapek i nie bardzo mam wpływ na jego rozbudowę. Bardziej chodzi o „co jeszcze można poprawić w systemie, by było lepiej, bez zakupów”.
Wybaczcie naiwne pytanie, ale co wy robicie, że dla was 1 GB pamięci RAM to mało? Mam zainstalowanego Debiana Squeeze z środowiskiem graficznym GNOME. Całość stoi na maszynie napędzanej przez procesor AMD Athlon XP 2000+ (1,64GHz) i 1 GB pamięci RAM i to właśnie procesor jest wąskim gardłem komputera, a nie ilość pamięci. Całość po starcie systemu zużywa niecałe 98MB, a podczas pracy mam problem z przekroczeniem 400 MB nie mówiąc już o używaniu pamięci wymiany. Jeszcze nie widziałem, by kiedykolwiek wartość tamtej przekraczała zero, a żadnych zmiennych nie zmieniałem, wszystko działa na standardowym jądrze z repozytorium. Przy uruchomionym Nautilusie, rozmowie na Pidginie, Firefoksie z 10 zakładkami, Gedicie, arkuszu kalkulacyjnym OpenOffice.org, Gnome-Terminalu, otworzonej skrzynce w Evolution i muzyce z odtwarzacza Rhythmbox zajmuje niecałe 350 MB. Podejrzewam więc, że i 512 MB spokojnie by mi wystarczyło, bo zazwyczaj nie mam aż tylu programów otworzonych na raz. Żeby nie być gołosłownym:
imageshack.us/f/219/zrzutekranug.png/
imageshack.us/f/807/zrzutekranu1m.png/
Jak to jest? Może ja coś źle robię?
@blind: Mam też desktopy z 0,5 GB RAM i dają radę (ale są wyłączane codziennie). Jaki masz uptime? Jak mam dzień-dwa, to też swapa praktycznie nie dotyka… Co do wartości – różnimy się sposobem pomiaru. Wg top w tej chwili mam używane 830 MB RAM i 83 MB swap. Wg gnome system monitor z którego korzystasz – odpowiednio 450 MB i 81 MB więc różnica dla RAM spora, nawet zaokrąglając i pomijając 1000 vs. 1024, takie tam). Procesy – też są rozbieżności, choć mniejsze.
@rozie
Spoko, Noscript wyłącza domyślnie wszystkie skrypty na wszystkich stronach, ale w bardzo prosty sposób możesz odblokować te, z których korzystasz, a nie odblokowywać np. reklam.
Główne rzeczy żrące RAM na desktopie to w sumie java, flash i niektóre opasłe aplikacje (np takie banshee od razu po starcie żre jakieś 130 MB RAM, rhuthmbox jakieś 100MB) ale 1GB RAMu jeszcze nie jest źle, póki nie próbujesz odpalać OO/LO i przeglądarki na raz ;]
@XANi: Javę zdarza się odpalać i w domu, i w pracy. Flash – podobnie. Ale to nie powinno być problemem przy prawidłowym działaniu, bo po ich zamknięciu pamięć powinna być zwalniana. Co prawda już widziałem zalecenia co do częstego restartu Fx, zwł. przy hibernacji (grzglo.jogger.pl/2011/05/10/czy-czyszczenie-pamieci-zuzywanej-przez-firefoksa-dziala/), ale mam wrażenie, że niektóre aplikacje (Xorg?) po prostu ciekną. Może nie tak spektakularnie jak NM na Ubuntu (z którego nie korzystam – wicd na razie; bugs.launchpad.net/ubuntu/+source/network-manager-applet/+bug/780602), ale jednak trochę…