Na minha opinião, nenhuma das respostas acima é satisfatória.
Acho que o artigo que estou me referindo no seguinte link é direcionado para responder a essa pergunta:
http://perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
CITAR:
A idéia por trás do HT é permitir a execução de um encadeamento de aplicativo diferente quando o aplicativo atualmente em execução é interrompido; devido a erros de previsão de ramificação, bolhas no pipeline, etc. Para tornar isso possível, deve haver outra porta ou registro AS. Esse registro se torna visível para o sistema operacional quando o HT está ativado. No entanto, o sistema operacional (e todo o caminho da cadeia alimentar até as ferramentas perf que você estiver usando) agora pensa duas vezes que a capacidade do processador está disponível, ou seja, 100% da CPU em cada porta AS.
Mas, sob o capô, ainda há apenas uma unidade de execução: o núcleo único e físico com o qual você começou antes de o HT ser ativado. A diferença é que ele está sendo compartilhado de alguma forma entre as 2 portas AS. Como o núcleo único é alternado entre as duas portas é muito complicado, mas é mais facilmente compreendido em termos de filas pesquisadas. Entro nesse nível de detalhe nas minhas aulas do GCaP.
As melhores medições de teste que eu tenho indicam que cada porta HT não pode ficar mais de 75% ocupada, em média, ou 150% da capacidade total esperada de 200%, de acordo com o sistema operacional. A "falta" de 50% da capacidade, a que me referi anteriormente, é uma ilusão. A Intel afirmou que algo na faixa de 120% a 130% pode ser esperado para aplicativos gerais.
Na verdade, tenho certeza de que o sistema operacional pode atingir 100% em cada núcleo virtual, sem dúvida. Acabei de fazer um:
mvn clean install -DskipTests -T 5
E posso garantir meus 8 núcleos virtuais e 4 núcleos físicos, todos com 100% de utilização da CPU. E eu definitivamente não tenho 8 núcleos na minha máquina.
Para encurtar a história, você pode assumir o seguinte se a carga total da CPU for superior a 100%, no máximo, e provavelmente com muita precisão, usando exatamente 100% do núcleo físico. Que menas, se você tiver o CORE 1 físico dividido em CPU 1 e CPU do sistema operacional. E na CPU 1 você tem um uso total de 50% e na CPU 2 você tem um uso total de 50%, provavelmente na vida real. colocando uma pressão de um uso total de 100% nessa CPU. Você atingiu o limite máximo.
Mas é claro que o sistema operacional em suas ferramentas de monitoramento de sistema não tem idéia de que está vendendo uma ilusão para você. Do ponto de vista do sistema operacional e de como ele gerencia os recursos, ele acredita que o alcance desses dois núcleos virtuais ainda está 50% ocioso; portanto, se houver mais tarefas a serem executadas, ele tentará distribuí-los uniformemente pelos dois núcleos. . Portanto, quando você excede 100% da utilização da CPU, durante um período de uso da CPU, sempre há trabalho em fila para executar naquele período de tempo que nunca teve uma alteração para obter um tempo na CPU. Eventualmente, ele será obtido, mas sempre haverá alguns threads que na verdade nem estão em execução, mesmo que estejam programados para serem executados.
obrigado