Linux 5.15改進系統內存調用 可更快釋放垂死進程的資源

為解決 systemd-oomd 或 Android 的 LMKD 等內存問題,Linux 社區開發者一直提議引入更好的系統調用策略,以更快地釋放垂死進程的內存。比如今夏早些時候,Phoronix 的 Michael Larabel,就提出了一個名叫“process_reap”的系統調用方案,特點是能夠在壓力下更快地回收內存資源。

Linux 5.15改進系統內存調用 可更快釋放垂死進程的資源

(來自:Kernel.org)

最新消息是,這項工作已經演變成為了“process_mrelease”,且 Linux 5.15 也做好了迎接新版系統調用策略的準備。而使用新系統調用的最大優勢,就在於能夠更快、更可預測地回收垂死進程的內存資源。

Phoronix 指出,傳統 Linux(尤其是桌面 Linux)無法很好地應對內存壓力,但近年來 systemd-oomd、各種內核創新、以及現在的 process_mrelease,都已經取得了穩步的發展。

在該補丁合併到 Linux 5.15 之後,Andrew Morton 繼續深入解釋了 process_mrelease 的系統調用方式:

對於此類系統組件來說,能夠快速高效地釋放內存資源,是非常重要的一點。

遺憾的是,進程在收到 SIGKILL 后釋放內存所需的時間、可能因進程的狀態(不間斷睡眠)、正在運行的核心大小、以及 OPP 級別而異。

若能夠找到以更可預測的方式來釋放目標進程資源的機制,也將能夠提升系統控制其內存壓力的能力。

通過引入 process_mrelease 系統調用方案,系統就能夠從調用方(caller)的上下文中釋放垂死進程的內存。

基於此,內存能夠以更可控的方式來釋放,具有 CPU 親和性和調用優先級,釋放內存的工作量也會由調用方來承擔,不過相關操作只允許針對垂死進程來執行。

(0)
上一篇 2021-09-07 13:17
下一篇 2021-09-07 13:17

相关推荐