# DroidForge
Tweaking & Kinerja

Audit Alokasi Memori Android: Perbandingan zRAM LZ4 vs ZSTD dan Mekanisme LMKD

T Tim Riset DroidForge
Diperbarui:
9 min read
Daftar Isi Artikel

Tantangan Manajemen RAM pada Arsitektur Komputasi Mobile

Manajemen memori fisik (RAM) pada sistem operasi seluler memiliki karakteristik yang sangat berbeda dibandingkan lingkungan komputer desktop atau server. Pada komputer tradisional, ketika kapasitas memori fisik hampir penuh, sistem operasi dapat mengeksekusi swapping halaman memori anonim (anonymous pages) ke media penyimpanan sekunder seperti Hard Disk Drive (HDD) atau Solid State Drive (SSD).

Pada perangkat seluler berbasis Android, penggunaan swap file konvensional pada penyimpanan flash internal (eMMC/UFS) dihindari secara mutlak. Siklus penulisan swap yang intensif akan mempercepat keausan silikon flash memori (wear-out) akibat batas Write Endurance yang terbatas. Sebagai gantinya, kernel Linux Android menerapkan kompresi memori virtual di dalam RAM itu sendiri menggunakan modul zRAM.

Arsitektur zRAM: Mekanisme Kompresi Halaman Memori Virtual

Modul zRAM membuat perangkat blok virtual berbasis RAM (misalnya /dev/block/zram0) yang bertindak sebagai area swap berkecepatan tinggi. Ketika subsistem kernel memory management (kswapd) mendeteksi tekanan memori (memory pressure), halaman memori anonim yang jarang diakses dikompresi secara real-time oleh prosesor dan disimpan di dalam partisi zRAM teralokasi.

Mekanisme ini menciptakan ilusi kapasitas memori yang lebih besar (memory amplification). Sebagai contoh, data memori mentah sebesar 3 GB dapat dikompresi menjadi sekitar 1 GB hingga 1.5 GB di dalam zRAM, menyisakan sisa RAM fisik yang berharga untuk aplikasi aktif di latar depan.

Parameter Algoritma LZ4 ZSTD (Zstandard) LZO (Legacy)
Rasio Kompresi Rata-Rata Sekitar 2.1x (Menengah) Sekitar 2.7x - 3.2x (Tinggi) Sekitar 1.9x (Rendah)
Kecepatan Kompresi (MB/s) Sangat Cepat (~700-900 MB/s per core) Sedang (~250-400 MB/s pada level 1) Cepat (~500 MB/s)
Kecepatan Dekompresi (MB/s) Ultra Cepat (~3500-4500 MB/s) Cepat (~1200-1800 MB/s) Menengah (~900 MB/s)
Overhead Konsumsi CPU Sangat Rendah (Ideal untuk SoC hemat daya) Menengah (Memerlukan core CPU modern) Rendah
Dukungan Android Resmi Default pada sebagian besar kernel AOSP. Opsi kompilasi modern sejak Android 12+. Ditinggalkan pada arsitektur 64-bit modern.

Catatan Riset Kinerja: Batasan Rasio Ukuran zRAM terhadap RAM Fisik

Baca Juga:
Aplikasi pencatat keuangan 1Money: Tampilan ramah pemula yang bikin kita disiplin melacak pengeluaran harian
Review gadget 4 mnt baca

Mengalokasikan ukuran zRAM lebih dari 100% dari total RAM fisik (misalnya zRAM 12 GB pada perangkat berkapasitas 8 GB RAM) merupakan kesalahan konfigurasi umum. Jika kompresibilitas memori menurun, prosesor akan mengalami thrashing berkelanjutan yang mengakibatkan lag sistem masif.

Evaluasi Komparatif: LZ4 vs ZSTD pada Kernel Android

Pemilihan algoritma kompresi zRAM melibatkan trade-off teknis antara latensi antarmuka pengguna dengan kapasitas ruang RAM yang berhasil diselamatkan:

  • LZ4: Menawarkan latensi dekompresi yang hampir setara dengan kecepatan salin memori murni. Ketika aplikasi yang berada di latar belakang dibuka kembali oleh pengguna, proses dekompresi halaman memori dari zRAM berlangsung dalam hitungan fraksi milidetik, mencegah fenomena UI stuttering atau jank.
  • ZSTD: Memberikan rasio pemadatan data yang jauh lebih padat. Pada perangkat dengan kapasitas RAM fisik terbatas (misalnya perangkat segmen entry-level 3 GB atau 4 GB RAM), ZSTD mampu mempertahankan lebih banyak aplikasi di latar belakang tanpa memicu pembersihan paksa oleh sistem.
# Memeriksa algoritma kompresi zRAM yang aktif pada sistem
adb shell cat /sys/block/zram0/comp_algorithm
# Contoh output: [lz4] zstd lzo

# Memeriksa statistik penggunaan memori zRAM aktual (kompresi vs uncompressed)
adb shell cat /sys/block/zram0/mm_stat

Peran Low Memory Killer Daemon (LMKD) Pengganti Kernel LMK

Meskipun zRAM mampu memampatkan memori, kapasitas RAM fisik pada akhirnya akan mencapai titik jenuh. Untuk mencegah terjadinya kernel panic akibat Out-Of-Memory (OOM), Android menggunakan komponen pengawas proses yang dikenal sebagai LMKD (Low Memory Killer Daemon).

Pada arsitektur kernel modern, LMKD beroperasi di ruang pengguna (userspace) dan memantau metrik PSI (Pressure Stall Information) dari kernel via /proc/pressure/memory. Ketika durasi penundaan alokasi memori melewati ambang batas toleransi kritis, LMKD menghentikan proses aplikasi dengan skor oom_score_adj tertinggi.

Baca Juga:
Capek pesan chat terhapus sebelum sempat dibaca? FilterBox hadir selamatkan riwayat notifikasi secara otomatis
Review gadget 4 mnt baca
Kategori Proses Rentang oom_score_adj Tingkat Prioritas Bertahan
Native Core / Init -1000 Kebal dari pembunuhan LMKD.
System Server / Phone -900 s/d -800 Prioritas vital keberlangsungan OS.
Foreground App (Aplikasi Aktif) 0 Sangat terlindungi selama berinteraksi dengan pengguna.
Visible App / Perceptible 100 s/d 200 Aplikasi pemutar audio atau widget aktif.
Previous App 700 Aplikasi yang baru saja ditinggalkan pengguna.
Cached App (Latar Belakang) 900 s/d 1000 Kandidat pertama yang dihentikan oleh LMKD saat tekanan memori.

Tuning Parameter Sysctl Virtual Memory untuk Efisiensi Multitasking

Melalui penyesuaian parameter subsistem virtual memory Linux, teknisi dapat menyeimbangkan agresivitas swapping zRAM terhadap pembersihan file cache halaman (page cache):

# Menyesuaikan agresivitas swapping ke zRAM (standar Android modern: 100 s/d 160)
adb shell "echo 100 > /proc/sys/vm/swappiness"

# Menyesuaikan kecenderungan kernel mereklamasi inode dan dentry filesystem
adb shell "echo 100 > /proc/sys/vm/vfs_cache_pressure"

# Memeriksa laporan statistik alokasi memori terperinci
adb shell dumpsys meminfo

Mekanisme Memory Compaction dan Reklamasi Slab Inode

Seiring lamanya perangkat menyala tanpa reboot, fragmentasi memori fisik internal dapat menghambat alokasi halaman memori berukuran besar (high-order memory allocations). Kernel Android menjalankan proses Memory Compaction untuk memindahkan halaman memori yang dapat digeser (movable pages) agar terbentuk blok-blok contiguous memory yang bebas. Pengembang dapat memicu pemadatan memori secara manual melalui node /proc/sys/vm/compact_memory sebelum menjalankan pengujian performa intensif, serta mengoptimalkan frekuensi pemanggilan slab shrinker guna mereklamasi memori struktur dentry yang tidak lagi dibutuhkan oleh sistem file.

Kesimpulan Audit Alokasi Memori

Manajemen memori Android modern merupakan kesatuan sistem terintegrasi yang menghubungkan kompresi virtual zRAM berlatensi rendah dengan orkestrasi pembersihan proses LMKD berbasis PSI. Pemahaman kuantitatif mengenai rasio kompresi dan skor OOM merupakan kunci utama dalam merancang konfigurasi performa yang seimbang antara multitasking dan efisiensi energi baterai.

Topik Terkait: #Kernel Linux #zRAM

Artikel Terkait

Artikel lain dalam kategori Tweaking & Kinerja

Lihat Semua