Pengantar
Dalam sistem Linux, penggunaan memori dapat meningkat dengan cepat ketika banyak aplikasi atau virtual machine berjalan secara bersamaan. Kondisi tersebut menjadi semakin penting pada server yang menjalankan banyak workload dengan pola data yang mirip.
Linux memiliki berbagai mekanisme untuk mengoptimalkan penggunaan RAM. Salah satunya adalah Kernel Samepage Merging (KSM).
KSM merupakan fitur kernel Linux yang memungkinkan halaman memori yang memiliki isi identik untuk digabungkan sehingga beberapa proses dapat menggunakan satu salinan halaman fisik yang sama. Dengan cara ini, penggunaan memori fisik dapat dikurangi tanpa harus mengubah aplikasi yang sedang berjalan.
Teknologi ini sangat berguna pada lingkungan virtualisasi. Beberapa virtual machine yang menjalankan sistem operasi atau aplikasi serupa sering memiliki bagian memori yang identik. KSM dapat mendeteksi halaman tersebut dan menggabungkannya menjadi satu halaman bersama.
Namun, KSM juga memiliki trade-off. Proses pencarian halaman yang identik membutuhkan CPU dan aktivitas scanning tambahan. Karena itu, penggunaannya perlu disesuaikan dengan karakteristik workload.
Apa Itu Kernel Samepage Merging?
Pengertian KSM
Kernel Samepage Merging (KSM) adalah fitur pada kernel Linux yang memungkinkan halaman memori anonim yang identik digunakan bersama oleh beberapa proses.
Konsepnya sederhana. Misalnya terdapat tiga proses yang masing-masing memiliki halaman memori dengan isi yang sama:
- Process A → Page X
- Process B → Page X
- Process C → Page X
Tanpa KSM, sistem dapat menyimpan ketiga halaman tersebut secara terpisah.
Dengan KSM, kernel dapat menemukan bahwa ketiga halaman memiliki isi identik dan menggabungkannya menjadi satu halaman fisik yang digunakan bersama.
Dokumentasi kernel Linux menjelaskan bahwa KSM dirancang untuk menghemat memori dengan melakukan deduplikasi halaman anonim yang identik, terutama pada workload seperti virtualisasi (dikutip dari: https://docs.kernel.org/admin-guide/mm/ksm.html).
baca juga : LLMNR & NBT-NS Poisoning: Ancaman Name Resolution yang Sering Terabaikan di Jaringan Windows
Mengapa KSM Dibutuhkan?
Mengurangi Penggunaan RAM
Manfaat utama KSM adalah mengurangi jumlah halaman memori fisik yang harus disimpan.
Semakin banyak halaman identik yang ditemukan, semakin besar potensi penghematan RAM.
Mendukung Virtualisasi
KSM sangat relevan pada server virtualisasi karena beberapa virtual machine sering menggunakan sistem operasi atau software yang sama.
Misalnya, sebuah server menjalankan 20 VM Linux dengan konfigurasi aplikasi yang hampir sama. Sebagian halaman memori dari VM tersebut kemungkinan memiliki isi yang identik.
KSM dapat mencoba menggabungkan halaman-halaman tersebut.
Meningkatkan Kepadatan VM
Jika penggunaan RAM berhasil dikurangi, server dapat menjalankan lebih banyak workload dalam kapasitas memori yang sama.
Konsep ini sering disebut sebagai memory overcommitment atau peningkatan kepadatan workload.
Bagaimana KSM Bekerja?
1. Kernel Melakukan Scanning
KSM secara berkala melakukan scanning terhadap area memori yang telah ditandai untuk dapat di-merge.
Kernel membandingkan isi halaman untuk mencari halaman yang identik.
2. Halaman Identik Ditemukan
Jika dua atau lebih halaman memiliki konten yang sama, kernel dapat menggabungkannya.
Contohnya:
Page A → [ABC123]
Page B → [ABC123]
Page C → [XYZ789]
Page A dan Page B memiliki isi yang sama sehingga dapat digabungkan.
Hasilnya menjadi:
Shared Page → [ABC123]
Page C → [XYZ789]
3. Halaman Menjadi Shared
Setelah proses merging, beberapa proses dapat menunjuk ke halaman fisik yang sama.
Hal tersebut mengurangi jumlah halaman fisik yang diperlukan.
4. Copy-on-Write
Bagaimana jika salah satu proses mencoba mengubah halaman yang sebelumnya dibagikan?
Linux menggunakan mekanisme Copy-on-Write (COW).
Ketika sebuah proses mencoba menulis ke shared page, kernel dapat membuat salinan halaman untuk proses tersebut.
Dengan demikian, proses lain tetap dapat menggunakan halaman yang lama.
KSM dan Copy-on-Write
Mengapa COW Penting?
KSM tidak berarti bahwa beberapa proses akan dipaksa menggunakan data yang sama selamanya.
Setiap proses tetap dapat memodifikasi data sesuai kebutuhannya.
Misalnya:
Sebelum Write:
Process A ─┐
├── Shared Page
Process B ─┘
Jika Process A melakukan perubahan:
Process A ─── Private Copy
Process B ─── Shared Page
Mekanisme tersebut memungkinkan penghematan memori tetap dilakukan tanpa mengorbankan isolasi antarproses.
KSM pada Lingkungan Virtualisasi
Mengapa VM Memiliki Halaman yang Sama?
Virtual machine yang menggunakan sistem operasi dan software serupa cenderung memiliki pola memori yang mirip.
Contohnya, sebuah server menjalankan beberapa VM yang semuanya menggunakan distribusi Linux yang sama.
Sebagian halaman memori dari kernel guest, library, atau aplikasi dapat memiliki konten yang sama.

KSM pada KVM
KSM sering digunakan bersama KVM (Kernel-based Virtual Machine).
Dalam lingkungan KVM, hypervisor dapat menjalankan banyak virtual machine pada satu host Linux.
Jika workload VM memiliki banyak halaman identik, KSM berpotensi mengurangi penggunaan RAM host.
Keuntungan Menggunakan KSM
Efisiensi Memori
KSM memungkinkan beberapa halaman identik berbagi satu halaman fisik.
Ini merupakan keuntungan terbesar dari fitur tersebut.
Meningkatkan VM Density
Dengan penggunaan RAM yang lebih efisien, administrator dapat meningkatkan jumlah VM yang berjalan pada satu host, selama workload memang cocok untuk deduplikasi.
Cocok untuk Workload yang Mirip
KSM sangat bermanfaat ketika banyak VM menjalankan software dan sistem operasi yang sama atau memiliki pola memori yang serupa.
Transparan bagi Aplikasi
Aplikasi tidak perlu secara khusus mengetahui bahwa halaman memorinya sedang dideduplikasi.
Fungsi tersebut dilakukan oleh kernel.
baca juga : Windows Registry Forensics: Mengungkap Jejak Digital Tersembunyi di Balik Sistem Windows
Kekurangan dan Trade-Off KSM
Penggunaan CPU
KSM membutuhkan proses scanning dan perbandingan halaman.
Aktivitas tersebut menggunakan resource CPU.
Jika jumlah halaman yang dipindai sangat besar, overhead dapat meningkat.
Tidak Semua Workload Cocok
Jika sebagian besar halaman memori berbeda, KSM tidak akan menghasilkan banyak penghematan.
Dalam kondisi tersebut, CPU yang digunakan untuk scanning mungkin tidak sebanding dengan RAM yang berhasil dihemat.
Potensi Latency
Pada workload tertentu, aktivitas memory scanning dan page merging dapat memberikan overhead tambahan.
Karena itu, KSM sebaiknya diuji terlebih dahulu sebelum diterapkan secara agresif pada sistem produksi.
Parameter Penting pada KSM
Linux menyediakan beberapa parameter untuk mengontrol perilaku KSM.

pages_to_scan
Parameter ini menentukan jumlah halaman yang dipindai dalam satu periode aktivitas KSM.
Semakin besar nilainya, semakin banyak halaman yang dapat diproses.
Namun, scanning yang lebih agresif juga dapat meningkatkan penggunaan CPU.
sleep_millisecs
Parameter ini menentukan interval waktu tidur KSM setelah melakukan scanning.
Nilai yang lebih kecil dapat membuat proses scanning berlangsung lebih sering.
run
Parameter run digunakan untuk mengontrol status KSM.
Secara umum, administrator dapat menggunakannya untuk menjalankan atau menghentikan proses KSM.
Dokumentasi kernel Linux menyediakan penjelasan mengenai parameter seperti pages_to_scan, sleep_millisecs, dan run serta cara mengontrol perilaku KSM melalui sysfs (dikutip dari: https://docs.kernel.org/admin-guide/mm/ksm.html).
Cara Memeriksa Status KSM di Linux
Administrator dapat melihat parameter KSM melalui direktori:
/sys/kernel/mm/ksm/
Contohnya:
cat /sys/kernel/mm/ksm/run
Untuk melihat jumlah halaman yang sedang diproses, beberapa statistik juga tersedia melalui file pada direktori tersebut.
Misalnya:
cat /sys/kernel/mm/ksm/pages_shared
Informasi tersebut dapat membantu administrator melihat apakah KSM benar-benar menghasilkan halaman yang digunakan bersama.
Statistik Penting KSM
Beberapa statistik yang dapat diperhatikan antara lain:
pages_shared
jumlah halaman yang sedang digunakan secara bersama setelah proses merging.
pages_sharing
Menunjukan jumlah halaman yang berbagi halaman fisik dengan halaman lain.
pages_unshared
Menandakan jumlah halaman yang telah diproses tetapi belum menemukan pasangan identik.
pages_volatile
Menunjukkan halaman yang tidak berhasil di-merge karena isinya berubah selama proses scanning.
Statistik tersebut dapat membantu administrator mengevaluasi efektivitas KSM terhadap workload tertentu.
KSM vs Memory Deduplication
Memory deduplication merupakan konsep yang lebih luas, sedangkan KSM adalah salah satu implementasinya pada Linux.
Tujuan keduanya sama, yaitu menemukan data memori yang identik dan mengurangi jumlah salinan fisik yang diperlukan.
Namun, KSM bekerja pada level kernel dan memiliki mekanisme khusus untuk menangani halaman memori anonim.
Apakah KSM Selalu Menghemat RAM?
Tidak.
Efektivitas KSM sangat bergantung pada tingkat kemiripan halaman memori.
Jika sebuah server menjalankan workload yang memiliki banyak data berbeda, jumlah halaman yang dapat digabungkan mungkin sedikit.
Contohnya:
VM 1 → 80% halaman unik
VM 2 → 85% halaman unik
VM 3 → 90% halaman unik
Dalam kondisi seperti itu, peluang deduplikasi lebih rendah.
Sebaliknya, jika banyak VM memiliki pola memori yang sangat mirip, potensi penghematan RAM menjadi lebih besar.
KSM dan Keamanan
Risiko Side-Channel
Memory deduplication juga memiliki implikasi keamanan.
Ketika halaman dari workload yang berbeda dapat dibandingkan atau digabungkan berdasarkan kontennya, muncul kemungkinan adanya teknik side-channel attack dalam kondisi tertentu.
Karena itu, administrator perlu mempertimbangkan model ancaman sebelum mengaktifkan KSM pada lingkungan multi-tenant yang sensitif.
Multi-Tenant Environment
Pada server yang digunakan oleh banyak tenant yang tidak saling mempercayai, administrator perlu mengevaluasi apakah memory deduplication sesuai dengan kebijakan keamanan lingkungan tersebut.
Efisiensi memori tidak boleh menjadi satu-satunya pertimbangan.
Kapan Sebaiknya Menggunakan KSM?
KSM dapat menjadi pilihan menarik ketika:
- Banyak VM menggunakan OS yang sama.
- Workload memiliki pola memori yang mirip.
- RAM host menjadi bottleneck.
- CPU memiliki kapasitas yang cukup.
- Virtualisasi menjadi workload utama.
- Administrator dapat memantau overhead secara berkala.
Sebaliknya, KSM perlu dievaluasi dengan hati-hati ketika:
- Workload memiliki memori yang sangat berbeda.
- CPU sudah mengalami tekanan tinggi.
- Lingkungan memiliki kebutuhan isolasi yang sangat ketat.
- Penghematan RAM yang dihasilkan sangat kecil.
Best Practice Menggunakan KSM
Ukur Sebelum dan Sesudah
Jangan langsung mengaktifkan KSM secara agresif.
Bandingkan penggunaan RAM dan CPU sebelum dan sesudah penerapan.
Pantau Statistik KSM
Gunakan statistik pada /sys/kernel/mm/ksm/ untuk mengetahui apakah proses merging menghasilkan penghematan yang berarti.
Sesuaikan Parameter
Parameter seperti pages_to_scan dan sleep_millisecs dapat disesuaikan berdasarkan kebutuhan workload.
Perhatikan CPU
Penghematan RAM harus dibandingkan dengan CPU overhead yang dihasilkan.
Jika CPU meningkat signifikan tetapi RAM yang dihemat sangat kecil, konfigurasi KSM perlu dievaluasi kembali.
Pertimbangkan Model Keamanan
Pada lingkungan multi-tenant, pertimbangkan risiko keamanan memory deduplication sebelum mengaktifkan KSM.
Contoh Sederhana Efisiensi KSM
Misalnya sebuah host memiliki:
- 10 VM
- Masing-masing menggunakan 4 GB RAM
- Total penggunaan memori teoritis: 40 GB
Jika terdapat banyak halaman identik antar-VM, KSM mungkin dapat mengurangi jumlah RAM fisik yang benar-benar diperlukan.
Namun, angka penghematan tidak dapat ditentukan hanya berdasarkan kapasitas RAM VM.
Hasil sebenarnya bergantung pada:
- Jenis OS.
- Aplikasi.
- Pola workload.
- Jumlah halaman identik.
- Frekuensi perubahan data.
- Konfigurasi KSM.
Karena itu, pengukuran langsung pada lingkungan nyata tetap menjadi cara terbaik untuk mengetahui efektivitas KSM.
baca juga : HTTP/3 dan UDP: Mengapa Protokol Web Modern Beralih dari TCP ke UDP?
Kesimpulan
Kernel Samepage Merging (KSM) merupakan fitur Linux yang memungkinkan halaman memori identik digabungkan sehingga beberapa proses dapat menggunakan satu salinan halaman fisik yang sama.
Teknologi ini sangat berguna pada lingkungan virtualisasi dengan banyak VM yang memiliki sistem operasi atau workload serupa. Dengan deduplikasi memori, penggunaan RAM dapat dikurangi dan kepadatan VM pada satu host dapat ditingkatkan.
Namun, KSM bukan solusi yang selalu memberikan keuntungan. Proses scanning dan merging membutuhkan CPU, sementara workload dengan sedikit halaman identik mungkin tidak menghasilkan penghematan RAM yang signifikan.
Karena itu, penerapan KSM sebaiknya dilakukan berdasarkan pengukuran. Administrator perlu memantau penggunaan CPU, statistik KSM, penggunaan RAM, serta karakteristik workload.
Pada lingkungan multi-tenant, aspek keamanan juga harus dipertimbangkan karena memory deduplication dapat memiliki implikasi terhadap isolasi dan potensi side-channel.
Dengan konfigurasi dan monitoring yang tepat, KSM dapat menjadi salah satu mekanisme penting untuk meningkatkan efisiensi penggunaan memori Linux, khususnya pada server virtualisasi.








