MySQL + hugepages + memlock

时间:2017-04-26 15:00:21

标签: mysql linux huge-pages

我已经成功配置了我的Ubuntu服务器,因此MySQL可以使用大页面。问题是当我想在memlock中启用my.cnf选项并且/proc/sys/vm/hugetlb_shm_group设置为另一个组时(MySQL是该组的成员)。

# uname -a
Linux hostname 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# mysqld --version
mysqld  Ver 5.5.53-0ubuntu0.12.04.1 for debian-linux-gnu on x86_64 ((Ubuntu))

# egrep ^Huge /proc/meminfo
HugePages_Total:   15000
HugePages_Free:    15000
HugePages_Rsvd:        0
HugePages_Surp:        0

# id mysql
uid=107(mysql) gid=113(mysql) groups=113(mysql),117(hugetlb)

如果/proc/sys/vm/hugetlb_shm_group设置为113,无论memlock选项如何,一切都会顺利进行。

但是,如果我将/proc/sys/vm/hugetlb_shm_group设置为117,则只能使用memlock选项。如果我启用它,我会在MySQL启动时收到此错误:

  

InnoDB:HugeTLB:警告:无法分配21978152960个字节。错误1

     

InnoDB HugeTLB:警告:使用常规内存池

知道什么是错的吗?

1 个答案:

答案 0 :(得分:1)

原来是ulimit的问题。 /etc/security/limits.conf中的设置会被忽略,因此我可以使用/etc/init/mysql.conf中的简单编辑:

exec /usr/bin/mysqld

更改为

script
    ulimit -l unlimited
    /usr/bin/mysqld
end script