Real núcleos ou threads em um i5 7500T?

0

Eles dizem que um i5 7500T tem 4 núcleos (então, neste caso, 4 threads). Quando, por exemplo, eu calculo o número 1 milionésimo de Fibonacci (um único segmento, cada número depende de seu antecessor) usando Python, ele leva 5,5 segundos. Quando inicio 2 destes processos simultaneamente, ambos demoram 6,3 segundos e quando inicio 3 ou 4 demora ainda mais (10+ segundos por processo).

Como isso pode ser chamado de "multi-core"? Quando uso um servidor grande com vários núcleos, 1 a n processa quando n < número de núcleos todos usam a mesma quantidade de tempo com n variável.

    
por Niels 26.09.2018 / 16:33

1 resposta

1

Cada núcleo é individualmente rápido, mas todos eles precisam de acesso a recursos compartilhados, como caches e memória. Como resultado, o trabalho com múltiplos núcleos aumenta a quantidade de trabalho que você pode fazer, mas também pode causar gargalos.

Seus cálculos matemáticos provavelmente têm muita memória restrita e você está atingindo o limite de sua largura de banda de memória.

Que leva 5,5 segundos em um núcleo, mas usar dois núcleos leva 6,3 segundos significa que você fez o dobro de trabalho em apenas 0,8 segundos a mais do que os 5,5 segundos a mais (11 segundos no total) fazendo o trabalho em série teria tomado. Você efetivamente economizou 4,7 segundos do tempo do mundo real (11 - 6,3) fazendo o trabalho lado a lado, em vez de um após o outro.

Multi-core não significa que você pode fazer o dobro da quantidade de trabalho na mesma quantidade de tempo, mas significa que você pode atingir uma quantidade significativa mais do que poderia ter conseguido com somente um núcleo.

Se agora leva 10 segundos para todos os processos terminarem ao usar todos os 4 núcleos, então ainda termina mais rápido do que se você tivesse feito o trabalho quatro vezes em um único núcleo, onde deveria ter tomado 22 segundos. Você está realizando quatro vezes o trabalho em menos que o dobro do tempo.

    
por 26.09.2018 / 16:49