Vários núcleos = melhor multitarefa?

Vários núcleos = melhor multitarefa?

Especificamente, estou olhando para o i5-3570k ou para 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 geral.

Tenho lido muitos comentários, benchmarks, etc., todos dizem basicamente a mesma coisa: o I5 de 4 núcleos com freqüência mais rápida supera o FX de 8 núcleos com freqüência mais lenta na maioria dos aplicativos, a menos que esse aplicativo seja especificamente codificado para aproveitar mais de 4 núcleos. Especialmente os jogos funcionam melhor no i5.

Mas enquanto lia, percebi 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 embora isso seja bom para testar software específico, dificilmente é um cenário do mundo real.

Por exemplo, a qualquer momento do dia posso ter vários navegadores abertos com diversas abas, talvez Photoshop ou Visual Studio, vários programas em segundo plano (antivírus, steam, keepass, etc). E isso é em um dia leve.

Portanto, minha pergunta é: teoricamente, embora o 4core mais rápido execute peças de software individuais mais rapidamente por conta própria, um processador de 8 núcleos não poderia ser melhor na execução de vários softwares, mesmo que eles não sejam necessariamente otimizados para 8 núcleos, simultaneamente?

Responder1

Carga da CPU Linux

Uma medida útil é o conceito Linux deCarga da CPU. Basicamente, pense em cada núcleo da CPU como 1,00 unidades de carga disponíveis e cada tarefa executada em 100% de um núcleo como 1,00 unidades de carga usadas. Para um servidor com uso intensivo de processamento, 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, o que equivale a 1,00 unidades de carga. Um benchmark de thread único também atinge o pico de 1,00. Um benchmark otimizado para vários núcleos pode ocupar mais núcleos, até os 8,00 disponíveis no FX-8350.

Porém, a maioria dos seus aplicativos (Chrome + Firefox aberto, Photoshop, Visual Studio) não consomem tanta CPU quando estão sendo executados em segundo plano. É verdade que eles podem ser executados em vários núcleos, mas se usarem apenas 10% do tempo disponível (0,10 unidades de carga), esses quatro aplicativos somam apenas 0,40 de carga e você verá poucos benefícios em ter mais de um núcleo de CPU. Da mesma forma, aplicativos ocupados bloqueando acessos ao disco ou à rede não usariam o tempo da CPU enquanto esperam.

Carga Média > 4,00

Para os casos em que a carga do seu aplicativo está entre 4h00 e 8h00, é provável que seja aqui que o desempenho do FX-8350 se destacaria. Uma carga de 5,00 em uma CPU de 4 núcleos pode levar a muita disputa por recursos da CPU, com a alternância de tarefas entre tarefas agravando 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 seriam melhores em uma carga de trabalho abaixo de 4,00. Para uma carga de trabalho do tipo servidor bastante constante, você pode executar alguns benchmarks e ver se há realmente algum benefício. Para uma carga de trabalho de computação diária em constante mudança, não há um vencedor claro.

Responder2

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

Se um aplicativo for projetado para ser de thread único, nenhum núcleo adicional ajudará em 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, 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 um aplicativo for principalmente limitado por E/S, o aumento de desempenho de núcleos adicionais pode não ser substancial.

informação relacionada