Pengantar

Memori (RAM) merupakan salah satu sumber daya paling penting dalam sistem operasi. Setiap aplikasi yang berjalan, mulai dari browser, database, hingga layanan web, membutuhkan memori agar dapat beroperasi dengan baik. Namun, bagaimana jika seluruh memori fisik dan swap hampir habis digunakan?

Pada sistem operasi Linux, kondisi tersebut tidak selalu menyebabkan sistem langsung mengalami crash. Sebaliknya, kernel memiliki mekanisme khusus yang dikenal sebagai Out-Of-Memory (OOM) Killer. Fitur ini bertugas memilih dan menghentikan (kill) proses tertentu agar memori dapat dibebaskan sehingga sistem tetap dapat berjalan.

Meskipun terdengar ekstrem, OOM Killer merupakan bagian penting dari manajemen memori Linux. Tanpa mekanisme ini, sistem berisiko mengalami hang, tidak responsif, atau bahkan gagal beroperasi sepenuhnya ketika kehabisan memori.


Apa Itu Out-Of-Memory (OOM) Killer?

Pengertian OOM Killer

Out-Of-Memory (OOM) Killer adalah mekanisme bawaan kernel Linux yang secara otomatis memilih dan menghentikan proses tertentu ketika sistem mengalami kekurangan memori yang sangat parah (critical memory shortage).

Alih-alih membiarkan seluruh sistem berhenti merespons, kernel akan menentukan proses yang dianggap paling layak dihentikan berdasarkan berbagai faktor, seperti penggunaan memori, prioritas proses, dan nilai OOM Score.

Menurut dokumentasi resmi kernel Linux, OOM Killer dirancang untuk memulihkan kondisi sistem ketika seluruh upaya alokasi memori gagal dilakukan sehingga sistem tetap dapat beroperasi tanpa mengalami kegagalan total (dikutip dari: https://docs.kernel.org/mm/oom.html).

baca juga : Windows Event Log Analysis: Panduan Menganalisis Log Windows untuk Mendeteksi Ancaman Siber


Mengapa OOM Killer Dibutuhkan?

Ketika aplikasi terus mengalokasikan memori tanpa tersedia ruang kosong yang cukup, kernel memiliki beberapa pilihan, seperti:

  • Menggunakan swap jika masih tersedia.
  • Melakukan memory reclaim.
  • Menghapus page cache yang tidak digunakan.
  • Menjalankan mekanisme OOM Killer jika seluruh cara sebelumnya gagal.

Tanpa OOM Killer, sistem dapat mengalami kondisi seperti:

  • Tidak dapat membuka aplikasi baru.
  • Layanan penting berhenti merespons.
  • Server mengalami freeze.
  • Kernel mengalami kegagalan dalam mengalokasikan memori.

Karena itu, OOM Killer berfungsi sebagai mekanisme perlindungan terakhir (last resort) untuk menjaga stabilitas sistem.


Bagaimana Cara Kerja OOM Killer?

Ketika memori hampir habis, kernel akan melakukan evaluasi terhadap seluruh proses yang sedang berjalan.

Secara umum, alurnya adalah sebagai berikut:

  1. Kernel mendeteksi bahwa alokasi memori gagal.
  2. Kernel mencoba membebaskan memori melalui mekanisme internal.
  3. Jika tetap gagal, OOM Killer mulai mengevaluasi seluruh proses.
  4. Setiap proses diberikan nilai OOM Score.
  5. Proses dengan skor tertinggi akan dihentikan.
  6. Memori yang digunakan proses tersebut dikembalikan ke sistem.

Pendekatan ini memungkinkan sistem tetap berjalan meskipun harus mengorbankan satu atau beberapa proses.


Apa Itu OOM Score?

OOM Killer menggunakan nilai yang disebut OOM Score untuk menentukan proses mana yang akan dihentikan.

Nilai tersebut dipengaruhi oleh beberapa faktor, seperti:

  • Jumlah memori yang digunakan.
  • Jenis proses.
  • Prioritas proses.
  • Nilai oom_score_adj.
  • Status proses sebagai layanan sistem atau aplikasi pengguna.

Semakin tinggi nilai OOM Score, semakin besar kemungkinan proses tersebut menjadi target OOM Killer.


Memahami oom_score dan oom_score_adj

Linux menyediakan dua parameter penting yang berkaitan dengan OOM Killer.

oom_score

File ini menunjukkan kemungkinan suatu proses menjadi target OOM Killer.

Nilainya dapat dilihat melalui:

cat /proc/<PID>/oom_score

Semakin tinggi nilainya, semakin besar peluang proses tersebut dihentikan.


oom_score_adj

Parameter ini digunakan untuk menambah atau mengurangi prioritas suatu proses terhadap OOM Killer.

Nilainya berada pada rentang:

-1000 hingga 1000

Keterangan:

  • -1000 → Hampir tidak akan dipilih oleh OOM Killer.
  • 0 → Nilai standar.
  • 1000 → Sangat berpeluang dihentikan.

Administrator dapat mengatur nilai ini untuk melindungi layanan penting seperti database atau web server.

baca juga : DNSSEC (DNS Security Extensions): Cara Kerja Teknologi yang Melindungi DNS dari Pemalsuan Data


Contoh Skenario OOM Killer

Misalkan sebuah server memiliki RAM sebesar 8 GB.

Pada saat yang sama berjalan beberapa proses berikut:

Proses Penggunaan RAM
MySQL 2 GB
Nginx 500 MB
Java Application 4,5 GB
Monitoring Agent 200 MB

Ketika aplikasi Java mengalami memory leak dan terus mengonsumsi RAM hingga seluruh memori hampir habis, kernel akan menghitung OOM Score setiap proses.

Karena aplikasi Java menggunakan memori paling besar dan memiliki skor tertinggi, OOM Killer kemungkinan besar akan menghentikan proses tersebut agar layanan lain tetap berjalan.


Cara Melihat Log OOM Killer

Administrator dapat melihat aktivitas OOM Killer menggunakan perintah berikut:

dmesg | grep -i oom

atau

journalctl -k | grep -i oom

Log tersebut biasanya menampilkan informasi seperti:

  • Proses yang dihentikan.
  • PID proses.
  • Penggunaan memori.
  • Nilai OOM Score.
  • Alasan pemilihan proses.

Informasi ini sangat membantu dalam proses analisis dan pemecahan masalah.


Penyebab OOM Killer Aktif

Beberapa kondisi yang sering memicu OOM Killer antara lain:

  • Memory leak pada aplikasi.
  • Terlalu banyak aplikasi berjalan secara bersamaan.
  • Konfigurasi RAM yang tidak memadai.
  • Beban kerja (workload) meningkat drastis.
  • Kesalahan konfigurasi container.
  • Tidak tersedianya ruang swap.

Mengetahui penyebabnya membantu administrator mengambil langkah pencegahan sebelum masalah kembali terjadi.


OOM Killer pada Docker dan Kubernetes

Pada lingkungan berbasis container seperti Docker dan Kubernetes, OOM Killer juga berperan penting.

Jika sebuah container menggunakan memori melebihi batas (memory limit) yang telah ditentukan, kernel dapat menghentikan proses di dalam container tersebut.

Menurut dokumentasi resmi Kubernetes, kondisi ini biasanya ditandai dengan status OOMKilled, yang menunjukkan bahwa container dihentikan karena melampaui batas penggunaan memori yang diizinkan (dikutip dari: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/).

Karena itu, penentuan resource request dan resource limit menjadi aspek penting dalam pengelolaan aplikasi berbasis container.


Cara Mencegah OOM Killer Sering Aktif

Beberapa langkah yang dapat dilakukan untuk mengurangi risiko OOM Killer antara lain:

Pantau Penggunaan Memori

Gunakan alat seperti:

  • htop
  • top
  • free
  • vmstat

Pemantauan rutin membantu mendeteksi lonjakan penggunaan memori sebelum menjadi masalah.


Gunakan Swap Secukupnya

Swap dapat memberikan ruang tambahan ketika RAM mulai penuh.

Namun, penggunaan swap secara berlebihan juga dapat menurunkan performa sistem.


Atur Memory Limit

Pada Docker maupun Kubernetes, tentukan batas penggunaan memori agar satu aplikasi tidak menghabiskan seluruh sumber daya server.


Periksa Memory Leak

Aplikasi yang mengalami memory leak akan terus menggunakan memori tanpa melepaskannya kembali.

Lakukan profiling secara berkala untuk mengidentifikasi masalah tersebut.


Sesuaikan oom_score_adj

Lindungi layanan penting seperti:

  • Database
  • Web Server
  • DNS Server
  • Authentication Service

dengan memberikan nilai oom_score_adj yang lebih rendah sehingga kecil kemungkinan dihentikan oleh OOM Killer.


Kelebihan dan Kekurangan OOM Killer

Kelebihan

  • Mencegah sistem mengalami freeze total.
  • Menjaga layanan lain tetap berjalan.
  • Bekerja secara otomatis.
  • Membantu menjaga stabilitas kernel.

Kekurangan

  • Dapat menghentikan aplikasi penting jika tidak dikonfigurasi dengan baik.
  • Berpotensi menyebabkan hilangnya data yang belum tersimpan.
  • Tidak menyelesaikan akar penyebab penggunaan memori yang berlebihan.

Oleh karena itu, OOM Killer sebaiknya dipandang sebagai mekanisme darurat, bukan solusi utama terhadap masalah memori.

baca juga : Salting & Peppering: Dua Teknik Penting untuk Memperkuat Keamanan Password


Kesimpulan

Out-Of-Memory (OOM) Killer merupakan mekanisme penting dalam kernel Linux yang dirancang untuk melindungi sistem ketika mengalami kekurangan memori. Dengan mengevaluasi setiap proses berdasarkan OOM Score, kernel dapat memilih proses yang paling tepat untuk dihentikan sehingga sistem tetap dapat beroperasi tanpa mengalami crash secara menyeluruh.

Meskipun sangat berguna, seringnya OOM Killer aktif biasanya menjadi indikator adanya masalah lain, seperti memory leak, konfigurasi sumber daya yang kurang tepat, atau kapasitas memori yang tidak memadai. Oleh karena itu, administrator sistem perlu melakukan pemantauan penggunaan memori, mengatur batas sumber daya aplikasi, serta mengoptimalkan konfigurasi server agar mekanisme ini hanya bekerja pada kondisi yang benar-benar darurat.