overcommit_memory==2 の場合、スワップオフは失敗します。

overcommit_memory==2 の場合、スワップオフは失敗します。

設定でメモリオーバーコミットを無効にしましたovercommit_memory=2。これで、swapoff次のエラーが発生します。

swapoff: /dev/sda5: swapoff 失敗: メモリを割り当てることができません。

しかし、実際には0 MiBスワップスペースと空きメモリがたくさんあります! 100に設定してみましたovercommit_ratioが、何の変更もありませんでした。

一時的にデフォルトに設定し、乱用を再び無効にすると成功する可能性がovercommit_memory=0あります。swapoff

なぜそんなに奇妙な行動をするのでしょうか?これはバグですか?


編集するコメントで質問したように:

$ grep -E '^Mem|Commit' /proc/meminfo
MemTotal:        2044420 kB
MemFree:          751836 kB
CommitLimit:     4122112 kB
Committed_AS:    2752544 kB

ベストアンサー1

@Matが指摘したように、Commited_AS> MemTotalです。つまり、実際に持っているよりも多くのメモリを割り当てたため、スワップを無効にした場合はオーバーコミットすることになったはずです。したがって、オーバーコミットを許可しないと、一部のメモリが解放されるまでスワップを無効にすることはできません。

割り当てられたすべてのメモリは実際にはありません。使用されるだから、多くのメモリを割り当てたにもかかわらず、まだ利用可能なメモリが残っています。

おすすめ記事