相关疑难解决方法(0)

如何禁用linux中的oom杀手?

我目前的配置是:

> cat /proc/sys/vm/panic_on_oom
0
> cat /proc/sys/vm/oom_kill_allocating_task
0
> cat /proc/sys/vm/overcommit_memory
1
Run Code Online (Sandbox Code Playgroud)

但是当我执行任务时,无论如何都会被杀死.

> ./test/mem.sh
Killed
> dmesg | tail -2
[24281.788131] Memory cgroup out of memory: Kill process 10565 (bash) score 1001 or sacrifice child
[24281.788133] Killed process 10565 (bash) total-vm:12601088kB, anon-rss:5242544kB, file-rss:64kB
Run Code Online (Sandbox Code Playgroud)

更新

我的任务习惯于科学计算,这需要花费很多回忆,似乎overcommit_memory=1可能是最好的选择.

更新2

实际上,我正在研究一个数据分析项目,它花费的内存超过了16G,但我被要求限制它们5G.可能无法通过优化程序本身来实现此要求,因为项目使用了许多子命令,并且大多数子命令不包含类似Java XmsXmxJava 中的选项.

更新3

我的项目应该是一个过度的系统.正如a3f所言,似乎我的应用程序更喜欢xmalloc在mem分配失败时崩溃.

> cat /proc/sys/vm/overcommit_memory
2
> ./test/mem.sh
./test/mem.sh: xmalloc: .././subst.c:3542: cannot allocate 1073741825 bytes …
Run Code Online (Sandbox Code Playgroud)

linux cgroups docker

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

cgroups ×1

docker ×1

linux ×1