Dijelaskan di sini bahwa OOM-Killer dapat dikonfigurasi melalui overcommit_memory
dan bahwa:
- 2 = tidak ada komitmen berlebihan. Alokasi gagal jika terlalu banyak bertanya.
- 0, 1 = overcommit (heuristik atau selalu). Matikan beberapa proses berdasarkan beberapa heuristik ketika terlalu banyak memori yang sebenarnya diakses.
Sekarang, saya mungkin benar-benar salah paham akan hal itu, tetapi mengapa tidak ada opsi (atau mengapa itu bukan default) untuk mematikan proses yang sebenarnya mencoba mengakses terlalu banyak memori yang dialokasikan?
Bagaimana jika suatu proses sistem kritis meminta terlalu banyak memori?
—
Lawrence
Pertama - dapat melakukan hal ini. Tapi, masalah terbesar dengan pertanyaan itu adalah kemungkinan besar jika suatu proses meminta memori maka itu sedang dieksekusi baru - atau, dengan kata lain, ini adalah proses baru yang terlibat dalam pemrosesan yang sangat saat ini. Apakah Anda lebih suka OOM mengizinkan klien im Anda yang tidak dibuka untuk 3 hari untuk terus membuang-buang memori sistem atau apakah Anda lebih suka YouTube benar-benar memuat beberapa waktu tahun ini? linuxatemyram.com
—
mikeserv
Inilah yang
—
Barmar
no overcommit
opsi dasarnya lakukan. Jika suatu proses meminta terlalu banyak memori, itu gagal. Jika memeriksa kesalahan, biasanya akan bunuh diri; jika tidak, itu mungkin akan mendapatkan Kesalahan Segmentasi ketika mencoba untuk mengubah referensi null pointer yang malloc()
kembali, dan itu akan crash.
Perhatikan bahwa 2 sebenarnya adalah
—
hans_meine
no overcommit
mode, menurut sumber yang dikutip (seperti kernel.org/doc/Documentation/vm/overcommit-accounting ). Saya pikir saya akan mengedit pertanyaan Anda sesuai.