防止内核和 GUI 冻结

防止内核和 GUI 冻结

我想优先考虑稳定性而不是性能。因此,当我达到硬件限制时,我希望我的进程而不是整个操作系统挂起

如果需要的话,我希望总是为内核提供一些资源。也许是桌面会话,但我不确定,因为它可能太重,占用太多资源

但通常情况下,占用我 95% 资源的是会话中运行的程序。我希望它们占用更少的资源,即使这意味着它们会冻结,只要 WM 和内核有资源呼吸,让我的鼠标移动。理想情况下从 GUI 终端或至少是 TTY 执行命令

我不希望 OOM 杀手让我所有的工作消失或者被迫重新启动我的整个系统

限制资源使用将使 OOM 休眠,因为还会剩下一些资源,并且内核不会挂起,因此我不必重新启动,因此不会丢失任何工作

我知道程序可以在我们提供给它们的资源上运行。我在小型计算机和大型计算机上使用相同的程序,并且它们总是运行。所以应该有一种方法可以让他们以一种好的方式减少使用

我不想否认过度使用,许多软件甚至依赖它来运行。我更喜欢限制,他们会更好地处理它

答案1

vm.overcommit_memory您可以通过设置来禁用内存过量使用2

2 - 不要过度投入。系统的总地址空间提交不允许超过交换区 + 物理 RAM 的可配置量(默认为 50%)。根据您使用的数量,在大多数情况下,这意味着进程在访问页面时不会被终止,但会在适当的情况下收到内存分配错误。

如果这样做,内核只会将内存分配给它实际上可以为进程保证的应用程序。另一方面,当启用过量使用时,假设大多数应用程序请求的内存比它们实际使用的内存多,内核将分配比其实际拥有的更多的内存。禁用过度使用后,应用程序可能无法请求更多内存。请求应用程序可能会崩溃(取决于它如何处理malloc()返回NULL)。

https://www.kernel.org/doc/Documentation/vm/overcommit-accounting

相关内容