Logo Hardware.com.br
angeloshimabuko
angeloshimab... Veterano Registrado
933 Mensagens 67 Curtidas

Desempenho do MySQL no Linux

#1 Por angeloshimab... 09/10/2007 - 11:54
Para os administradores que precisam de um serviço MySQL com alto desempenho, uma dica - testem o tcmalloc() da Google em substituição ao malloc() da Glibc.

Vejam esse teste, de Andrew Doran, comparando o desempenho multithreaded do MySQL entre o Linux, NetBSD, FreeBSD e OpenBSD:
http://kerneltrap.org/mailarchive/netbsd-tech-kern/2007/9/28/327638

O Linux possui o melhor desempenho entre todos, mas tem uma queda acentuada de desempenho, quando o número de threads aumenta. Isso foi observado também neste teste:
http://jeffr-tech.livejournal.com/6268.html#cutid1

Anton Blanchard confirmou esse comportamento, mas notou que o problema não é do kernel Linux, mas da função malloc() da Glibc. Trocando essa função pela tcmalloc() desenvolvida pelo Google, o desempenho estabiliza:
http://ozlabs.org/~anton/linux/sysbench/

e isso foi confirmado por Andrew Doran:
http://kerneltrap.org/mailarchive/netbsd-tech-kern/2007/10/4/329788

Existem 2 modos para utilizar a tcmalloc(): (i) recompilar a aplicação (MySQL neste caso) ou (ii) definir o uso da biblioteca, usando a variável LD_PRELOAD:
$ LD_PRELOAD="/usr/lib/libtcmalloc.so"
A função tcmalloc() está contida nas ferramentas "Google performance tools", disponível em
http://code.google.com/p/google-perftools/downloads/list

Use(m) com cautela, pois ainda está na versão 0.93 (nos testes acima, foi usada a versão 0.8, também disponível para download).

PS: parece que a tcmalloc() pode melhorar o desempenho do Squid também:
http://wiki.wikked.net/wiki/Squid_memory_fragmentation_problem
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal