Hugepages não utilizadas pelo MySQL 5.0, CentOS 5

4

Eu configurei o Hugepages, mas não vejo nenhum deles reservado. Eu perdi um passo, ou por alguma razão em particular, o MySQL é incapaz de utilizar o Hugepages? Eu não criei uma montagem de hugetlbfs, embora pelo que eu li, o MySQL não chamaria as páginas dessa maneira. Se eu estiver errado, por favor me avise, pois isso seria uma solução trivial. Quase todas as minhas tabelas do MySQL estão usando o InnoDB.

NOTA: eu criei um hugetlbfs, sem alterações conforme o esperado. É possível que a reinicialização retifique essa situação? Eu não gostaria de passar pelo procedimento, pois isso é alta disponibilidade, mas faria isso se necessário.

Estas são as configurações, que acredito serem relevantes.

/etc/sysctl.conf

...
## Huge Pages
vm.nr_hugepages = 4096
vm.hugetlb_shm_group = 27

## SHM
kernel.shmmax = 34359738368
kernel.shmall = 8589934592
...

/etc/security/limits.conf

...
mysql             soft    nofile          12888
mysql             hard    nofile          51552
@mysql            soft    memlock         unlimited
@mysql            hard    memlock         unlimited

/etc/my.cnf

[mysqld]
large-pages
...

grep Huge /proc/meminfo

HugePages_Total:  4096
HugePages_Free:   4096
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

id mysql

uid=27(mysql) gid=27(mysql) groups=27(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh

tail -6 /var/log/mysqld.log

InnoDB: HugeTLB: Warning: Failed to allocate 1342193664 bytes. errno 12
InnoDB HugeTLB: Warning: Using conventional memory pool
120808 15:49:25  InnoDB: Started; log sequence number 0 1729804158
120808 15:49:25 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.95'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  Source distribution

Eu realmente aprecio qualquer ajuda, estou completamente sem idéias. Se eu perdi mais configurações relevantes, ou diagnósticos, por favor, comente e vou adicioná-lo à pergunta.

    
por J. M. Becker 08.08.2012 / 17:23

2 respostas

1

Você pode editar /etc/init.d/mysqld, adicionar o seguinte em prog="MySQL" restart mysql e ver se o problema persiste?

ulimit -l unlimited

Eu suspeito que você esteja seguindo o bug.

link

    
por 05.10.2012 / 17:13
1

Você pode adicionar esta linha

ulimit -l unlimited 

depois da linha 'prog="MySQL"' no script de inicialização /etc/init.d/mysqld e reiniciando o serviço.

Este é um bug no CentOS 5 e deve ser corrigido no Centos 6.

Confirme se isso funciona para você.

    
por 05.10.2012 / 17:08