昨天开发同事反馈说将主机内存由之前的64G调低到32G后系统起不来了,再调回64G才起来,怀疑是大页设置问题,后面检查大页设置了20991,大页大小为2MB(Hugepagesize:2048 kB)也就是大页如果都分配需要消耗42G内存,但如此真的会导致内存不够分配大页而系统都起不来么
在本机上做了个实验:
未设置大页时总内存为3830,可用内存还有 3664
[root@ora11g1 ~]# free -m
total used free shared buffers cached
Mem: 3830 3664 166 0 32 2702
-/+ buffers/cache: 930 2900
Swap: 4095 1 4094
查看大页大小为 2048 kB (2MB)
[root@ora11g1 ~]# cat /proc/meminfo |grep Hugepagesize
Hugepagesize: 2048 kB
将大页数量设置为3000 ,大于总内存能提供的数量
[root@ora11g1 ~]# echo "vm.nr_hugepages = 3000" >> /etc/sysctl.conf
[root@ora11g1 ~]# cat /etc/sysctl.conf |grep vm
vm.nr_hugepages = 3000
重启系统发现系统确实等了好久还没起来,差不多等了一两分钟才起来
系统起来后又等了一分钟才用SSH连上,再次查看内存:
[root@ora11g1 ~]# free -m
total used free shared buffers cached
Mem: 3830 3743 87 0 4 12
-/+ buffers/cache: 3726 104
Swap: 4095 210 3885
[root@ora11g1 ~]# cat /proc/meminfo |grep Huge
AnonHugePages: 0 kB
HugePages_Total: 1816
HugePages_Free: 1816
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
可以看到内存已经消耗了97.7%(3743/3830),大页分配了 1816个,即大页消耗了 3632MB内存。
从这里说明 大页的分配不是设置了多少就一定要分配这么多,如果不够分配那就是能最大的分配多少就分配多少了,但是因为大页设置过大,消耗了大量的内存,是会导致系统启动时间超长的问题,从表面看可能就是系统起不来了。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




