Jawaban ini menjelaskan tindakan yang diambil oleh kernel ketika situasi OOM ditemui berdasarkan nilai sysctl vm.overcommit_memory
.
Ketika overcommit_memory
diatur ke 0 atau 1, overcommit
diaktifkan, dan program diizinkan untuk mengalokasikan lebih banyak memori daripada yang sebenarnya tersedia.
Sekarang apa yang terjadi ketika kita kehabisan memori dalam situasi ini? Bagaimana pembunuh OOM memutuskan proses mana yang harus dibunuh terlebih dahulu?
linux
memory
out-of-memory
Ramesh
sumber
sumber
Jawaban:
Jika memori habis digunakan oleh proses, sejauh yang mungkin dapat mengancam stabilitas sistem, maka pembunuh OOM muncul dalam gambar.
CATATAN: Adalah tugas Pembunuh OOM untuk melanjutkan proses pembunuhan sampai cukup banyak memori yang dibebaskan untuk kelancaran fungsi dari sisa proses yang coba dijalankan oleh Kernel.
Pembunuh OOM harus memilih proses terbaik untuk dibunuh. Terbaik di sini merujuk pada proses yang akan membebaskan memori maksimum setelah membunuh dan juga yang paling tidak penting bagi sistem.
Tujuan utamanya adalah untuk membunuh jumlah proses yang meminimalkan kerusakan yang dilakukan dan pada saat yang sama memaksimalkan jumlah memori yang dibebaskan.
Untuk memfasilitasi ini, kernel memelihara sebuah
oom_score
untuk setiap proses. Anda dapat melihatoom_score
masing-masing proses dalam sistem/proc
file di bawahpid
direktori.Semakin tinggi nilai dari
oom_score
setiap proses, semakin tinggi kemungkinan terbunuh oleh Pembunuh OOM dalam situasi di luar memori.Bagaimana cara
OOM_Score
menghitungnya?Referensi
http://www.queryhome.com/15491/whats-happening-kernel-starting-killer-choose-which-process https://serverfault.com/a/571326
sumber