我正在尝试使用 systemd-nspawn 开始限制容器的内存利用率。该容器在基于 yocto 的 linux 操作系统(ARM32 架构)中运行。
我面临的问题是容器使用的内存几乎是我实际设置为容器的限制的两倍
我用来启动容器的命令以及内存限制配置如下。
" systemd-nspawn --image=/var/lib/machines/test-container-image.ext4 --console=只读 --register=no --property=MemoryHigh=15M --property=MemoryMax=20M /usr /bin/test-app "
例如,如果我设置 MemoryMax=5M 然后我看到使用 12MB 额外内存后,内存使用保持稳定。
如果我设置 MemoryMax=20M 然后我看到使用 40MB 额外内存后,内存使用保持稳定。
如果我不使用 MemoryMax 设置内存限制,那么测试应用程序完全使用内存和系统关闭
容器成功启动,我的叉子炸弹测试用例也在容器内启动,但是我看到容器使用的内存几乎是我使用 MemoryMax 配置选项设置的两倍。
注意:test-container-image.ext4 是容器镜像名称,并且 test-app 安装在容器内 基本上 test-app 运行一个 fork 炸弹测试用例,它完全使用设备内存并由于内存使用完全而使设备关闭。