mysql large pages_mysql对large page的支持

在 Linux

操作系统上运行内存需求量较大的应用程序时,由于其采用的默认页面大小为

4KB,因而将会产生较多 TLB Miss

和缺页中断,从而大大影响应用程序的性能。当操作系统以

2MB 甚至更大作为分页的单位时,将会大大减少 TLB

Miss

和缺页中断的数量,显著提高应用程序的性能。这也正是

Linux

内核引入大页面支持的直接原因。好处是很明显的,假设应用程序需要

2MB 的内存,如果操作系统以 4KB

作为分页的单位,则需要 512 个页面,进而在 TLB

中需要 512 个表项,同时也需要 512

个页表项,操作系统需要经历至少 512 次 TLB Miss 和

512 次缺页中断才能将 2MB

应用程序空间全部映射到物理内存;然而,当操作系统采用

2MB 作为分页的基本单位时,只需要一次 TLB Miss

和一次缺页中断,就可以为 2MB

的应用程序空间建立虚实映射,并在运行过程中无需再经历

TLB Miss 和缺页中断(假设未发生 TLB 项替换和

Swap)。

为了能以最小的代价实现大页面支持,Linux

操作系统采用了基于 hugetlbfs 特殊文件系统 2M

字节大页面支持。这种采用特殊文件系统形式支持大页面的方式,使得应用程序可以根据需要灵活地选择虚存页面大小,而不会被强制使用

2MB 大页面。

在mysql中,innodb可以使用large pages来分配buffer

pool跟additional memory pool.

下面来看下mysql使用large pages具体的实现方法

1:查看系统是否支持huge-pages

cat /proc/meminfo | grep -i huge

HugePages_Total: 0

HugePages_Free: 0

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB

Hugepagesize有值,说明系统支持large

pages(如不支持,系统需要重新编译来支持)

2:配置

把配置写入到/etc/sysctl.conf 然后sysctl

-p使其生效

vm.nr_hugepages=200 (大页面的页数)

vm.hugetlb_shm_group=1001(需要使用大页面的用户id

可用id mysql 来查看mysql的ID)

kernel.shmmax=536887296

#kernel.shmall=524288

3:如需使mysql使用large pages,还需设置max

locked-in-memory的大小

用ulimit -a(或者ulimit -l)来查看 max locked

memory (kbytes, -l) 32

vim /etc/security/limits.conf

mysql soft memlock 3145728

mysql hard memlock 3145728

或者用ulimit -l 3145728来设置,

4:vim /etc/mysql/my.cnf

添加large-pages,使得mysql 支持large-pages

5:启动mysql。

在启动mysql的时候,最容易报的错误是:

InnoDB: HugeTLB: Warning: Failed to allocate 138412032 bytes. errno

12

InnoDB HugeTLB: Warning: Using conventional memory pool

这是由于上面配置的两点所致。

1)nr_hugepages

的值*2M应大于(innodb_buffer_pool_size+innodb_additional_mem_pool_size)因为以上谈到innodb可以使用large

pages来分配buffer pool跟additional memory pool.

2)memlock

的设置,在启动mysql时,一定要先查看用ulimit -a

来查看max locked memory

设置是否合理,可以尝试用以上两种方法来设置该值。还有一点,/etc/security/limits.conf配置文件的修改,可能无法通过ssh来查看,故也不能用ssh来启动mysql。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值