24 Desempenho do servidor núcleo

2

Eu tenho um sistema quad-hexacore baseado nos chips Opteron 8345 - são 24 núcleos com 48GB de RAM. Esta caixa foi criada para substituir a atual caixa de seis núcleos da Intel na qual minha pilha LAMP atual é executada. No entanto, estou tendo um desempenho ainda pior que o dos seis núcleos. Estou correndo:

  • Centos 5
  • MySQL 5.0
  • PHP 5.2.13
  • Apache 2.2.9

É quase como se a caixa fosse muito poderosa? Alguém já teve alguma experiência com caixas grandes de SMP como essa?

[root@gb-sanguine ~]# uname -a
Linux gb-sanguine.bountyonline.local 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:08:30 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

[root@gb-sanguine ~]# php -v
PHP 5.2.13 (cli) (built: Jun  2 2010 16:29:01)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

[root@gb-sanguine ~]# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

[root@gb-sanguine ~]# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jun  2 2010 11:15:28

[root@gb-sanguine ~]# mysql -V
mysql  Ver 14.12 Distrib 5.0.77, for redhat-linux-gnu (x86_64) using readline 5.1

Por favor, veja o link para a saída do dmesg.

Muito obrigado antecipadamente por sua ajuda pessoal.

    
por Khushil 02.07.2010 / 22:06

6 respostas

4

cat / proc / cpuinfo

todas as CPUs são realmente reconhecidas? Eu não sei sobre o CentOS, mas, alguns kernels ativam o SMP, mas limitam o número de núcleos para 8 como padrão.

O top mostra processos em cada cpu? shift-O, j

O seu aplicativo não é multithread?

Ele reconhece todos os 24 núcleos, portanto, essa teoria é efetivamente negada. A única outra coisa simples que eu posso ver é que o seu regulador de economia de energia da CPU pode estar rodando a CPU em 800 MHz em vez de 2,6 GHz.

O que seu aplicativo faz? aplicativo web típico? ou há uma parte que não é capaz de ser multithread? O mysql está configurado para usar mais núcleos (thread_concurrency)? Quando você assiste a máquina funcionando, o que é mais lento? tempo de conexão de rede? Taxa de transferência da CPU? acesso ao disco? configurações do sysctl.conf migradas da outra caixa? quaisquer ajustes / modificações nas configurações do mysql / apache / php que não foram movidas?

você pode colar: cat / proc / mtrr

    
por 02.07.2010 / 22:18
2

Problemas de cache memória . Você precisa ser cuidadoso sobre como esses núcleos são encaixados e como as tarefas são geradas por eles. Eu tive um servidor ir de 6-core rápido para lento 8-core em um sistema de 12 núcleos (2 soquetes). Então, basta ter muitos núcleos e memória RAM não significa que você deve usar cegamente todos eles.

Sugiro usar seu sistema de 24 núcleos para executar um host de virtualização como o KVM. Em seguida, pode ser mais fácil particionar sua carga de trabalho em várias VMs menores. Você pode fixar núcleos específicos em VMs específicas. Portanto, se o seu sistema de 24 núcleos for um 4-core de 4 socketed ou 6-socketed de 6 sockets, você poderá ter um controle refinado sobre o desempenho. Haverá uma diferença no desempenho entre os dois.

Felicidades.

    
por 03.07.2010 / 08:41
1

Coloque um novo MySQL nele - 5.1 pelo menos, ou melhor, XtraDB da Percona . Certifique-se de estar usando o InnoDB. O MySQL 5.0 é dimensionado negativamente (ou seja, diminui o desempenho) com mais de 8 núcleos em minhas experiências.

    
por 03.07.2010 / 01:37
1

Dependendo da carga de trabalho e versão do kernel, aumentar o número de CPU pode muito bem diminuir o desempenho (implementação de semáforo do Big Kernel Lock com uso pesado de bloqueio de arquivos POSIX vem à mente, isso é algo que foi observado no RHEL / CentOS 5).

Você verificou se obtém melhor desempenho reduzindo o número de CPUs? (maxcpus =)

Caso contrário, você deve criar um perfil de seu aplicativo / sistema para rastrear o gargalo. Se isto é ligado à CPU, o OProfile deve ajudar. O SystemTap também vem à mente.

    
por 03.07.2010 / 02:34
0

Você viu afunilamentos de desempenho da CPU no passado? Você está vendo um problema de taxa de transferência agora, em vez de um gargalo da CPU.

Com 6 sockets, os dados precisam ser obtidos da RAM para cada CPU, e dependendo de como o cache é gerenciado, você pode estar fazendo muito mais falhas de cache (L1, L2, L3 cache neste contexto, que normalmente é no chip, ou pelo menos na matriz em instâncias multi core) e fazer leituras de memória em vez de leituras de cache L2.

Às vezes, jogar recursos em um problema não ajuda, se o problema não for falta de recursos.

No entanto, +1 para hardware kick ass! Uau! 24 núcleos!

    
por 02.07.2010 / 22:13
0

Na verdade, como um simples servidor de pilha LAMP, é um pouco poderoso demais.

Você pode procurar virtualizar a caixa e ela substituirá não apenas o que ela pretende substituir e talvez mais alguns servidores em seu farm.

    
por 07.11.2013 / 11:39