在嵌入式系统上,有 2 个 tmpfs 挂载。1GB 挂载到 /tmp,另外 1GB 挂载到 /run,总 RAM 为 8GB。未使用交换空间。
如果其中一个达到其极限,系统就会自行重置。
即以下两个验证都会导致重置。
cat /dev/urandom > /tmp/foo
或者cat /dev/urandom > /run/foo
我原本期望 OOM-Killer 和/或 cgroups 能够启动并避免此类问题。
内核端和 systemd 端应该配置错了什么?
编辑:另一项测试显示 OOM-killer 正在尝试完成其工作
~ # dd if=/dev/urandom of=/tmp/somefile bs=1M count=950 ; rm /tmp/somefile
Killed
~ # free
total used free shared buff/cache available
Mem: 11789532 2487424 8363864 29148 1208604 9961408
Swap: 0 0 0
--> reset kicks in here.