首页 > 数据库 > SQL Server > 技术分享 | 浅谈一下大页
作者:杨文
DBA,负责客户项目的需求与维护,会点数据库,不限于MySQL、Redis、Cassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。
本文来源:原创投稿
不需要内存页交换;
减轻快表压力;
减轻换页表的负载;
提高内存的性能,降低 CPU 负载;
如果未调整 HugePages ,可能会引发下面的问题:
数据库性能低下;
出现内存不足或者过度使用交换空间;
数据库实例不能被启动;
关键性系统服务故障;
cat /proc/sys/vm/nr_hugepages
2)查看大页的使用情况:
$ grep Huge /proc/meminfo
HugePages_Total: 150
HugePages_Free: 150
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
1)设置 memlock(内存锁):
vim /etc/security/limits.conf
在文件最后添加信息:
mysql soft memlock unlimited
mysql hard memlock unlimited
2)修改/etc/sysctl.conf:
vi /etc/sysctl.conf
添加/修改信息:
kernel.shmmax = 17179869184
kernel.shmall = 4194304
3)查看 mysql 用户的组信息:
id mysql
4)配置使用大页内存的用户组:
more /proc/sys/vm/hugetlb_shm_group
sysctl -w vm.hugetlb_shm_group=27
5)修改参数停止实例并重启生效:
vi /mysql/data/3306/my.cnf
[mysqld]
large-pages
6)验证 HugePages 配置:
cat /proc/meminfo
ORACLE 官方不建议使用 RedHat 6 、OEL 6 、SLES 11 and UEK2 kernels 时开启透明大页。在 Oracle Linux 6.5、RHEL Linux 6.5+ 版中,已删除 Transparent HugePages 。
对用户透明,不需要用户做特殊配置;
不需要依某种库文件;
1)查看透明大页是否启用了:
# cat /sys/kernel/mm/transparent_hugepage/enabled
2)使用情况监控:
# cd /sys/kernel/mm/transparent_hugepage/khugepaged
说明:
alloc_sleep_millisecs:多长时间整理一次碎片;
pages_collapsed 一个扫描周期被扫描的内存页数;
scan_sleep_millisecs:多长时间扫描一次。
1)临时关闭:
# echo never >> /sys/kernel/mm/transparent_hugepage/enabled
# echo never >> /sys/kernel/mm/transparent_hugepage/defrag
在/etc/rc.local 文件中加入如下内容:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
这两者的区别在于大页的分配机制,标准大页管理是在系统启动时预先分配的,而透明大页管理则是动态分配的方式(在运行时由 khugepaged 进程动态的分配),可以实时配置,不需要重启就能生效配置。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024922/viewspace-2934750/ ,如需转载,请注明出处,否则将追究法律责任。