問題の単一のLinuxプロセスのメモリ使用量の制限誰かが含める/etc/default/grub
ファイルを変更すると言いました。GRUB_CMDLINE_LINUX_DEFAULT
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
swapaccount=1
効果は何ですか?適用には危険または欠点がありますか?
答え1
明らかにそれを活性化するために使用されたスワップ会計つまり、カーネルに各制御グループ(単にcgroup)のスワップ使用量を監視および制限するように指示します。 RedHatはRHEL7でデフォルトでそれを有効にし始めたように見えるので、欠点は最小限に抑えられます。
カーネル構成(通常は/boot/config-<kernel_version>
)を確認する必要があります。次の行が含まれている場合:
CONFIG_MEMCG_SWAP=y
その後、cgroupスワップ使用量を追跡し、swapaccount=
起動オプションを使用できます。実際の制限は、スワップ制限付きのcgroupが作成され、プロセスがそのcgroupに移動される場合にのみ適用されます。
次の行も含まれている場合:
CONFIG_MEMCG_SWAP_ENABLED=y
デフォルトでは有効になっているため、swapaccount=1
必要に応じて明示的な起動オプションを使用して無効にする必要があります。swapaccount=0
systemd
Dockerは一般的な機能の一部としてcgroupを広く使用しています。
答え2
FWIW、カーネルコマンドラインオプションは廃止swapaccount=
されました。https://github.com/torvalds/linux/commit/b25806dcd3d5248833f7d2544ee29a701735159f。カーネルは常にswapaccount=1
指定されたとおりに動作します。