MySQL e grandes páginas / ganho de desempenho hugetlb em números?

5

O MySQL tem suporte a grandes páginas / hugetlb para o InnoDB. E há muitos posts ( exemplo ) sobre o assunto.

Mas alguém tem exemplos de quais alterações de desempenho eles viram?

Eu vi outros sistemas de banco de dados ganharem desempenho usando o hugetlb. Por exemplo. um armazenamento de valor-chave distribuído mmapped nosql proprietário. A loja ficaria mais lenta à medida que o arquivo mmap expandia para mais de 0,5 GB. Ele não se degradou ainda mais, mesmo depois de 2 ou 3 GB.

A observação foi ao longo das linhas de; se nós armazenamos sessões ativas do usuário, e por exemplo. 100 usuários que tiveram 32MB de dados, a velocidade de leitura seria X registros / seg. Em 3000 usuários, teríamos cerca de 1 GB e a velocidade de leitura seria reduzida para X / 2. A velocidade de leitura abrange tanto a pesquisa de hash quanto a cópia de dados. Todo o acesso era local da máquina, por isso era a memória para copiar a memória.

Agora, se os usuários efetuaram logout, o arquivo de dados da loja permaneceria o mesmo, embora o espaço chave / val fosse reduzido para 32MB, as hashtables fossem rebicadas etc. Mas a velocidade de leitura permanecia em X / 2 e não subir.

Acontece que o TLB falha no cache, e o uso de páginas grandes significava que a velocidade permaneceria em torno de X, mesmo quando os usuários chegassem a 10000 e o arquivo crescesse cada vez mais.

Isso é ótimo e tudo. E o instinto agora me diz que o MySQL deveria ter as mesmas características e que permitir páginas grandes / grandes Mas, sem alguns exemplos, é uma venda difícil de experimentar.

Então, alguém já tentou usar o hugetlb / páginas grandes para obter ganhos de desempenho e qual foi sua experiência (bom / ruim / neutro)? Eu adoraria ouvir tanto o tamanho do DB quanto a mudança de desempenho, se é que você viu.

Números bem-vindos!

    
por user53031 01.09.2010 / 07:05

1 resposta

1

Não é um exemplo do MySQL, mas eu vi esse comportamento exato no Oracle:

link

Como a postagem aponta, veja /proc/meminfo no tamanho de PageTables. Se você estiver vendo um enorme desperdício de RAM nas tabelas de páginas, poderá gastar um tempo significativo da CPU gerenciando-as.

O MySQL também tem algumas notas sobre como implementá-lo e por que você faria:

link

Applications that perform a lot of memory accesses may obtain performance improvements by using large pages due to reduced Translation Lookaside Buffer (TLB) misses.

    
por 25.07.2013 / 03:42