На мою думку, жоден із наведених відповідей не є задовільним.
Я вважаю, що стаття, на яку я посилаюсь за наступним посиланням, добре орієнтована на відповідь на це питання:
http://perfdynamics.blogspot.ch/2014/01/monitoring-cpu-utilization-under-hyper.html
ЦІТА:
Ідея 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. А на CPU 1 ви загальне використання 50%, а на CPU 2 ви загальне використання 50%, швидше за все, в реальному житті ви тиск загального використання 100% на цей процесор. Ви виграли це.
Але, звичайно, операційна система в своїх інструментах моніторингу системи не має поняття, що вона продає вам ілюзію. З точки зору операційної системи та того, як вона керує ресурсами, просто вірить, що кожний з цих двох віртуальних ядер все ще на 50 відсотків простоює, тому якщо для запуску буде більше завдань, він спробує розподілити їх рівномірно по цих двох ядрах . Тож, коли ви переходите на 100% використання процесора, під час періоду використання процесора завжди буде працювати в черзі за той період часу, який ніколи не змінився, щоб отримати відрізок часу на процесорі. Врешті-решт це дістанеться, але завжди є деякі потоки, які насправді навіть не запущені, хоча вони заплановані для запуску.
Дякую