MySQL 开启大页内存

1. 开启大页内存

概述:

有些硬件或操作系统支持大于默认值的内存页(通常为4KB),这个时取决于底层硬件和操作系统.执行大页内存可以检查设备缓冲区的丢失.也可以改进性能.

  • MySQL 使用Innodb 可以使用大页内存为缓冲池和额外的内存池分配内存.

  • MySQL 可以使用大页内存最大为4M ,在Solaris 下可以允许使用256m 内存的页面.

  • MySQL 支持Linux 下的大页内存,Linux 称为 HugeTLB

  • 一般操作系统都启用了大页内存功能.

1.1. 检查是否支持大页内存

[root@dbserver ~]# cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

上面的值是表示内核支持大页内存,但是为0 没有使用配置页面.

::: alert-info
如果没有启用大页内存 请查看hugetlbpage.txt 文档来支持.
:::

1.2. 配置大页内存脚本

如果你的Linux 内核开启了大页面支持,请将以下脚本放入/etc/rc.local文件中. 并附加执行权限.

  • 配置脚本
# 2. Set the number of pages to be used.
# 3. Each page is normally 2MB, so a value of 2000 = 4000MB.
# 4. This command actually allocates memory, so this much
# 5. memory must be available.
# 2.设置使用的页数,每个页如果是2MB ,所以总和就为4000 MB.
echo 20000 > /proc/sys/vm/nr_hugepages

# 6. Set the group number that is permitted to access this
# 7. memory (102 in this case). The mysql user must be a
# 8. member of this group.
# 设置访问大页内存的操作系统的用户组ID ,mysql user 必须在这个组内.
echo 1000 > /proc/sys/vm/hugetlb\_shm\_group

# 9. Increase the amount of shmem permitted per segment
# 10. (12G in this case).
# 单位为字节:计算方式8*1024*1024*1024=
echo 8589934592 > /proc/sys/kernel/shmmax

# 11. Increase total amount of shared memory.  The value
# 12. is the number of pages. At 4KB/page, 4194304 = 16GB.
# 单位为页:计算方式:2097152*4k/1024/1024=8G
echo 2097152 > /proc/sys/kernel/shmall
  • 添加执行权限
chmod +x /etc/rc.local

:::alert-warning
否则不会生效
:::

::: alert-info

对于MySQL 服务器,通常shmaxshmmax 最好是非常接近.
:::

1.3. 重启操作系统

1.4. 验证大页内存开启.


[root@mysql1 ~]# cat /proc/meminfo | grep -i huge
AnonHugePages:     18432 kB
HugePages_Total:    3682
HugePages_Free:     3682
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

1.5. mysql 用户的内存限制

配置MySQL 的内存无限制.请编辑/etc/security/limits.conf 文件.添加以下命令.

mysql            hard    memlock         unlimited  
mysql            soft    memlock         unlimited

1.6. 激活MySQL 的大页内存

MySQL 默认内存大页面支持默认不开启. 请在配置文件中激活.


[mysqld]
large-pages

:::alert-warning
开启了这个选项.innodb 将会自动为缓冲池和额外的内存池使用大页面.如果不能使用大页面则将使用传统内存,并发出警告.
:::

1.7. 重启MySQL 观察页面使用情况.

[root@mysql1 ~]# cat /proc/meminfo | grep -i huge
AnonHugePages:     14336 kB
HugePages_Total:    3682
HugePages_Free:     3677
HugePages_Rsvd:       65
HugePages_Surp:        0
Hugepagesize:       2048 kB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值