当前位置: 首页 > 科技观察

Linux5.15改进系统内存调用以更快释放垂死进程的资源

时间:2023-03-12 00:53:26 科技观察

为了解决systemd-oomd或Android的LMKD等内存问题,Linux社区开发人员一直提议引入更好的系统调用策略以更快地释放垂死进程的进程内存。例如,今年夏天早些时候,Phoronix的MichaelLarabel提出了一个名为“process_reap”的系统调用,其特点是能够在压力下更快地回收内存资源。(来自:Kernel.org)最新消息是这项工作已经进化为“process_mrelease”,Linux5.15也为新的系统调用策略做好了准备。使用新系统调用的最大优势是更快、更可预测地回收垂死进程的内存资源。Phoronix指出,传统的Linux(尤其是桌面Linux)并不能很好地处理内存压力,但systemd-oomd、各种内核创新以及现在的process_mrelease都在这几年取得了稳步进展。在补丁合并到Linux5.15之后,AndrewMorton继续深入解释了process_mrelease系统调用是如何工作的:对于这样的系统组件来说,能够快速高效地释放内存资源是非常重要的。不幸的是,进程在收到SIGKILL后释放内存所花费的时间可能因进程的状态(不间断睡眠)、运行的核心大小和OPP级别而异。找到一种机制以更可预测的方式释放目标进程的资源,也将提高系统控制其内存压力的能力。通过引入process_mrelease系统调用方案,系统能够从调用者的上下文中释放垂死进程的内存。基于此,可以更可控地释放内存,具有CPU亲和性和调用优先级,释放内存的工作量也将由调用者承担,但相关操作只允许对垂死的进程进行。