これは私の現在の設定です。
vm.overcommit_ratio = 50 (default)
vm.overcommit_memory = 2
現在のメモリ使用量:
[localhost~]$ free -g
total used free shared buffers cached
Mem: 47 46 0 0 0 45
-/+ buffers/cache: 1 45
Swap: 47 0 47
~によると文書私の理解は次のとおりです
vm.overcommit_memory = 2
RAMの50%を超えるメモリオーバーコミットは許可されていませんが(as vm.overcommit_ratio is 50)
、現在のメモリ使用量は47GBのうち46GBであることがわかります。
私が何かを間違って理解したのでしょうか?
ベストアンサー1
実際にvm.overcommit_memory = 2を設定すると、過剰なコミットが許可されます。 overcommit_ratio を (たとえば) 200 に設定すると、メモリをスワップ + (RAM*200/100) の範囲にコミットできます。
カーネル文書は少し誤解を招く可能性があります。 「2」はオーバーコミットしないことを意味します。これは、この制限にコミットすることを意味します。これは、実際にはovercommit_ratio(実際にはパーセンテージなので無効な名前です)が100より大きい場合に許可されます。 。
vm.overcommit_memoryは、オーバーコミット制限を設定することでより正確に説明されています。基本的に過度の使用は許可されていません。
送信制限を確認できます。
$free -m | awk '$1 ~/[Mm]em/ {print $2}' ; sysctl -a 2>/dev/null | grep vm.over ; grep -i commitlimit /proc/meminfo
vm.overcommit_kbytes = 0
vm.overcommit_memory = 2
vm.overcommit_ratio = 800
CommitLimit: 23449596 kB