Scenariusze użytkowania pulpitu Zswap, Zram, Zcache

12

Próbowałem zrozumieć różnicę w przypadkach użycia Zswap, Zram i Zcache. Z góry przepraszam za długie / nieco niechlujnie sformułowane pytanie. Zrobiłem sporo googlingu i rozumiem, że zram jest w zasadzie blokowym urządzeniem do skompresowanej wymiany, podczas gdy zswap kompresuje się w jądrze za pomocą interfejsu frontswap. Wydaje się, że jedną z zalet zswap jest to, że może przenieść niektóre strony do wymiany kopii zapasowej, gdy jest pod presją w sposób LRU, podczas gdy zram nie może tego zrobić (proszę potwierdzić, nie jestem pewien, czy to prawda).

Oto moje pytanie: 1.) Jako użytkownik pulpitu, jaka jest różnica w wydajności między zcache / zswap / zram, zwłaszcza zswap i zram? Na przykład, czy jest jeden lepszy / gorszy fragmentacja pamięci (taka, która prowadzi do nadmiernego zużycia pamięci i marnotrawstwa)?

Pytanie dodatkowe: 2.) Czy istnieje prawdopodobnie idealna kombinacja powyższych (powiedzmy, zram + zswap lub zram + zcache) dla wydajności pulpitu (w tym responsywności pulpitu oraz minimalnie zakłócającego zachowania zamiany i rozsądnego zarządzania pamięcią)?

* Cytowanie źródeł jest bardzo mile widziane.

Powinienem dodać, że jestem przyzwoitym użytkownikiem Linuksa (5 lat) i starałem się naprawdę zrozumieć, jak działa mój system wraz z jądrem. Jednak nie jestem programistą i mam bardzo podstawową wiedzę programistyczną (3 kredyty na studiach). Ale bądź techniczny, jeśli potrzebujesz; Rozpatrzę twoje znaczenie w moim własnym czasie.

Specyfikacja systemu:

Linux Mint 15
Processor:Core 2 Quad 6600 (2.4ghz)
Ram: 8G
linux kernel: liquorix 3.11 series
Storage: 128 GB SSD, 1TB HDD 5400rpm

Proszę nie komentować „kup więcej pamięci RAM”! Zmaksymalizowałem pamięci RAM na tej płycie głównej i mam budżet aktualizacyjny 0 USD w dającej się przewidzieć przyszłości. Lubię jednak utrzymywać otwarte programy intensywnie korzystające z pamięci (wiele przeglądarek jest głównymi odbiorcami mojego ram), więc nie mam nic przeciwko zamianie w rozsądnych granicach obniżenia wydajności.

Królikarnia
źródło

Odpowiedzi:

7

Najlepszym sposobem, w jaki mogę spróbować odpowiedzieć na te pytania, jest powiedzieć, jakie są te trzy rzeczy.

zRAM

ZRAM to w istocie tylko urządzenie wymienne. Zarządzanie pamięcią wypchnie strony do urządzenia wymiany, a zRAM skompresuje te dane, przydzielając pamięć w razie potrzeby.

Zswap

Zswap to skompresowana przestrzeń wymiany, która jest przydzielana wewnętrznie przez jądro i nie pojawia się jako urządzenie wymiany. Jest używany przez frontswap w taki sam sposób, w jaki można zastosować urządzenie wymiany, ale w bardziej wydajny sposób.

Zcache

Zcache jest nakładką na frontswap i cleancache.

Zcache zastępuje ZRAM, więc tak naprawdę nie chcesz, aby obaj walczyli o zasoby, chociaż mówi się o tym, jak mogą one dobrze współpracować w odpowiednich okolicznościach. Na razie nie zawracałbym sobie głowy próbowaniem i pozostawienie tego ekspertom, żeby to wymyślił.

Trochę czytania:
Cleancache vs zram?
https://lwn.net/Articles/454795/
https://www.kernel.org/doc/Documentation/vm/zswap.txt
http://www.zeropoint.com/Support/ZCache/ZCachePro/ZCacheAdvantages.html

Osobiście właśnie wyłączyłem ZRAM i włączyłem Zcache na wszystkich moich systemach, które mają wystarczająco nowe jądro (ZRAM jest nadal włączony na urządzeniach z Androidem).

Jeśli chodzi o wydajność: to jest coś, co trzeba spojrzeć w siebie. Wszyscy są inni. Teoretycznie Zcache powinien być o wiele bardziej wydajny pod względem pamięci niż ZRAM i działa na dwóch poziomach (frontswap i cleancache) i może w razie potrzeby wyświetlać strony do urządzenia wymiany (na przykład na dysku twardym). Możesz także wybrać algorytm kompresji, który ma być używany, jeśli powinien używać zbyt dużo procesora (czego nie wyobrażam sobie).

Aktualizacja : Zcache został usunięty z jądra 3.11 (na razie), więc zRAM ponownie stał się jedyną opcją w nowszych jądrach. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1256503/comments/3 http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git / commit /? id = 96256460487387d28b8398033928e06eb9e428f7

Ken Sharp
źródło
1
Zswap jest włączony w najnowszych jądrach poprzez dodanie zswap.enabled=1do wiersza poleceń Linuksa.
Ken Sharp,