Linux-Kernel

什麼是 Out of Memory 資訊:犧牲孩子?

  • November 30, 2019

我的電腦最近記憶體不足(在處理大型 GIS 數據集時編譯軟體的意外結果)。在詳細說明它如何處理 OOM 條件的系統日誌中是以下行:

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

那是or sacrifice child關於什麼的?當然,這不是在思考一些黑暗的儀式來讓事情繼續下去嗎?

從我找到oom_kill.c的源文件中,OOM Killer 在將此類消息寫入系統日誌後,會檢查已辨識程序的子程序,並評估是否可能殺死其中一個程序來代替程序本身。

這裡從源文件中提取的註釋解釋了這一點:

/*
* 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.
*/

引用自:https://unix.stackexchange.com/questions/282155