📑 Daftar Isi

Ilustrasi kompresi memori CRAM dari Meta yang menyimpan data terkompresi langsung di RAM Linux dan diklaim hingga 452x lebih cepat dari ZRAM.

CRAM Meta: Kompresi Memori Linux 452x Lebih Cepat dari ZRAM

Penulis:Ida Farida
Terbit:
Diperbarui:
⏱️4 menit membaca
Bagikan:
  • CRAM dikonseptualisasikan Gregory Price dan timnya di Meta sebagai model kompresi memori baru di Linux
  • Menghindari swap sepenuhnya dengan menyimpan data terkompresi langsung di dalam memori
  • Menawarkan performa hingga 452x lebih cepat dari ZRAM pada skenario read-only
  • Tetap 5,4x lebih cepat pada kasus terburuk dengan 20% operasi tulis
  • Menggunakan private NUMA node dan mekanisme "Chicken Bit" untuk mencegah poison storm
  • Masalah kompresibilitas data dan kapasitas RAM logis masih menjadi area penelitian
  • Target utama server Linux berskala besar, berpotensi untuk perangkat seperti Steam Deck

Telset.id – Sebuah model kompresi memori baru bernama CRAM menawarkan performa hingga 452x lebih cepat dibandingkan ZRAM pada skenario read-only, dengan menghindari mekanisme swap sepenuhnya dan menyimpan data terkompresi langsung di dalam memori. Teknologi ini dikonseptualisasikan oleh Gregory Price dan timnya di Meta sebagai pendekatan berbeda terhadap kompresi memori di Linux.

CRAM menjadi relevan karena zswap dan ZRAM selama ini merupakan fitur pada lapisan swap. Keduanya digunakan luas di seluruh ekosistem Linux, termasuk pada perangkat dengan keterbatasan sumber daya seperti Steam Deck, dan banyak distribusi mengaktifkan salah satunya secara default. Pendekatan baru ini menjanjikan percepatan signifikan bagi sebagian mesin tersebut jika nantinya masuk ke kernel.

Gagasan utama di balik pengembangan CRAM adalah bahwa bagian terbesar dari penurunan performa pada memori terkompresi bukan berasal dari proses kompresinya, melainkan dari page fault dan perilaku swap. Karena itu, pendekatannya adalah menjalankan ZRAM sepenuhnya di dalam memori, bukan sebagai swap.

A slide illustrating that page fault handling is much slower than memory compression/decompression.

CRAM memanfaatkan mekanisme yang sudah ada di Linux untuk mengaktifkan memori terkompresi berperforma jauh lebih tinggi, terutama pada operasi baca. Alih-alih berpura-pura menjadi block device, CRAM menggunakan private NUMA node yang secara esensial berperan sebagai ghost CPU. Hal ini memungkinkan Linux terus menggunakan seluruh semantik memorinya, termasuk migrasi dan ballooning, untuk mengelola CRAM.

Bagian kritis dari implementasi ini adalah “Chicken Bit,” yang memberi tahu Linux bahwa sistem harus berhenti menggunakan CRAM saat sedang sibuk mengelola alokasi. Mekanisme ini menjadi salah satu cara untuk mencegah kegagalan berantai yang secara koloratif disebut sebagai “poison storm” dalam presentasi tersebut, yakni ketika operasi tulis melampaui kemampuan CRAM untuk mengalokasikannya.

Performa CRAM dan Tantangan Kompresibilitas Data

Tingkat kompresibilitas data bervariasi sangat besar tergantung pada apa yang dikompresi, mulai dari tumpukan nol yang sepenuhnya dapat dikompresi hingga data yang sudah terkompresi dan tidak dapat dikompresi lagi. Kondisi ini memunculkan pertanyaan mendasar: bagaimana menentukan berapa banyak RAM “logis” yang tersedia ketika sebagiannya terkompresi, dan bagaimana mengetahui kapan memori akan habis.

Berdasarkan slide yang menjadi acuan, CRAM belum menyelesaikan masalah tersebut. Slide tersebut menetapkan hal ini sebagai persoalan yang belum terpecahkan dan menjadi area penelitian yang masih berlangsung. Meski demikian, Chicken Bit setidaknya menjadi salah satu cara untuk menghentikan kegagalan berantai ketika operasi tulis melampaui kapasitas alokasi CRAM.

A slide illustrating a high-level view of the CRAM implementation proposed by Price.

Karena CRAM disimpan di RAM dan diperlakukan sebagai RAM dengan akses cacheline/byte penuh, data dapat diakses secara read-only dengan sedikit penundaan, hanya sebesar biaya kompresi yang di-offload ke perangkat keras. Hasilnya, CRAM “berjalan pada kecepatan DRAM,” seperti disampaikan sang kreator dalam slide tersebut.

Pada skenario terburuk, CRAM melakukan 489 juta operasi per detik dibandingkan ZRAM yang hanya 1,1 juta operasi per detik. Angka ini terlihat mengesankan, tetapi perlu dicatat bahwa grafiknya menggunakan skala logaritmik sehingga perbandingannya nyaris tidak sebanding.

A slide showing that CRAM is nearly as fast as direct DRAM access for read-only data.

Bahkan ketika operasi tulis diaktifkan, CRAM tetap jauh lebih cepat daripada ZRAM, yakni 5,4x pada kasus terburuk yang diuji dengan 20% operasi tulis. Angka ini memang turun jauh dari 452x pada skenario read-only, tetapi dalam konteks yang tepat, percepatan 5,4x tetap tergolong besar.

Penurunan performa yang tajam ketika operasi tulis dilibatkan disebabkan oleh kebutuhan untuk melakukan page fault dan memigrasikan folio kembali ke domain NUMA asal. Data terkompresi tidak dapat ditulis secara langsung karena akan merusak seluruh isinya.

Target Implementasi dan Prospek di Kernel Linux

Berdasarkan asal pengembangannya di Meta Platforms, target yang jelas dari pekerjaan ini adalah server Linux berskala besar. Namun, karena ZRAM dan Zswap digunakan di seluruh ekosistem Linux, termasuk pada mesin dengan keterbatasan seperti Steam Deck, CRAM berpotensi menawarkan percepatan yang cukup besar bagi sebagian perangkat tersebut.

A slide showing that CRAM offers enormous performance benefits even when writes are mixed into the workload.

Harapannya, CRAM dapat menemukan jalannya ke dalam kernel setelah pertanyaan-pertanyaan implementasi yang tersisa terjawab. Sejumlah persoalan masih terbuka, termasuk bagaimana menentukan kapasitas RAM logis ketika sebagian data terkompresi dan bagaimana mendeteksi kondisi kehabisan memori secara akurat.

A slide showing the outstanding concerns regarding the implementation of CRAM in Linux.

Perlu dicatat bahwa penjelasan mengenai CRAM ini disusun berdasarkan slide yang tersedia dari situs informasi sesi Linux Plumbers’ Conference di Prague, bukan dari presentasi langsung. Sumber menyebutkan bahwa penjelasan tersebut mungkin tidak sepenuhnya tepat karena penulis tidak hadir langsung mendengar presentasi Price.

Perkembangan di sisi kernel Linux sendiri terus berjalan. Sejumlah inisiatif lain turut mewarnai ekosistem, seperti patch Lorenzo Stoakes yang menyentuh sisi kinerja build, maupun patch Linux Intel untuk menangani kerentanan keamanan. Di sisi lain, dukungan perangkat keras juga bergerak, misalnya driver Linux AMD untuk GPU RDNA 5. Adopsi aplikasi pihak ketiga di Linux pun terus tumbuh, seperti aplikasi Linux Obscura VPN yang kini berlisensi GPLv3.

CRAM menawarkan pendekatan yang berbeda dari zswap dan ZRAM dengan menyimpan data terkompresi di memori dan memperlakukannya sebagai RAM. Selama pertanyaan implementasi yang tersisa belum terjawab, posisi CRAM masih berada pada tahap penelitian, dengan potensi percepatan besar yang telah terlihat pada pengujian read-only maupun campuran operasi tulis.

[ META_DESCRIPTION]
CRAM, model kompresi memori baru dari Meta, menawarkan performa hingga 452x lebih cepat dari ZRAM dengan menyimpan data terkompresi langsung di RAM Linux.

Ikuti Telset.id di Google NewsFollow

Komentar

Belum ada komentar.