Como avalio duas especificações de hardware diferentes para um aplicativo?

0

Eu tenho um aplicativo single-threaded, ligado à CPU que está sendo executado em uma máquina Windows multi-core (32-way 2.1GHz Pentium Pro / II / III). Está preso em 100% de um dos "núcleos", o que equivale a cerca de 3% da CPU. Infelizmente, o aplicativo não pode ser facilmente modificado ou feito multi-threaded. Estamos atingindo problemas de desempenho de aplicativos e fica claro que a CPU é o gargalo.

Temos uma especificação para outro hardware, uma máquina Xeon 3GHz de núcleo 2xQuad. Mas o que eu não sei é se essa seria uma especificação melhor para o aplicativo. Meu instinto imediato é que a velocidade do clock é mais rápida e há menos núcleos (8 em vez de 32), de modo geral, o aplicativo funcionaria melhor. Mas estou consciente de que não é tão simples, na máquina de 32 vias muitos desses "núcleos" são hyper-threading e não sei se cálculos simplórios se aplicam.

Eu estou apenas procurando por uma abordagem "regra geral" para avaliar as duas máquinas. Sei que, para obter uma resposta verdadeira, precisaria fazer testes adequados, mas não quero gastar tempo e esforço fazendo isso, se é improvável que ajude.

Eu também tenho certeza que há melhor hardware / opções disponíveis no mercado. Apenas não aqueles que temos acesso agora, infelizmente :-(

Paul Moore
fonte
1
Eu suspeito de um relativamente moderno xeon faria melhor, considerando todos os três possível e diferente arquiteturas de processador em jogo no sistema '32 way '. Qual é o hardware, realmente?
Journeyman Geek
1
Na verdade, os PIIIs chegaram a correr tão rápido? Sim, não há informações suficientes para responder, e o que temos é um pouco suspeito. Estou curioso para saber o que é a besta multicore tho
Journeyman Geek
@JourneymanGeek: Não, eles não fizeram. Eles também não tinham hyper-threading.
qasdfdsaq
O grande problema é que não conheço nenhum detalhe de hardware. E eu não quero ser sugado para grandes avaliações se for (relativamente) óbvio que é inútil. Mas se "você não pode dizer" é a resposta, então tudo bem, eu só vou ter que ir com isso.
Paul Moore
Grandes avaliações, não. Ir para "Painel de Controle, Sistema" e olhar para o processador seria uma grande ajuda.
Journeyman Geek

Respostas:

1

Você claramente afirmou que seu aplicativo é single-threaded e limitado pelo desempenho de CPU single-core. Por definição, processadores multi-core e hyperthreading não ajudam. Adicionar um milhão de núcleos não fará um programa ser executado mais rapidamente quando ele puder usar apenas um núcleo.

A única maneira de melhorar o desempenho de aplicativos de núcleo único é obter uma CPU com núcleos mais rápidos. Existem duas maneiras de aumentar o desempenho do núcleo: melhor IPC e maior velocidade de relógio.

Novas gerações de CPU têm melhor IPC. Processadores com clock mais alto têm ... maior clockspeed. A única regra é, então, obter o processador de última geração com a mais alta velocidade de clock.

Na realidade, você ficaria melhor com um sistema iX core 1xQuad com uma CPU de 4 Ghz do que com um Xeon Quad-core de 2x. Os Xeons serão várias gerações mais antigos, o que significa um IPC mais baixo e uma velocidade de relógio menor de 1Ghz.

qasdfdsaq
fonte
OK obrigado. Então, dado apenas 2 opções de hardware, sem informações suficientes sobre especificação real, e sem real "usar algo mais atualizado" opção, um simples "velocidade mais rápida é melhor, ignore número de núcleos se o aplicativo é single threaded" regra geral é tão bom quanto eu vou conseguir?
Paul Moore
Sim, isso é exatamente certo.
qasdfdsaq
Ir mais recente, velocidade de clock mais rápida por núcleo e você deve ser bom. Esta é provavelmente a melhor resposta com base nas informações fornecidas
Journeyman Geek
Obrigado, isso é tudo que eu preciso (e tanto quanto eu poderia esperar, dado o nível de informação que tenho).
Paul Moore