Vários núcleos = melhor multitarefa?

3

Especificamente, estou olhando para o i5-3570k ou o FX-8350, mas isso me fez pensar em uma questão específica mais geral sobre como vários núcleos podem melhorar a multitarefa em geral.

Estive lendo muitas resenhas, benchmarks, etc, todos basicamente dizem a mesma coisa: O 4core Icore mais rápido bate o 8core FX com clock mais lento na maioria dos aplicativos, a menos que esse aplicativo seja especificamente codificado para aproveitar mais de 4 núcleos. Os jogos funcionam melhor no i5.

Mas como eu estava lendo, notei que praticamente todos os benchmarks são feitos no vácuo. Ou seja, esse benchmark ou software é a única coisa que está sendo testada. Mas enquanto isso é bom para testar esse software específico, dificilmente é um cenário do mundo real.

Por exemplo, em qualquer ponto durante o dia eu posso ter vários navegadores abertos com várias abas, talvez o Photoshop ou o Visual Studio, vários programas em segundo plano (antivírus, vapor, keepass, etc). E isso é em um dia claro.

Então, minha pergunta é: Teoricamente, enquanto o 4core mais rápido executará pedaços individuais de software mais rápido por conta própria, um processador 8core não poderia ser melhor na execução de vários softwares, mesmo que eles não sejam necessariamente 8core otimizados, simultaneamente?

    
por Taylor Huston 09.08.2013 / 23:26

2 respostas

2

Linux CPU Load

Uma medida útil é o conceito Linux de carregamento da CPU . Basicamente, pense em cada núcleo da CPU é de 1.00 unidades de carga disponíveis, e cada tarefa em execução em 100% de um núcleo como 1.00 unidades de carga utilizadas. Para um servidor com processamento intensivo, a carga ideal é provavelmente exatamente o número de núcleos de CPU (carga de 4,00 para 4 núcleos de CPU).

Um loop ocupado (algo como "while (true)") pode ocupar 100% de uma CPU, que é de 1,00 unidades de carga. Um benchmark single-threaded também atinge o pico em 1,00. Um benchmark otimizado para vários núcleos pode ocupar mais núcleos, até as 8.00 disponíveis na FX-8350.

Mas a maioria de seus aplicativos (Chrome + Firefox abertos, Photoshop, Visual Studio) não consomem muita CPU quando estão em segundo plano. É verdade que eles podem ser executados em vários núcleos, mas se eles usarem apenas 10% do tempo disponível (0,10 unidades de carga), esses quatro aplicativos só adicionarão uma carga de 0,40, e você verá pouco benefício em ter mais de um núcleo de CPU. Da mesma forma, os aplicativos ocupados bloqueando os acessos de disco ou rede não usariam o tempo de CPU enquanto esperam.

Carga média > 4,00

Para casos em que a carga de sua aplicação está entre 4,00 e 8,00, é provável que o desempenho da FX-8350 se destaque. Uma carga de 5,00 em uma CPU de 4 núcleos pode levar a muita disputa pelos recursos da CPU, com alternância de tarefas entre tarefas, compondo a sobrecarga envolvida.

Carga Média < 4,00

Sua pergunta parece ser sobre os momentos em que a matemática não é tão clara, se 8 núcleos seria melhor em uma carga de trabalho sub-4.00. Para uma carga de trabalho razoavelmente constante, do tipo servidor, você pode executar alguns benchmarks e ver se realmente existe algum benefício. Para uma carga de trabalho de computação diária e em constante mudança, não há um vencedor claro.

    
por 10.08.2013 / 01:06
1

Depende muito da aplicação, do sistema operacional e de como ele executa seu trabalho.

Se um aplicativo for projetado para ser single-threaded, nenhum núcleo adicional ajudará seu desempenho. No entanto, você poderia executar aplicativos adicionais usando os outros núcleos, se o sistema operacional fosse inteligente o suficiente para distribuir o trabalho dessa maneira. Portanto, os núcleos adicionais podem fornecer um pequeno benefício adicional, especialmente para vários aplicativos executados ao mesmo tempo.

Núcleos adicionais não fornecem mais capacidade de E / S. Portanto, se uma aplicação é principalmente aumento de desempenho vinculado a E / S de núcleos adicionais pode não ser substancial.

    
por 10.08.2013 / 00:32