Pages

Wednesday, 27 September 2017

vm.overcommit_memory

相关英文文档阅读
overcommit_memory[http://www.win.tue.nl/~aeb/linux/lk/lk-9.html#ss9.6]
Overcommit and OOM[http://www.win.tue.nl/~aeb/linux/lk/lk-9.html#ss9.6]
设置方法
很简单,按提示的操作(将vm.overcommit_memory 设为1)即可:
有三种方式修改内核参数,但要有root权限:
(1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效
(2)sysctl vm.overcommit_memory=1
(3)echo 1 > /proc/sys/vm/overcommit_memory
设置完后,可以通过 sysctl -n vm.overcommit_memory 验证设置是否生效。
延伸阅读
OOM
当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。当oom-killer发生时,linux会选择杀死哪些进程?选择进程的函数是oom_badness函数(在mm/oom_kill.c中),该函数会计算每个进程的点数(0~1000)。点数越高,这个进程越有可能被杀死。每个进程的点数跟oom_score_adj有关,而且oom_score_adj可以被设置(-1000最低,1000最高)。
查看内存总量和已用内存
grep -i commit /proc/meminfo
看到CommitLimit和Committed_As参数。
CommitLimit是一个内存分配上限,CommitLimit = 物理内存 * overcommit_ratio(默认50,即50%) + swap大小
Committed_As是已经分配的内存大小.

No comments:

Post a Comment