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
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.
| 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.