dro*_*nus 44 memory-management linux-kernel
我尝试将我的开发系统调整到最大的可靠性。我禁用了交换,因为对于 GUI 使用,它主要以这种方式使机器无响应,不再可用。然而,如果激进的应用程序吃掉了内存,一些机制似乎会以速度为代价充分利用它。没有硬盘交换操作,但系统同样也没有响应。所以我想让 OOM 杀手在系统对内存增益做出任何特殊努力之前启动。例如,如果可用物理内存少于 100 MB,是否可以配置 OOM 杀手来采取行动?
Jak*_*kob 45
我也在这个问题上挣扎。我只是想让我的系统保持响应,无论如何,我更喜欢丢失进程而不是等待几分钟。似乎没有办法使用内核 oom 杀手来实现这一点。
但是,在用户空间,我们可以为所欲为。因此,我编写了 Early OOM 守护进程 ( https://github.com/rfjakob/earlyoom ),一旦可用 RAM 低于 10%,它将终止最大的进程(通过 RSS)。
没有earlyoom,通过启动http://www.unrealengine.com/html5/几次很容易锁定我的机器(8GB RAM)。现在,有罪的浏览器标签会在事情失控之前被杀死。
psu*_*usi 12
内核的默认策略是只要有空闲的物理内存,就允许应用程序继续分配虚拟内存。物理内存在应用程序访问它们分配的虚拟内存之前不会实际使用,因此应用程序可以分配比系统更多的内存,然后稍后开始访问它,导致内核内存不足,并触发 out内存 (OOM) 杀手。然而,在 hogging 进程被杀死之前,它已经导致磁盘缓存被清空,这使得系统响应缓慢,直到缓存重新填充。
您可以通过将值 2 写入 来更改默认策略以禁止内存过量使用/proc/sys/vm/overcommit_memory。的默认值为/proc/sys/vm/overcommit_ratio50,因此内核将不允许应用程序分配超过 50% 的 ram+swap。如果您没有交换区,那么内核将不允许应用程序分配超过 50% 的内存,而将另外 50% 的空间留给缓存。这可能有点过分,因此您可能希望将该值增加到 85% 左右,这样应用程序最多可以分配 85% 的内存,为缓存留出 15%。
小智 11
对我来说,设置 vm.admin_reserve_kbytes=262144 就是这样做的。OOM 杀手会在系统完全无响应之前进行干预。
Tam*_*man -1
在壁橱里举办聚会并将“清理我的壁橱”放在你的小播放列表中是错误的。
是否有可能让OOM杀手更早介入?
这样做会产生意想不到的副作用,因为您无法控制被杀死的内容。
我尝试调整我的开发系统以达到最大的可靠性。
最大可靠性涉及测试您的系统并根据这些测试改进您的系统。
只是调整随机的东西不会让你有任何进展......
我禁用了交换,因为对于 GUI 使用来说,它通常会导致机器无响应,从而无法再使用。然而,如果攻击性应用程序耗尽了内存,一些机制似乎会启动,以牺牲速度为代价来充分利用内存。
由于内存不足,禁用交换不会改善行为,只会起到相反的作用。
为了提高这种情况下的可靠性,请添加更多内存,以便您的系统响应更快,并且不会在用户无意的情况下杀死随机进程。您不应该求助于低内存条件和这样的机制,尤其是在开发环境中……
没有硬盘驱动器交换操作,但系统同样变得无响应。
内存不足的情况确实会导致无响应,无论您是否有交换。
因此,我想让 OOM 杀手在系统对内存增益做出任何特殊努力之前启动。
正如我上面所解释的,特别的努力弊大于利。相反,您可以自行终止不需要的进程,但我想您不能这样做,因此 OOM 会终止您需要的进程。
例如,如果可用物理内存少于 100 MB,是否可以将 OOM Killer 配置为起作用?
可能是,但是如果您只购买一些额外的内存,那么您将获得更高的投资回报,而如今这并不需要花费太多。考虑一下,如果你继续在低内存条件下工作,从长远来看,你将会搬起石头砸自己的脚。OOM 就像一个法警,它不会帮助你,它会帮助操作系统......
| 归档时间: |
|
| 查看次数: |
10875 次 |
| 最近记录: |