En mi opinión, ninguna de las respuestas anteriores es satisfactoria.
Creo que el artículo al que me refiero en el siguiente enlace está bien dirigido para responder esta pregunta:
http://perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
CITAR:
La idea detrás de HT es permitir que se ejecute un subproceso de aplicación diferente cuando la aplicación actualmente en ejecución se detiene; debido a la predicción errónea de la rama, burbujas en la tubería, etc. Para que eso sea posible, tiene que haber otro puerto o registro AS. Ese registro se vuelve visible para el sistema operativo cuando HT está habilitado. Sin embargo, el sistema operativo (y hasta el final de la cadena alimentaria hasta las herramientas de perf que está utilizando) ahora piensa dos veces la capacidad del procesador disponible, es decir, 100% de CPU en cada puerto AS.
Pero bajo el capó, todavía hay una sola unidad de ejecución: el núcleo único, físico, con el que comenzaste antes de habilitar HT. La diferencia es que se comparte de alguna manera entre los 2 puertos AS. La forma en que el núcleo único se conmuta entre los dos puertos es muy complicado, pero se entiende más fácilmente en términos de colas encuestadas. Entro en ese nivel de detalle en mis clases de GCaP.
Las mediciones de prueba del mejor de los casos que tengo indican que cada puerto HT no puede ocupar más del 75%, en promedio, o el 150% de la capacidad total esperada del 200% según el sistema operativo. La capacidad del 50% "faltante", a la que me referí anteriormente, es una ilusión. Intel ha afirmado que se puede esperar algo en el rango de 120% a 130% para aplicaciones generales.
De hecho, estoy bastante seguro de que el sistema operativo puede alcanzar el 100% en cada núcleo virtual, de eso no hay duda. Acabo de hacer un:
mvn clean install -DskipTests -T 5
Y puedo asegurarles que mis 8 núcleos virtuales y 4 núcleos físicos se utilizaron al 100% en la CPU. Y definitivamente no tengo 8 núcleos en mi máquina.
En pocas palabras, puede suponer lo siguiente si la carga total de la CPU supera el 100%, como máximo, y muy probablemente de manera bastante precisa, utilizando exactamente el 100% del núcleo físico. Es decir, si tiene el NÚCLEO físico 1 dividido en la CPU del sistema operativo 1 y la CPU 2. Y en la CPU 1 tiene un uso total del 50% y en la CPU 2 tiene un uso total del 50%, lo más probable en la vida real es poniendo una presión de un uso total del 100% en esa CPU Lo has maximizado.
Pero, por supuesto, el sistema operativo en sus herramientas de monitoreo del sistema no tiene idea de que le está vendiendo una ilusión. Desde la perspectiva del sistema operativo y la forma en que administra los recursos, creerá que cada uno de esos dos núcleos virtuales aún está inactivo en un 50 por ciento, por lo que si hay más tareas por ejecutar, tratará de distribuirlas uniformemente entre esos dos núcleos. . Entonces, cuando supera el 100% de la utilización de la CPU, durante un período de uso de la CPU, siempre hay trabajo en cola para ejecutarse en ese período de tiempo que nunca tuvo un cambio para obtener un corte de tiempo en la CPU. Eventualmente lo obtendrá, pero siempre hay algunos hilos que en realidad ni siquiera se están ejecutando, aunque estén programados para ejecutarse.
Gracias