Apa pesan Out of Memory: mengorbankan anak?


20

Komputer saya baru-baru ini kehabisan memori (konsekuensi yang tidak terduga dari kompilasi perangkat lunak saat bekerja dengan dataset GIS yang besar). Dalam log sistem yang merinci cara menangani kondisi OOM adalah baris berikut:

Out of memory: Kill process 7429 (java) score 259 or sacrifice child

Tentang apa itu or sacrifice child? Tentunya itu tidak merenungkan beberapa ritual kelam untuk menjaga hal-hal berjalan?

Jawaban:


8

Dari file sumber saya menemukan oom_kill.c , Pembunuh OOM, setelah pesan tersebut ditulis dalam log sistem, memeriksa anak-anak dari proses yang diidentifikasi dan mengevaluasi jika mungkin untuk membunuh salah satu dari mereka di tempat proses itu sendiri.

Di sini komentar diambil dari file sumber yang menjelaskan ini:

/*
 * If any of p's children has a different mm and is eligible for kill,
 * the one with the highest oom_badness() score is sacrificed for its
 * parent.  This attempts to lose the minimal amount of work done while
 * still freeing memory.
 */

Itu juga melakukan itu untuk Firefox (Konten Web).
neverMind9

2

Itu berbicara tentang membunuh proses anak dari proses yang dinominasikan untuk dikirim KILLsinyal.


2
Tapi apa artinya ? Apakah ada beberapa metode dimana orang tua dapat "mengorbankan" anak untuk menyelamatkan diri?
Thanatos

Tebakan saya, yang hanya tebakan, adalah karena semua proses adalah turunan dari proses init Linux, maka orang tua dalam konteks ini adalah proses Linux di mana anak-anak adalah berbagai aplikasi. Dalam hal ini, proses Linux menyelamatkan dirinya sendiri dengan membunuh salah satu anaknya.
Seamus

0

Ini adalah pembunuh Oom (Kehabisan memori). Ketika sistem Anda kehabisan memori, kernel linux membunuh proses untuk membebaskan memori. Heuristik menentukan proses mana yang merupakan kandidat terbaik untuk mendapatkan memori yang dibebaskan tanpa merusak sistem (biasanya, proses yang dimiliki root bukan kandidat terbaik).

Lebih detail di sini: Bagaimana pembunuh OOM memutuskan proses mana yang harus dibunuh terlebih dahulu?


4
Ini tidak menjelaskan bagian "atau mengorbankan anak" dari pesan tersebut.
Tandai
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.