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.