ZRAM ve ZSWAP: Bellek Sıkıştırmanın İki Temel Okulu
Modern web barındırma ve konteyner altyapılarında bellek (RAM), sunucu maliyetinin en pahalı bileşenidir. Linux çekirdeği, anonim bellek sayfalarını (heap/stack) sıkıştırarak aynı fiziksel donanımda %40 ila %100 daha fazla mikroservis veya WordPress sitesi barındırma imkanı sunar:
- ZRAM (Compressed RAM Block Device): RAM'den bir parça kopararak sanal bir blok aygıtı (
/dev/zram0) yaratır. İşletim sistemi burayı standart bir takas diski gibi görür. Tamamen RAM içinde döndüğü için sıfır disk I/O üretir ve disk ömrünü tüketmez. - ZSWAP (Compressed Writeback Cache): Fiziksel bir takas alanının (swapfile / NVMe swap) önüne yerleşen dinamik bir çekirdek önbelleğidir. Sayfalar diske yazılmadan önce yakalanır ve sıkıştırılır. Havuz dolduğunda en soğuk sayfalar otomatik olarak fiziksel diske tahliye edilir (automatic tiering).
LRU Inversion Tuzağı Neden ZRAM'i Çok Kiracılı Ortamlarda Riskli Kılar?
ZRAM kullanırken sıkıştırılan sayfalar RAM içinde kalmaya devam eder. Birkaç hafta önce çalışmış ve artık ihtiyaç duyulmayan "soğuk" sayfalar ZRAM içinde yer kaplarken; aktif olarak müşteri trafiğine yanıt veren "sıcak" sayfalar fiziksel RAM yetersizliği nedeniyle sıkışabilir. Bu duruma LRU Inversion denir.
ZSWAP ise Linux 6.8+ çekirdeğinde Multi-Gen LRU (MGLRU) ve cgroups v2 bellek denetleyicileri ile kusursuz entegredir. Zswap havuzu şiştiğinde, gerçekten terk edilmiş soğuk sayfalar açılarak NVMe diske gönderilir ve değerli fiziksel RAM aktif web süreçlerine teslim edilir.
NVMe SSD Aşınması ve TBW (Terabytes Written) Tasarrufu
Geleneksel disk takas alanları (swap) yüksek bellek baskısı altında NVMe SSD diskleri sürekli yazma döngüsüne sokar. Bu durum ucuz kurumsal disklerin TBW (yazma ömrü) limitlerini aylar içinde doldurabilir. ZSWAP, takas edilen sayfaların %80 ila %92'sini RAM sıkıştırma havuzunda tutarak diske ulaşmasını engeller. Böylece hem milisaniye düzeyindeki disk I/O beklemesi (iowait) bertaraf edilir hem de disk donanımı korunur.