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?
fonte
Respostas:
Não para estourar a bolha de palpites de ninguém, mas isso é um bug no MySQL 5.5 .
fonte
Bem, é uma pergunta realmente importante, sem primeiro saber algo sobre a arquitetura que você está executando .. mas geralmente há um impacto exponencial na taxa de transferência do barramento ao adicionar capacidade de CPU, especialmente a arquitetura que suporta múltiplos processadores multi-core, basta parar e pensar por um momento. as implicações no ciclo de interrupção em qualquer limitação de largura de banda de barramento implantada ... em qualquer evento de desempenho ... entendendo que sua arquitetura engarrafará E / S de pescoço ou Bits por ciclo, lembre-se novamente de que várias CPUs precisam de múltiplos encadeamentos .. portanto, não importa a velocidade do seu FSB ... se você tiver hardware de apenas 64 bits, a conectividade elétrica física precisará compartilhar essa limitação em tantos núcleos no mesmo ciclo de clock ...Agora pare e pense nas implicações positivas da atualização de uma placa-mãe de 64 bits para uma placa de sistema de 256 bits. Você pode obter uma taxa de transferência x3 vezes melhor a toda a inclinação, uma vez que x1 será gasto em enfiar / manter a sobrecarga da operação. uma realidade desconfortável sobre a sobrecarga quando você só precisa de um único processador / operador. Acho que é um ato de equilíbrio ou, mais especificamente, o cavalo certo para o rumo certo. Steveo Reedo [email protected] acho que é um ato de equilíbrio ou, mais especificamente, o cavalo certo para o rumo certo. Steveo Reedo [email protected] acho que é um ato de equilíbrio ou, mais especificamente, o cavalo certo para o rumo certo. Steveo Reedo [email protected]
fonte
Quando você adiciona CPUs, a coisa realiza mais operações em paralelo. Se você não aumentou o número de RAM, a troca pode ocorrer, especialmente se você usar uma versão mais gorda (e mais recente, mais gorda) do software que está testando.
fonte