首页 > 代码库 > 内核参数vm.overcommit_memory和vm.overcommit_ratio

内核参数vm.overcommit_memory和vm.overcommit_ratio

(1)vm.overcommit_memory

执行grep -i commit  /proc/meminfo

看到CommitLimit和Committed_As参数。

CommitLimit是一个内存分配上限,CommitLimit = 物理内存 * overcommit_ratio(默认50,即50%) + swap大小

Committed_As是已经分配的内存大小。

--------

vm.overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2                             
0: (默认)表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。0 即是启发式的overcommitting handle,会尽量减少swap的使用,root可以分配比一般用户略多的内存
1: 表示内核允许分配所有的物理内存,而不管当前的内存状态如何,允许超过CommitLimit,直至内存用完为止。
2: 表示不允许超过CommitLimit值
 

(2)vm.overcommit_ratio

默认值为:50 (即50%)

这个参数值只有在vm.overcommit_memory=2的情况下,这个参数才会生效。