问题
Linux默认内存最小单位是页(page),其大小为4k,对于性能敏感型应用来说频繁切换页带来的时间开销,累计起来就是性能损耗,需要尽可能去避免。
解决方案
Linux恰好提供了大页(hugepage)来解决这个问题,默认大页的大小为2M,相当于512个最小页,大大减小了切页的频率也就减小了性能损耗。
操作实现
大页的数量是需要在系统参数中进行配置的,可在运行过程中生效也可以在启动系统的初始化阶段生效。
配置大页数量
这里仅提供其中一种方式:(需要有管理员权限才行)
sudo vi /etc/sysctl.conf
在末尾添加vm.nr_hugepages=1024
意思就是预留大页数量为1024个,总大小为2M*1024=2G
然后保存退出即可。
运行时生效
sudo sysctl -p
也是需要管理员权限
系统启动时生效
sudo reboot
直接重启即可,也需要管理员权限
查看是否生效的方法
cat /proc/meminfo | grep HugePages_Total
这个不需要管理员权限,只要看到数量与我们设置的1024相同就说明预留成功了。
结论
大页内存可减少频繁切页带来的性能损耗,在进行数量配置时要格外谨慎,不能超过可用总内存大小。