Memory
我可以拒絕將交換空間用於特定程序(並讓它被殺死)嗎?
在開發某些軟體時,被測程序有時會佔用所有記憶體,然後繼續進入交換空間並開始顛簸磁碟,導致響應速度下降到我通常切換到另一個終端登錄和手動終止程序。
我想要的是讓這個特定的程序在它開始吃掉交換空間之前被殺死,就像沒有明天一樣。我發現了一個 github 頁面,其中討論了使用看門狗殺死程序(實際上已經完成)-https://github.com/rfjakob/earlyoom-我可以稍微更改該程式碼以僅尋找並殺死這個特定的錯誤程序,但如果我可以簡單地拒絕對指定程序使用交換空間並讓它簡單地被殺死,那就太好了。我想更尷尬的是,在正常情況下獲得少量交換空間就可以了;只有當它在尋求消耗宇宙中所有的記憶時,它才需要殺死。
我認為沒有辦法限制交換空間,除非您將程序修改為僅請求不可交換記憶體,即使可能,這也可能是不切實際的。
但是,您可以並且應該做的是限制程序可用的記憶體總量。您可以使用cgroups(新的通用方式)、ulimit(setrlimit,傳統方式)或超時工具。