Adicionar CPUs reduz o desempenho do MySQL 5.5 (Debian)

8

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: insira a descrição da imagem aqui

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?

Greendrake
fonte
A contenção de recursos pode estar em jogo aqui - você tem muitos outros servidores / contêineres virtuais em execução neste host? É possível que os processadores físicos estivessem sob carga durante o benchmark da instalação da Debian?
Blacklight
Os resultados foram / são bastante reproduzíveis. Era meu próprio servidor bare metal doméstico e não o carreguei com mais nada durante o teste.
Greendrake
Quero dizer, havia algumas outras máquinas virtuais no servidor, mas elas estavam ociosas.
Greendrake
Eu teria dito o kernel, mas é o mesmo ... Você poderia tentar usar a mesma versão nos dois sistemas?
miniBill 12/01
um diferente, Debian usa EGLIBC en.wikipedia.org/wiki/Embedded_GLIBC , talvez este não é o problema
c4f4t0r

Respostas:

2

Não para estourar a bolha de palpites de ninguém, mas isso é um bug no MySQL 5.5 .

AnrDaemon
fonte
1

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]

user37008
fonte
0

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.

Thorsten Staerk
fonte