Arsitektur Penyimpanan Universal Flash Storage (UFS) pada Android
Performa sistem operasi Android modern sangat dipengaruhi oleh kecepatan subsistem input/output (I/O) media penyimpanan. Pada perangkat seluler generasi terdahulu, standar eMMC (embedded MultiMediaCard) menjadi batasan utama performa. eMMC hanya mendukung komunikasi separuh-dupleks (half-duplex) dengan satu antrean perintah (single command queue), di mana operasi baca dan tulis tidak dapat dieksekusi secara bersamaan.
Perangkat modern telah beralih sepenuhnya ke teknologi Universal Flash Storage (UFS) versi 3.1 dan 4.0. UFS mengadopsi protokol serial SCSI berlapis penuh (full-duplex) dengan antrean perintah bertingkat (Command Queueing hingga 32 slot instruksi). UFS 4.0 mampu menghasilkan bandwidth teoritis hingga 4200 MB/s untuk pembacaan sekuensial, menyamai kecepatan media SSD NVMe pada komputer desktop.
Subsistem Multi-Queue Block Layer (blk-mq) Kernel Linux
Untuk mengimbangi kecepatan hardware UFS yang masif, kernel Linux merombak arsitektur subsistem blok tradisional (Single-Queue Block Layer) menjadi blk-mq (Multi-Queue Block IO Layer). Pada blk-mq, setiap core CPU fisik memiliki antrean pengiriman perangkat lunak (software staging queue) masing-masing. Hal ini mengeliminasi kemacetan penguncian thread (lock contention) ketika banyak proses pada core berbeda meminta akses I/O secara bersamaan.
| I/O Scheduler | Mekanisme Algoritma Penjadwalan | Keunggulan Operasional | Overhead CPU | Rekomendasi Beban Kerja |
|---|---|---|---|---|
| none (No-Op) | Instruksi I/O langsung diteruskan ke hardware UFS. | Overhead CPU nol, latensi raw hardware murni. | Hampir Nol | Penyimpanan NVMe/UFS 4.0 ultra cepat pada SoC multi-core. |
| mq-deadline | Memprioritaskan instruksi baca dengan tenggat waktu tegas. | Mencegah kelaparan instruksi baca (read starvation). | Sangat Rendah | Default standar terbaik untuk stabilitas sistem operasi. |
| Kyber | Menghitung waktu respons instruksi berdasarkan target latensi. | Membatasi penumpukan antrean saat operasi tulis intensif. | Rendah | Lingkungan multitasking berat dengan I/O paralel acak. |
| BFQ (Budget Fair Queueing) | Mengalokasikan kuota throughput sektor secara proporsional. | Sangat menjamin kelancaran responsivitas UI aplikasi. | Tinggi | Penyimpanan lambat (eMMC / MicroSD), kurang ideal untuk UFS 4.0. |
Catatan Riset Penyimpanan: Fitur WriteBooster pada UFS 3.1/4.0
UFS 3.1 memperkenalkan fitur hardware WriteBooster yang memanfaatkan memori SLC cache berkecepatan tinggi. Pengujian benchmark I/O sintetis yang terlalu lama akan menghabiskan SLC buffer ini, menyebabkan kecepatan penulisan anjlok kembali ke kecepatan native TLC/QLC flash.
Fitur Lanjutan UFS 3.1/4.0: Host Performance Booster (HPB)
Salah satu inovasi perangkat keras paling berpengaruh pada standar UFS modern adalah Host Performance Booster (HPB). Pada modul flash memori standar, tabel penerjemahan alamat logika ke fisik (L2P Table / Logical-to-Physical) disimpan di dalam chip memori controller internal yang memiliki kapasitas RAM sangat terbatas. Akibatnya, controller harus sering membaca ulang tabel L2P dari flash mentah, menyebabkan latensi pembacaan acak melonjak.
HPB menyelesaikan kendala ini dengan mengizinkan controller penyimpanan meminjam sebagian kecil kapasitas RAM sistem utama (Host Memory Buffer) untuk menampung tabel L2P berkecepatan tinggi. Berdasarkan pengujian empiris, aktivasi HPB pada kernel Android mampu meningkatkan performa pembacaan acak (random read IOPS) hingga 67% pada penyimpanan yang hampir penuh, secara drastis mempercepat waktu muat game dan peluncuran aplikasi berat.
Inspeksi dan Pemilihan I/O Scheduler Aktif via ADB Shell
Penyimpanan UFS dikenali oleh kernel Linux sebagai perangkat SCSI blok dengan nama node /dev/block/sda (atau /dev/block/bootdevice). Operator dapat memeriksa dan mengonfigurasi scheduler aktif melalui antarmuka sysfs:
# Menampilkan daftar I/O scheduler yang didukung dan yang sedang aktif (ditandai kurung siku)
adb shell cat /sys/block/sda/queue/scheduler
# Contoh output: [mq-deadline] kyber bfq none
# Mengubah I/O scheduler aktif menjadi mq-deadline untuk stabilitas latensi
adb shell "echo mq-deadline > /sys/block/sda/queue/scheduler"
# Menyesuaikan kedalaman antrean permintaan I/O (request queue depth)
adb shell "echo 64 > /sys/block/sda/queue/nr_requests"
# Mengoptimalkan ukuran pembacaan awal (read-ahead cache) untuk throughput sekuensial
adb shell "echo 128 > /sys/block/sda/queue/read_ahead_kb"
Audit dan Pengujian Latensi I/O Menggunakan FIO Benchmark
Untuk mengukur secara objektif dampak modifikasi scheduler terhadap performa nyata, utilitas fio (Flexible I/O Tester) dapat dijalankan langsung di lingkungan Android shell. Pengujian berfokus pada pembacaan acak 4K (4K Random Read), metrik paling vital yang menentukan kecepatan peluncuran aplikasi dan responsivitas database SQLite:
# Menjalankan pengujian 4K Random Read asynchronous dengan kedalaman antrean 32
adb shell fio --name=randread_test \
--filename=/data/local/tmp/fio_test.dat \
--size=256M \
--bs=4k \
--rw=randread \
--ioengine=posixaio \
--iodepth=32 \
--runtime=15 \
--time_based \
--output-format=normal
Analisis terhadap luaran FIO akan memperlihatkan parameter latensi persentil (99th percentile latency). Penggunaan scheduler mq-deadline atau none pada media UFS modern secara konsisten mempertahankan latensi persentil 99th di bawah ambang batas 1.5 milidetik, mencegah fenomena frame-drop pada aplikasi antarmuka.
Strategi Penyetelan Parameter Antrean Blok (Block Queue Tuning)
Selain memilih algoritma scheduler, efisiensi throughput dapat ditingkatkan dengan mematikan pengacakan entropy yang tidak perlu pada perangkat penyimpanan deterministik:
# Menonaktifkan kontribusi antrean I/O ke entropy pool sistem untuk menghemat siklus CPU
adb shell "echo 0 > /sys/block/sda/queue/add_random"
# Mengizinkan penggabungan instruksi I/O sederhana (simple merges)
adb shell "echo 2 > /sys/block/sda/queue/nomerges"
Kesimpulan Optimalisasi Storage
Evolusi perangkat keras penyimpanan seluler dari eMMC ke UFS 3.1 dan 4.0 telah menggeser fokus optimasi dari rekayasa antrean yang kompleks ke minimalisasi overhead pemrosesan CPU. Dengan memanfaatkan arsitektur blk-mq dan scheduler ringan seperti mq-deadline atau none, integritas performa penyimpanan Android dapat dimaksimalkan tanpa membebani efisiensi konsumsi daya baterai.