为什么 Linux 会变得无响应?

为什么 Linux 会变得无响应?

这个问题为什么系统会变得无响应?接近了。答案有点解释了可能发生的情况,但我只是不明白为什么这个问题至少从 80 年代以来还没有得到解决。有什么理论上的原因吗?

具体来说,当我的浏览器中有许多选项卡(Firefox 和 Chrome 都会发生)时,系统运行良好,没有明显的性能下降,但有时打开新选项卡(或启动其他浏览器)会导致 HDD发出持续的噪音,并且鼠标/键盘输入响应严重滞后,以至于我宁愿冷重启。这节省了我 10 分钟的时间,也让我白发不少。

我完全禁用了交换,同样的情况发生了。内核不应该杀死第一个达到物理内存限制的进程,或者最大的进程吗?

内核不应该允许任何进程(甚至是有缺陷/恶意的进程,更不用说 Firefox/Chrome)导致无响应,以至于最快的解决办法是冷重启。不管是什么原因。是什么原因?垃圾不能被识别吗?难道不应该自动杀死一个过于“贪婪”的进程,而不是让用户通过重新启动手动杀死所有进程并丢失未保存的数据吗?

我了解 SysRq 键组合和 pkill(>10 分钟),但我不想使用它们中的任何一个。我希望这个问题能够自动解决。

我感兴趣的是为什么这个问题在 Linux 中没有得到解决?

答案1

对于抖动问题有一个解决方法:要自动限制每个进程用户的系统资源,您可以在 Linux(CentOS 和类似版本)上使用 pam_limits 模块(通过 limit.conf),或者在 FreeBSD 上使用登录类功能数据库(通过 login.conf)。您可以限制典型的资源,例如内存使用量、文件和进程的数量、CPU 时间等,从而避免一个进程占用所有资源的情况。

通常,除了编译时设置的内核资源之外,默认情况下没有设置任何限制。

通过激活 Linux 中的控制组 (cgroup),您可以更好地控制复杂性的代价(例如:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/resource_management_guide/ch01

相关内容