A adição de CPUs coloca o desempenho do MySQL 5.5 (Debian) baixo

8

Estou prestes a configurar um servidor de banco de dados (MySQL) no container OpenVZ e tenho me perguntado quantas CPUs devo atribuir a ele. Eu decidi compará-lo. Eu comparei duas distribuições OS / MySQL e testei como elas se davam com 1, 2, 3 e 4 CPUs.

A primeira configuração de software foi:

  • Lançamento do CentOS 6.5 (Final)
  • mysql Ver 14.14 Distrib 5.1.71, para redhat-linux-gnu (x86_64) usando 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 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 pronto para uso sem nenhum ajuste de configuração personalizado.

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

Em ambos os casos, o mecanismo da tabela era InnoDB.

A saída que eu estava vendo 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 não consegue aproveitar adequadamente várias CPUs. Enquanto o desempenho com 2 CPUs é maior do que com 1, é claramente menor que no CentOS / MySQL5.1. Além disso, diminui quando adicionamos mais CPUs no topo de 2, o que é realmente estranho.

Alguém por favor pode explicar o que está acontecendo lá? Por que diabos o MySQL teria um desempenho pior quando adicionamos CPUs?

    
por Greendrake 11.12.2013 / 12:48

3 respostas

2

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

bug no MySQL 5.5 .

    
por 23.05.2014 / 10:29
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 arquitetura que suporta múltiplos processadores multi-core, basta parar e pensar um momento das implicações sobre o ciclo de interrupção em qualquer limitação de largura de banda de barramento implantada ... em qualquer evento de desempenho ... entendendo que sua arquitetura irá engarrafar E / S de gargalo ou Bits Por Ciclo, novamente tenha em mente que múltiplos processadores precisa de vários segmentos ... por isso, não importa a velocidade do seu FSB ... se o seu hardware for de apenas 64 bits, a conectividade elétrica física terá que 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 de sistema de 64 bits para uma placa de 256 bits. Você pode obter uma produtividade x3 vezes melhor em tilt total, já que x1 será gasto com a inserção / manutenção de op Entretanto, durante as operações normais, você pode experimentar uma realidade desconfortável sobre a sobrecarga, quando só precisa de um único processador / operador. Eu acho que é um ato de equilíbrio ou, mais especificamente, o cavalo certo para o curso certo. Steveo Reedo nextfriend @ live.co.uk

    
por 12.01.2014 / 17:16
0

Quando você adiciona CPUs, a coisa fará 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 na maioria das vezes significa mais gorda) do software que está testando.

    
por 12.01.2014 / 16:34