32 núcleo (cada núcleo físico) 2.2 GhZ ou 12 núcleos (6 núcleos físicos) 3.0GHZ? [fechadas]

3

Estou trabalhando em um aplicativo multithread (aplicativo de negociação Forex construído em C #) e fiz o upgrade do cliente da máquina de 12 GHz (Intel) para uma máquina de 2.2 Ghz (AMD) de 32 núcleos. Os resultados do benchmark PassMark foram significativamente maiores ao usar multicores fazendo Integer, Floating e outros cálculos, enquanto que para um cálculo de núcleo único foi um pouco mais lento que o pacote (outros que estavam sendo comparados com configuração similar ao 12 core). Ah, ele também vem com 64 GB de RAM (4 vezes mais que o outro) e um SSD muito mais rápido.

Então, depois de configurar e executar o aplicativo nessa máquina, além de não funcionar tão bem, foi significativamente mais lento. Estamos falando de 30 segundos - 1 minuto mais lento em um aplicativo que normalmente completa o processamento em 5 a 20 segundos. O aplicativo usa MAX GRAUS de PARALELISMO (TPL), que eu tentei definir como número de núcleos e também metade disso. Eu também tentei executar single threaded e sem definir limites no thread paralelo.

Embora possa ser que o hardware tenha alguns problemas, estou querendo saber se a velocidade de processamento da CPU é o problema. Eu posso fazer overclock para 3.0 GHZ. Mas isso é uma boa ideia?

Informações do servidor -

AMD link Parece que o benchmark foi errado para começar - oficialmente.

Intel i7 3930k

SO (mesmo em ambos) Windows 7 Professional 64 bits

Problema relacionado - link

EDITAR Eu vejo muita informação útil. Eu quero modificar a questão um pouco agora - Esqueça o processador Intel por enquanto. O que pode ser feito com o sistema AMD para tirar mais proveito disso? Estamos trabalhando no perfil. Tivemos uma análise do DBA na indexação, fragmentação e outros parâmetros, como usos de E / S. Parece haver muito mais leituras e gravações do que na CPU baseada em Intel. Eu vi uma resposta na otimização baseada em AMD. Existe uma maneira de fazer isso além de usar o OpenCL? Como sobre overclock? Isso cozinharia a CPU? Em termos de possuir - eu vejo pessoas meio que irritadas comigo! O PC estava à venda e o chefe e eu discutimos se os recursos disponíveis (4 vezes mais RAM, quase 3 vezes mais CPUs e um driver SSD muito mais rápido) nos ajudariam a ganhar muito desempenho. Estamos sempre olhando para ajustá-lo a partir do final do software, exceto que não (não vou dizer não) acabou por ser aquele estrondo mágico para o dólar que estávamos procurando / esperando. Eu me sinto muito triste com isso - assim, o longo post.

Mais Editar Eu só queria que algum representante da AMD dissesse que isso é besteira. Você está fazendo do jeito errado! Você ignorou isso e não usou esse recurso. Para piorar, li que a AMD fez enormes perdas este ano e está esperando por um resgate. : (

    
por Mukus 19.12.2012 / 04:13

4 respostas

8

Deixe-me ver se entendi. Você atualizou o cliente com base em um palpite e um único benchmark?

Isso é um erro. Os benchmarks são inteiramente artificiais e não refletem como os programas do mundo real irão funcionar. No entanto, direi que eles fornecem uma indicação do desempenho potencial.

Em primeiro lugar, há muito mais para que os aplicativos tenham um bom desempenho em vários núcleos e para usar toda a memória disponível com eficiência.

Muitos aplicativos não são gravados com grande simultaneidade e nem todos os domínios de problemas se prestam a soluções simultâneas. O gargalo no seu aplicativo pode ser bloqueado pela memória compartilhada.

Por exemplo, vi gráficos de aplicativos simultâneos que parecem dimensionar muito bem até quatro segmentos, mas, sem motivo aparente, o desempenho cai linearmente à medida que o número de segmentos é aumentado. Esta é uma indicação de fome de um recurso. Bloqueios são muito caros. Considere o uso de estruturas livres de bloqueio ou minimize a quantidade de recursos compartilhados e a interação entre os threads.

Outra lentidão pode estar em volta dos caches. Um exemplo realmente interessante é o compressor lz4. Versões anteriores eram muito rápidas, mas outro compressor mais complexo (mal-humorado) dava desempenho semelhante. O motivo foi devido à maneira como os caches são usados. Não subestime isso. Se você sabe o que está fazendo, pode acelerar alguns algoritmos e estruturas de dados por muitos múltiplos, o que é exatamente o que o autor do LZ4 fez.

Veja o link a seguir em favor do interesse: link

A primeira coisa que eu faço é rodar o seu código no sistema 32 core e ver se você pode criar um perfil para ter uma idéia de onde ele está gastando seu tempo. Provavelmente é com fechaduras. Além disso, tente reduzir o número de threads e o benchmarking novamente. Você pode encontrar aumentos de desempenho - na verdade, eu diria que é provável.

    
por 19.12.2012 / 05:18
4

Uma maneira de pensar sobre isso: Você passou de 12 núcleos x 2 threads por núcleo (HT ativado) x 3,0 ghz = 72,0 para um sistema com 32 x 1 x 2,2 = 70,4.

Editar: Com base em suas informações atualizadas, o 3930k, conforme descrito na ARK, tem um arco de 6x2 = 12 encadeamentos, e não um arco de 12x2, como sugeri. ( link )

Visão simplista do sistema - Intel possui núcleos físicos mais eficientes, enquanto os núcleos "virtuais" (HT) são menos eficientes, e há muitas outras variáveis a considerar - controlador de memória de canal triplo, etc.

Mas uma coisa possivelmente se destaca: o bloqueio de threads. Se houver encadeamentos que bloqueiem / impeçam a execução de outros encadeamentos, as taxas de relógio mais rápidas e as arquiteturas mais eficientes vencerão tendo simplesmente mais capacidade de encadeamento. Isso é mais um problema de otimização de software.

Outra coisa a considerar: você está usando um compilador otimizado para AMD para o aplicativo C # ou ainda está usando a versão otimizada da Intel? Edit: Visual Studio e a maioria dos outros compiladores têm opções que permitem que você direcione arquiteturas de CPU específicas, ou seja, ARM de 32 bits versus 64 bits, conjuntos de instruções específicas (SSE2 / SSE3 / SSE4 etc). Eu me pergunto em voz alta se isso poderia ser um fator em jogo?

    
por 19.12.2012 / 04:40
2

Há muitas coisas a serem consideradas.

  • O SSD é o único "drive" no sistema? Se o SSD NÃO for a única unidade no sistema, o SSD está sendo usado apenas para o sistema operacional? Você está empregando o RAID para o aplicativo e, em caso afirmativo, se conecta a outros servidores que são bancos de dados que executam o RAID? Descobriu-se que o RAID matou alguns aspectos da recuperação de dados do banco de dados.

  • Com relação à CPU, você realmente precisa do número do modelo do chip para saber que está comparando o Apples ao Apple. O número do modelo informará o cache do chip, o número de núcleos e o número de segmentos, a velocidade do processador, o tipo de barramento no chip e a velocidade do pipeline entre os núcleos. Por exemplo, uma CPU Intel pode ter uma largura de banda de 8,00 GT / s e outra CPU pode ter uma largura de banda de 6,5 GT / s ... e entre núcleos isso é muito importante. Se os dados estão presos em um núcleo da CPU depois de fazer o seu trabalho ... ele efetivamente bloqueia todo o sistema, hardware e software.

Processadores do servidor Intel

Processadores AMD Server

  • Você verificou o tamanho do conjunto de dados e a extensão do aplicativo ao executar na RAM? Quão rápido é a RAM entre os dois sistemas que estão sendo comparados, E o chip que você comprou suporta a velocidade da RAM comprada !!! É bem sabido que as placas-mãe suportam muitas velocidades diferentes de RAM, mas a CPU com a qual você solicitou o sistema pode não funcionar. Então você pode pedir um sistema com uma placa-mãe que suporta 1300MHz e devido ao chip que você pediu você recebe menos de 1000MHz. Se esse sistema tiver tantos núcleos, por que ele tem apenas 64 GB de RAM para um novo sistema? Eu tenho um Dell T-410 para um sistema doméstico e eu o comprei por volta de 2009 e ele chega a 64GB, com 8 núcleos (2 quad-core) ... e o modelo mais novo tem 128GB de RAM disponíveis com 12 núcleos 6). Se você reordenar o sistema, considere mais memória RAM se precisar ... Claro, eu uso 32GB para um sistema doméstico de 8 núcleos executando o VMware 5.0.

  • Eu acho que, com base em como você escreveu sua postagem e no tipo de consulta que está sendo feita, você não se preocupou com os aspectos de hardware antes de fazer o pedido. Se você olhar para as letras pequenas ... você pode ser capaz de devolvê-lo para outro sistema. Basta dizer ao chefe que o desempenho não é o esperado com base no aplicativo que está sendo executado e não atrasar, porque o retorno pode ser bom por uma semana a duas semanas, e depois disso VOCÊ POSSUI.

Não se envergonhe, apenas confira isso e deixe a gerência saber que os números que você está recebendo de volta dos testes iniciais não estão dentro do limite do que você acredita que receberia pelo desembolso de dinheiro ... e nós precisa trocá-lo por outro sistema.

    
por 19.12.2012 / 07:38
1

Como outros já observaram, os benchmarks nem sempre são uma boa orientação para qual processador escolher. Especialmente o PassMark definitivamente não é algo que você gostaria de ver para aplicações que não sejam de uso geral.

Se você tiver alguma ideia sobre quais recursos seu software está usando e onde ele será afunilado, talvez você queira examinar dados de desempenho "brutos", como latência de memória, taxa de transferência de memória e talvez também os testes distintos do o conjunto de benchmark Spec no CINT ( Intel 3960 , AMD 6274 ) e CFP ( Intel 3990 , AMD 6274 ) disciplinas.

Tenha em mente que os resultados (e também o desempenho percebido ou medido do aplicativo) podem variar significativamente dependendo nas opções de compilação ou na versão do compilador usada para produzir uma parte específica do binário. As coisas são um pouco diferentes para o .NET, pois os compiladores estão produzindo apenas o metacode, que é traduzido para o código dependente da arquitetura real pelo tempo de execução do JIT. Mas mesmo assim, você também pode especificar parâmetros de otimização para uma arquitetura específica . Além disso, o nível de patch específico do sistema operacional também pode ser significativo - a Microsoft lançou patches para corrigir o mau desempenho em determinados processadores da AMD.

    
por 19.12.2012 / 10:10