Linux 内核无法优雅地处理内存不足的情况

在 Linux 内核开发者邮件列表中 上调 Linux 中处理低内存情况的问题:

有一个已知问题困扰了很多人很多年,并且可以在最新的 Linux 内核 5.2.6 上在不到几分钟的时间内重现。 所有内核参数均设置为默认值。

步骤:

  • 使用参数“mem=4G”启动。
  • 关闭交换支持 (sudo swapoff -a)。
  • 我们启动任何网络浏览器,例如 Chrome/Chromium 和/或 Firefox。
  • 我们开始打开带有站点的选项卡,并观察可用内存量如何减少。

一旦出现新选项卡需要的 RAM 多于可用 RAM 的情况,系统几乎完全冻结。 您甚至移动鼠标光标都会遇到困难。 硬盘指示灯会不停地闪烁(不知道为什么)。 您将无法启动新的应用程序或关闭当前正在运行的应用程序。

这场小小的危机可能会持续几分钟或更长时间。 我想系统不应该这样做。 我认为需要采取一些措施来避免这种“冻结”。

我很确定可以更改一些 sysctl 参数来避免这种情况,但有件事告诉我,这可能是每个人的默认设置,因为遇到此问题的非技术用户将简单地放弃使用 Linux 并且不会关心。以便在 Google 上搜索解决方案。

В 注释 在 Reddit 上,一些用户建议启用交换,但这并不能解决问题,只会推迟问题的发生,而且往往会让问题变得更糟。 作为未来可能的解决方案,可能会涉及到内核中出现的 4.20 并在核心进行了改进 5.2 PSI(Pressure Stall Information)子系统,允许您分析有关接收各种资源(CPU、内存、I/O)的等待时间的信息。 该子系统可以在早期阶段组织对内存短缺的监控,确定问题的根源并终止不重要的应用程序,而不会对用户造成明显的影响。

来源: opennet.ru

添加评论