Estou prestes a configurar um servidor de banco de dados (MySQL) no contêiner OpenVZ e estive pensando quantas CPUs devo atribuir a ele. Eu decidi compará-lo. Comparei duas distribuições de OS / MySQL e testei como elas funcionavam com 1, 2, 3 e 4 CPUs.
A primeira configuração de software foi:
- Versão 6.5 do CentOS (Final)
- mysql Ver 14.14 Distrib 5.1.71, para redhat-linux-gnu (x86_64) usando o readline 5.1
O segundo:
- Debian GNU / Linux 7 \ n \ l
- mysql Ver 14.14 Distrib 5.5.31, para debian-linux-gnu (x86_64) usando o readline 6.2
Ambos estavam rodando no mesmo kernel - 2.6.32-openvz-042stab083.2-amd64 # 1 SMP sex 8 de novembro - 17:59:25 MSK 2013 x86_64 GNU / Linux.
Todo o software foi instalado a partir de pacotes e usado imediatamente, sem nenhum ajuste personalizado na configuração.
Hardware: 6 GB de RAM, 1-4 CPUs de 3,5 GHz.
Para o benchmarking, usei o sysbench com o seguinte cenário:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
Nos dois casos, o mecanismo da tabela era o InnoDB.
A saída que eu estava analisando era o número de transações por segundo. Os resultados foram bastante estáveis - o erro foi inferior a 1%.
Os resultados foram bons e esperados para o CentOS / MySQL5.1, mas muito estranhos para o Debian / MySQL5.5:
Como você pode ver, o MySQL5.5 no Debian falha ao tirar vantagem de várias CPUs. Embora o desempenho com 2 CPUs seja mais alto que com 1, é claramente mais baixo que no CentOS / MySQL5.1. Além disso, diminui quando adicionamos mais CPUs em cima de 2, o que é realmente estranho.
Alguém pode explicar o que está acontecendo lá? Por que na Terra o MySQL teria um desempenho pior à medida que adicionamos CPUs?