overcommit_memory と overcommit_ratio

overcommit_memory と overcommit_ratio

これは私の現在の設定です。

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 = 2RAMの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

おすすめ記事