mysql启用大页内存

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

此处评论已关闭