Large Page 即 大页内存,具体介绍内容直接搜索吧
这里只记录过程。
注意大页内存是预分配的,未配置的应用不会使用这部分内存,相当于独占(内存缩水)
由于配置繁琐,16G以下内存没必要折腾
禁用透明大页THP(Transparent Huge Pages)
透明大页由于性能问题以及兼容问题,直接关闭
echo never > /sys/kernel/mm/transparent_hugepage/enabled
查看大页内存使用情况
grep -i huge /proc/meminfo
查看mysql用户组
id mysql
取消memlock内存限制
cat >> /etc/security/limits.conf<<EOF * soft memlock unlimited * hard memlock unlimited EOF
设置大页内存的分配大小(提前计算mysql需要占用的内存)
cat >> /etc/sysctl.conf<<EOF # 设置要使用的页数。 # 每页通常为 2MB, 1024 * 2MB = 2048MB vm.nr_hugepages=1024 # 设置允许访问这块内存的用户组(本机mysql用户组为1005)。其他应用也可以添加到该用户组共享内存 vm.hugetlb_shm_group=1005 # 增加每个段允许的 shmem 最大数量 # 这取决于你的内存大小,这里设置为4G kernel.shmmax = 4294967296 # 增加共享内存总量: 4K页的倍数,这里设置为2G kernel.shmall = 524288 EOF systclt -p
修改/etc/my.cnf配置
[mysqld] large-pages
最后重启服务
参考文章:
https://www.kernel.org/doc/Documentation/vm/transhuge.txt
https://wiki.debian.org/Hugepages
https://www.mysqlcalculator.com/
https://dev.mysql.com/doc/refman/8.0/en/large-page-support.html
此处评论已关闭