Como meu computador pode usar 300% do poder de processamento do PC?

65

Estou brincando com um script e me empolguei (ainda está em execução no momento e, no entanto, meu computador ainda não morreu). Estou executando 17 iterações do script (com a intenção de travar meu computador).

Olhando para o monitor de atividades, vejo que cada processo Python tem um pid único e que eles parecem ocupar cerca de 17 a 20% do meu poder de processamento cada ... Como isso é possível? Meu computador aumentou magicamente 200% de energia e violou as leis da termodinâmica em algum lugar?

Digite a descrição da imagem aqui

Frankenmint
fonte
28
300% de uma CPU = 3 CPUs.
user253751
7
"Níveis de potência são 400%"
Nitish
Lembra-me de todos os episódios de Star Trek, onde os motores de dobra executados fora de controle ...
Daniel
Isso é um overclock sério!
Andrew Grimm

Respostas:

101

No OS X, como outros * nixes, a carga da CPU é medida por núcleo do processador virtual. Se você tiver vários - você pode ter 200% e mais combinados sob carga total.

Isso é diferente do Windows e talvez de outros sistemas, nos quais a carga da CPU é calculada por toda a CPU (ou CPUs - não me lembro como ela se comporta ao ter vários processadores físicos).

Vasfed
fonte
21
Esta resposta é precisa apenas para algumas plataformas! Por exemplo, o Windows relata a carga total da CPU, e não como uma porcentagem de um único núcleo.
fabspro
2
Vale ressaltar que a representação de carga decimal (por exemplo, 0.5 ou 2.4), conforme relatado, por exemplo, pelo comando uptime não é a soma de cada porcentagem de uso do núcleo, mas uma estimativa de quantos núcleos você precisaria para processar todas as solicitações instantaneamente. Não sei ao certo quanto esse aplicativo normaliza os valores.
Sebb 21/03
3
@Sebb a média de carga (LA) é o número médio de processos em espera para execução, que pode estar à espera de IO, não necessário CPU
Vasfed
3
@ Random832 de linux man - man7.org/linux/man-pages/man1/uptime.1.html : "As médias de carga do sistema são o número médio de processos que estão em um estado executável ou ininterrupto. Um processo em um estado executável está usando a CPU ou aguardando para usá-la. Um processo em estado ininterrupto está aguardando algum acesso de E / S, por exemplo, aguardando disco. "
Vasfed 21/03/16
4
média carga @slebetman não é de cerca de tempo de CPU, mas o comprimento da fila, por exemplo, ver serverfault.com/a/524818
Vasfed
81

OS X e Linux e possivelmente outros sistemas operacionais UNIX (ou melhor, as ferramentas mais comuns nesses sistemas) exibem o uso da CPU de maneira diferente do Windows. No Windows 100% significa " todos os recursos da CPU usados". No Linux, isso significa que um "thread" (como no Hyper-threading) está completamente ocupado. Como tal, pode alcançar até (Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)no total.

Embora não esteja totalmente relacionado, outro fato interessante: o Windows 10 normaliza ainda mais o uso da CPU usando o estado de otimização atual da CPU. Portanto, uma CPU de 2 GHz com aceleração de 1 GHz estará apenas 50% ocupada.

Daniel B
fonte
7
Fato interessante. :)
Hennes
7
E com Turbo Boost Windows irá relatar a CPU executar mais de 100%
Martheen Cahya Paulo
Eu acho que é o modo BSD, não o modo * nix em geral. Eu vejo a mesma coisa no meu Mac e na minha caixa do FreeBSD.
JDługosz
11
@ JDługosz Tenho certeza de que também é verdade no Linux, pelo menos em algumas de suas ferramentas. Tenho certeza que topse comporta dessa maneira, por exemplo.
reirab
12

Como já apontado em várias respostas, o Mac mostra a porcentagem de CPU de cada processo como 'porcentagem de um núcleo'; portanto, você deve dividi-lo pelo número de núcleos [incluindo HT como 'duplo']

Se você não tiver certeza de quantos núcleos virtuais você possui, Cmd ⌘ 3 o painel Histórico da CPU do Activity Monitor será aberto, onde você pode simplesmente contar as faixas;)

insira a descrição da imagem aqui

Diretamente abaixo de onde você cortou a imagem, estão as informações necessárias para determinar rapidamente o uso total real do Sistema :, Usuário: & Ocioso: Aí está o total simples de 100%

insira a descrição da imagem aqui

Tetsujin
fonte
4
de verdade? 24 núcleos ???? Eu mal tenho 4 :) TIL fato obrigado por compartilhar este !: puu.sh/nNrHU/f2abb55dc7.png
Frankenmint
5
ahh ... sim - é um Mac Pro 5,1 - o último dos "raladores de queijo". Xeons duplos de 6 núcleos [+ HT];)
Tetsujin
6

O monitor de atividades, na verdade, não mede o poder de processamento que cada aplicativo / processo usa, apenas o estima usando um algoritmo. Portanto, pode ser impreciso ...

Além disso, como o @Vasfed aponta, o consumo da CPU é medido por núcleo do processador. Múltiplos núcleos podem significar mais de 100% de uso ...

Um nerd ocasionalmente tropeça nesse fenômeno e fica pasmo até que um superusuário o ajude ...; D

rahuldottech
fonte
@underscore_d Sim ... mas quando respondi, havia apenas uma outra resposta. As outras respostas (reconhecidamente melhores) foram postadas mais tarde ...
rahuldottech 23/03
justo, eu deveria ter verificado os tempos passados o nível de "dias" ... não é tão ruim: p
underscore_d