我在使用 parallel_make
时候遇到一个困难,大量并行的 cc1plus
触发系统OOM导致大型编译 upgrade_gcc_on_centos7
无法完成:
parallel_make_oom/dmesg
可以看到内存限制大约10G,当达到内存限制时, cc1plus
被系统OOM杀掉
那么,这个ssh的子进程的内存限制是在哪里继承和配置的呢?
这里可以看到 Task in /system.slice/sshd.service killed as a result of limit of /system.slice/sshd.service
,这表明 linux_oom
受到 cgroup
限制
简单来说 system.slice/sshd.service
位于 /sys/fs/cgroup/memory/system.slice/sshd.service
可以找到 memory.limit_in_bytes
:
cat /sys/fs/cgroup/memory/system.slice/sshd.service/memory.limit_in_bytes
当前值是:
10737418240
折算G恰好就是 10GB
( 10737418240/1024/1024/1024
)
临时修订:
echo 1073741824000 > memory.limit_in_bytes
然后重新执行 parallel_make
Note
详细我准备系统学习 systemd_manage_resources
来完善这方面知识