linux中 vm.overcommit_memory 的含義


vm.overcommit_memory 表示內核在分配內存時候做檢查的方式。
這個變量可以取到0,1,2三個值。對取不同的值時的處理方式都定義在內核源碼 mm/mmap.c 的 __vm_enough_memory 函數中。

  • 取 1 的時候:此時宏為 OVERCOMMIT_ALWAYS,函數直接 return 0,分配成功。

  • 取 2 的時候:此時宏為 OVERCOMMIT_NEVER,內核計算:內存總量×vm.overcommit_ratio/100+SWAP 的總量,如果申請空間超過此數值,則分配失敗。vm.overcommit_ratio 的默認值為50。

  • 取 0 的時候:此時宏為 OVERCOMMIT_GUESS,內核計算:NR_FILE_PAGES 總量+SWAP總量+slab中可以釋放的內存總量,如果申請空間超過此數值,則將此數值與空閑內存總量減掉 totalreserve_pages(?) 的總量相加。如果申請空間依然超過此數值,則分配失敗。

以上為粗略描述,在實際計算時,如果非root進程,則在計算時候會保留3%的空間,而root進程則沒有該限制

vm.overcommit_memory


默認值為:0

從內核文檔里得知,該參數有三個值,分別是:

0:當用戶空間請求更多的的內存時,內核嘗試估算出剩余可用的內存。

1:當設這個參數值為1時,內核允許超量使用內存直到用完為止,主要用於科學計算

2:當設這個參數值為2時,內核會使用一個決不過量使用內存的算法,即系統整個內存地址空間不能超過swap+50%的RAM值,50%參數的設定是在overcommit_ratio中設定。

vm.overcommit_ratio


默認值為:50

這個參數值只有在vm.overcommit_memory=2的情況下,這個參數才會生效。

轉載自:http://blog.sina.com.cn/s/blog_d495ebf80101pwwq.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM