Linux może dostać więcej RAM-u bez dokładania RAM-u. Oto jest CRAM


Linux może dostać więcej RAM-u bez dokładania RAM-u. Oto jest CRAM

Kompresowanie danych w pamięci RAM nie jest niczym nowym. Linux od lat korzysta m.in. z ZRAM i zswap, dzięki którym można zmniejszyć zużycie fizycznej pamięci bez natychmiastowego przerzucania danych na znacznie wolniejszy dysk. Problem w tym, że oba rozwiązania są mocno związane z mechanizmem swap. Zespół Gregory'ego Price'a z Meta zaproponował więc inne podejście o nazwie CRAM.

Pomysł jest pozornie banalny: skoro największym problemem nie jest samo kompresowanie danych, ale obsługa błędów stron pamięci i operacji związanych ze swapem, to dlaczego nie przechowywać skompresowanych danych cały czas w RAM-ie i traktować ich jak zwykłą pamięć?

Największe wrażenie robią jednak same wyniki testów, bo w scenariuszu odczytu CRAM osiągał 452-krotną przewagę.

CRAM zamiast udawania dysku

CRAM wykorzystuje mechanizmy już obecne w jądrze Linuksa, ale zamiast prezentować skompresowaną pamięć jako urządzenie blokowe, korzysta z prywatnego węzła NUMA. Dzięki temu system może stosować standardowe mechanizmy zarządzania pamięcią, w tym migrację stron czy ballooning. Jednym z ciekawszych elementów projektu jest tzw. „Chicken Bit”, ponieważ pozwala on tymczasowo wyłączyć korzystanie z CRAM, gdy system ma problemy z przydzielaniem pamięci. To zabezpieczenie przed sytuacją, w której rosnące zapotrzebowanie na pamięć wywołałoby lawinę kolejnych błędów i doprowadziło do tzw. „poison storm”.

Nawet 452 razy szybciej niż ZRAM

Największe wrażenie robią jednak same wyniki testów, bo w scenariuszu odczytu CRAM osiągał nawet 489 mln operacji na sekundę, podczas gdy ZRAM około 1,1 mln. Daje to około 452-krotną przewagę, choć trzeba pamiętać, że mówimy o najlepszym przypadku i odczytach.

Przy obciążeniu obejmującym również zapisy przewaga jest znacznie mniejsza, bo przy 20% zapisów CRAM było około 5,4 raza szybsze od ZRAM. Wynika to z konieczności przenoszenia danych z powrotem do właściwej domeny NUMA przed ich modyfikacją. Bez tego zapis mógłby uszkodzić skompresowane dane.

Czy CRAM trafi do Linuksa?

Projekt jest szczególnie interesujący dla dużych serwerów, co nie dziwi, biorąc pod uwagę jego pochodzenie z Meta. Potencjalnie może jednak znaleźć zastosowanie również w znacznie słabszych maszynach. ZRAM jest przecież wykorzystywany także w dystrybucjach Linuksa uruchamianych na urządzeniach o ograniczonej ilości pamięci, takich jak Steam Deck.

CRAM nie jest jeszcze gotowym zamiennikiem ZRAM i twórcy nadal muszą rozwiązać m.in. problem określania rzeczywistej ilości dostępnej pamięci przy zmiennej kompresowalności danych. Jeśli jednak uda się dopracować implementację, Linux może otrzymać znacznie wydajniejszy sposób na zwiększenie efektywnej pojemności RAM-u, bez konieczności sięgania po swap na dysku.

Pokaż / Dodaj komentarze do:

Linux może dostać więcej RAM-u bez dokładania RAM-u. Oto jest CRAM
 0