2012-08-31 25 views
3

我想了解Linux系統(Fedora 15/16,準確地說)的進程的oom_adj的默認值。我所看到的是一堆進程被設置爲-17,即不殺,而其他進程則有不同的值(通常是0,有時是-13)。與直覺相反,它看起來好像用戶進程比系統進程多使用-17。任何人都可以闡明這一點嗎?我在某處丟失了一個配置文件嗎?謝謝!Linux的OOM殺手中的默認oom_adj值

回答

7

除非您專門設置它,否則它將默認爲它從中分出的進程的值。某些進程(如openssh)顯式更改其可執行文件中的值。 openssh的理由是,當你處於內存不足的狀態時,你希望能夠進入計算機並殺死一些進程。由於其他可執行文件背後原因不同的原因,您不得不問他們的個人開發人員。

因爲進程從父母繼承oom設置,所以如果從ssh會話啓動某些內容,它將默認爲-17。這就是爲什麼一些流程看起來不合理的重要原因。但是,請記住,計算機存在爲其用戶運行進程。如果我正在寫一篇重要的論文,並且內存開始不足,那時該機器上最重要的進程就是運行我的文字處理器的那個進程。 oom設置存在的全部原因是爲了能夠將這種重要性傳達給操作系統。

+1

我會爭辯說,像鍵盤是至少平等 –