W połowie poprzedniego roku chodził mi po głowie pomysł, żeby w prywatnym desktopie wymienić pamięć z 32 GiB na 64 GiB albo nawet 128 GiB, nie dlatego żebym tego potrzebował, raczej na zapas. Przy obecnych cenach RAM-u taki zakup mocno odbił by się na kieszeni, więc mam nadzieję, że nie będę do niego zmuszony.
Być może ratunkiem na drogi RAM jest zram czyli moduł jądra Linux, który pozwala tworzyć urządzenia blokowe w RAM-ie, których zawartość jest kompresowana w locie. Jednym z zastosowań takiego rozwiązania jest utworzenie skompresowanej przestrzeni wymiany w RAM-ie. Sens tego jest taki, że w momencie gdy system zaczyna swapować to używa do tego szybkiego RAM-u, ale dzięki kompresji potrzebuje go wyraźnie mniej.
Od początku grudnia testuję zram na trzech komputerach (dwa razy Debian, jedno Ubuntu). Póki co jestem pod wrażeniem tego rozwiązania, bo odczuwalnie przesuwa granicę wykorzystania pamięci RAM, przy którym używanie komputera jest komfortowe. Jednocześnie jak dotąd nie zauważyłem żadnych problemów wynikających z używania zram.
Przykładowo, na służbowym laptopie z 32 GiB RAM -u po przekroczeniu 26 GiB system zaczynał zrzucać pamięć na dysk, ale bez odczuwalnego spowolnienia, a powyżej 30 GiB cały system stawał się mniej responsywny. Po włączeniu zram nawet przy wykorzystaniu 35 GiB pamięci system wciąż działa płynnie.
Stopień kompresji przy użyciu algorytmu lz4 oscyluje w okolicach 3:1, zazwyczaj nieco powyżej, a czasami trochę mniej. Poniżej przykładowy wynik polecenia zramctl, które pokazuje aktualne statystyki:
NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4 12,4G 6G 1,8G 2G 12 [SWAP]
Jak widać, aktualnie w przestrzeni wymiany jest 6 GiB danych, ale zajmują one tylko 1,8 GiB.
Póki co nie włączyłem zram na serwerach z Proxmoxem, bo doszukałem się informacji o potencjalnych problemach, a na szczęście do serwerów kupiłem RAM ze sporym zapasem kiedy był tani.