systemd-nspawn を使用して開始されたコンテナーのメモリ使用量を制限しようとしています。コンテナーは、yocto ベースの Linux OS (ARM32 アーキテクチャー) 内で実行されています。
私が直面している問題は、コンテナーが使用するメモリが、実際にコンテナーに設定した制限のほぼ 2 倍であることです。
メモリ制限構成とともにコンテナを起動するために使用するコマンドは次のとおりです。
" systemd-nspawn --image=/var/lib/machines/test-container-image.ext4 --console=read-only --register=no --property=MemoryHigh=15M --property=MemoryMax=20M /usr /bin/test-app "
たとえば、MemoryMax=5M に設定すると、12MB の追加メモリを使用した後も、メモリの使用量は安定しています。
MemoryMax=20M を設定すると、40MB の追加メモリを使用した後も、メモリの使用量は安定しています。
MemoryMax を使用してメモリ制限を設定しない場合、テスト アプリは完全にメモリとシステム シャットダウンを使用します
コンテナーが正常に起動し、フォーク ボム テスト ケースもコンテナー内で開始されますが、コンテナーが使用するメモリは、MemoryMax 構成オプションを使用して設定したよりもほぼ 2 倍になっています。
注: test-container-image.ext4 はコンテナー イメージ名であり、test-app はコンテナー内にインストールされます。基本的に、test-app は、デバイス メモリを完全に使用し、メモリがいっぱいになったためにデバイスをシャットダウンするフォーク ボム テスト ケースを実行します。