На мой взгляд, ни один из приведенных выше ответов не является удовлетворительным.
Я думаю, что статья, на которую я ссылаюсь по следующей ссылке, хорошо предназначена для ответа на этот вопрос:http://perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
QUOTE:
Идея, лежащая в основе HT, состоит в том, чтобы позволить другому потоку приложения работать, когда текущее приложение останавливается; из-за неправильного прогнозирования веток, пузырей в конвейере и т. д. Чтобы это стало возможным, должен быть другой порт или регистр AS. Этот регистр становится видимым для ОС, когда HT включен. Тем не менее, ОС (и весь путь к пищевой цепочке, независимо от того, какие инструменты для перфорирования вы используете) теперь думает, что доступна в два раза больше процессорной мощности, т. Е. 100% ЦП на каждом порту AS.
Но под капотом все еще есть только один исполнительный блок: одно физическое ядро, с которым вы работали до включения HT. Разница в том, что он каким-то образом распределяется между двумя портами AS. Как одно ядро переключается между двумя портами, очень сложно, но легче всего понять с точки зрения опрошенных очередей. Я вхожу в этот уровень детализации в моих классах GCaP.
Тестовые измерения в лучшем случае, которые я имею, показывают, что каждый порт HT не может быть занят более чем на 75%, в среднем, или на 150% от общей ожидаемой емкости 200% в зависимости от ОС. "Недостающая" пропускная способность в 50%, о которой я говорил ранее, является иллюзией. Intel утверждает, что для общих приложений можно ожидать что-то в диапазоне от 120% до 130%.
На самом деле, я уверен, что операционная система может достигать 100% на каждом виртуальном ядре, без сомнения об этом.
Я только что сделал:
mvn clean install -DskipTests -T 5
И я могу заверить вас, что мои 8 виртуальных ядер и 4 физических ядра были загружены на 100%. И у меня точно нет 8 ядер на моей машине.
Короче говоря, вы можете предположить следующее, если общая загрузка ЦП превышает 100%, как вы, и, скорее всего, довольно точно, используя ровно 100% физического ядра.
Это меню, если у вас есть физический CORE 1, разделенный на операционную систему CPU 1 и CPU 2.
И на ЦП 1 у вас общее использование составляет 50%, а на ЦП 2 - 50%, наиболее вероятно, что в реальной жизни вы оказываете давление 100% на этот ЦП. Вы максимизировали это.
Но, конечно, операционная система в своих инструментах мониторинга системы не имеет ни малейшего представления, что она продает вам иллюзию.
С точки зрения операционной системы и того, как она управляет ресурсами, она будет просто полагать, что каждый из этих двух виртуальных ядер по-прежнему простаивает на 50%, поэтому, если нужно будет выполнить больше задач, он попытается распределить их равномерно по этим двум ядрам. ,
Поэтому, когда вы используете 100% -ную загрузку ЦП, в течение периода использования ЦП всегда есть работа в очереди, которая должна выполняться в тот период времени, в котором никогда не было изменений для получения временной шкалы на ЦП. В конце концов он получит это, но всегда есть некоторые потоки, которые на самом деле даже не работают, даже если они запланированы для запуска.
Спасибо