linux 的overcommit_memory、overcommit_ratio、swappiness 的说明
vm.overcommit_memory
vm.overcommit_memory = 0 vm.overcommit_memory = 1 vm.overcommit_memory = 20 默認設置。表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應用進程。
遺憾的是因為內存是使用啟發式overcommitting handle(會盡量減少swap的使用)而非準確算法計算進行部署,這個設置有時可能會造成系統中的可用內存超載。
1 允許超過CommitLimit,即允許分配所有的物理內存,而不管當前的內存狀態如何。
使用這個設置會增大內存超載的可能性,但也可以增強大量使用內存任務的性能。
2 拒絕超過CommitLimit的分配,即拒絕等于或者大于總可用 swap 大小以及 overcommit_ratio 指定的物理 RAM 比例的內存請求。如果您希望減小內存過度使用的風險,這個設置就是最好的。
公式:CommitLimit = (Physical RAM * vm.overcommit_ratio / 100) + Swap
vm.overcommit_ratio
vm.overcommit_ratio = 90默認為50,為物理內存分配時的比例。
只有當vm.overcommit_memory = 2的時候才會生效
查看系統overcommit信息
# cat /proc/meminfo |grep -i commit CommitLimit: 90971304 kB Committed_AS: 64872556 kBCommitLimit:最大能分配的內存(個人理解僅僅在vm.overcommit_memory=2時候生效),具體的值是
SWAP內存大小 + 物理內存 * overcommit_ratio / 100
Committed_AS:當前已經分配的內存大小
臨時設置
#sysctl vm.swappiness=10vm.swappiness
vm.swappiness = 1默認值為60,代表 當剩余物理內存低于40%(40=100-60)時,開始使用交換空間
vm.swappiness = 0
最大限度使用物理內存,然后才是 swap空間,即在內存不足的情況下–當剩余空閑內存低于vm.min_free_kbytes limit時,使用交換空間。
在內存緊張時優先減少RAM里文件系統緩存的大小,而非使用swap空間,這是一種提高數據庫性能的推薦做法。
vm.swappiness = 1
內核版本3.5及以上、Red Hat內核版本2.6.32-303及以上,進行最少量的交換,而不禁用交換。
vm.swappiness = 10
當系統存在足夠內存時,推薦設置為該值以提高性能。
vm.swappiness = 60
默認值
vm.swappiness = 100
積極的使用交換空間。
對于內核版本為3.5及以上,Red Hat內核版本2.6.32-303及以上,多數情況下,設置為1可能比較好,0則適用于理想的情況下(it is likely better to use 1 for cases where 0 used to be optimal)
臨時設置
# echo 10 > /proc/sys/vm/swappiness轉載于:https://www.cnblogs.com/ctypyb2002/p/9792921.html
總結
以上是生活随笔為你收集整理的linux 的overcommit_memory、overcommit_ratio、swappiness 的说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Solr使用总结
- 下一篇: shell基础09 gawk程序(上)