Processo encadeado único sendo executado em 2 núcleos

2

Na minha CPU quad-core, parece que um único thread (loop infinito) está sendo executado em 2 núcleos simultaneamente. Por que é isso? Um único segmento não deve ser executado em apenas um núcleo?

    
por agz 03.10.2013 / 10:13

3 respostas

4

Um único piso pode ser executado em quantos núcleos você tiver, mas será limitado a um único núcleo ao mesmo tempo.

Pense nisso como uma conversa telefônica. Você só tem um único telefone * 1 e precisa continuar falando no telefone * 2 . Você tem quatro pessoas no escritório, cada uma capaz de falar * 3 . Nada impede que você entregue o telefone a outra pessoa enquanto faz uma pausa no banheiro.

Observe que há apenas uma pessoa falando ao telefone ao mesmo tempo .

* 1 O telefone é o único passo.
* 2 Precisa continuar falando como se ele fosse executado indefinidamente.
* 3 As quatro pessoas são ofc. os quatro núcleos.

    
por 05.10.2013 / 22:06
0

Na sua tela, não vejo dois, mas quatro segmentos usando quatro núcleos em perfeita harmonia, com um par de núcleos usando seu CPU mais do que o outro casal, mas os altos e baixos de todos os 4 núcleos são mais ou menos sincronizados para os mesmos segmentos de tempo.

Isso não parece com um único processo segmentado, mas mais como um Processo de 4 segmentos. Isso precisa de mais exames.

A ferramenta a ser usada é o Process Explorer . Depois de iniciá-lo, você pode clicar com o botão direito do mouse os cabeçalhos das colunas e selecione mais colunas, se necessário.

Depois de localizar o processo que está usando essas CPUs, clique duas vezes nele e escolha a aba Threads para ver quantos threads ela tem e o que eles estão fazendo (quais chamadas de sistema eles usam).

Se o processo é apenas svchost.exe, é um serviço do sistema, que pode ser identificado. O mais provável de estar usando intensamente a CPU é o Windows Search.

    
por 06.10.2013 / 11:13
0

Essa exibição em sua postagem mostra o quanto de atividade está ocorrendo para cada núcleo, mas não informa nada sobre quais processos / threads estão sendo executados em qual núcleo.

Eu suspeito que, como o seu programa thread único obtém o "intervalo de tempo", o sistema operacional o executa em um núcleo na metade do tempo e outro núcleo na outra metade do tempo. os outros núcleos também são uma pequena parte do tempo.

Como um loop infinito, ele está usando o núcleo totalmente durante o intervalo de tempo, mas qualquer incremento de tempo da atividade principal (no Gerenciador de Tarefas) representará MUITO MAIS do que a duração de intervalos de tempo únicos.

Para mais informações sobre o que está acontecendo, mude para a guia Processos no Gerenciador de Tarefas. No menu Exibir, clique em Selecionar colunas e, em seguida, marque a coluna "Threads". Em seguida, na coluna Nome da imagem, encontre seu processo. Confirme que é um único thread.

Como eu sento aqui com pouca "carga" na minha caixa de XP, há 662 threads em execução. My Antivirus está rodando 78 threads, o Firefox está rodando 45 threads, o Dropbox rodando 33. O Winamp não está tocando nada agora e ainda está rodando 17 threads. Qualquer incremento na exibição do Gerenciador de Tarefas poderia ter todos esses segmentos em qualquer núcleo.

    
por 08.10.2013 / 03:25