MySQL + огромные страницы + мемлок

Я успешно настроил свой сервер 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: Предупреждение: использование обычного пула памяти

Есть идеи, что может быть не так?


person Mrskman    schedule 26.04.2017    source источник


Ответы (1)


Оказалось проблема с ulimit. Настройки в /etc/security/limits.conf игнорируются, поэтому я заработал простым редактированием в /etc/init/mysql.conf:

exec /usr/bin/mysqld

изменился на

script
    ulimit -l unlimited
    /usr/bin/mysqld
end script
person Mrskman    schedule 26.04.2017