为解决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系统调用方案,系统就能否从调用方(caller)的上下文中释放垂死进程的显存。
基于此,显存才能以更可控的形式来释放,具有CPU亲和性和调用优先级,释放显存的工作量也会由调用方来承当,不过相关操作只容许针对垂死进程来执行。