Чи є еквівалент Windows Unix "час викрадення процесора"?


24

Для оцінки ефективності контролю точності на платформах віртуалізації, то CPU краде час стало більш актуальною Метрика - см моніторинг EC2: випадок вкраденої CPU для повчального резюме в контексті Amazon EC2 паперу і IBM по часу процесора становить для а більш поглиблене технічне пояснення (включаючи ілюстрації) концепції:

Час крадіжки - це відсоток часу, який віртуальний процесор чекає на справжній процесор, тоді як гіпервізор обслуговує інший віртуальний процесор.

Відповідно, вона піддається впливу в більшості пов'язаних інструментів моніторингу Unix / Linux в даний час - див наприклад , стовпці % крадуть або вулицю в sarабо top:

st - час
крадіжки Кількість процесора, «викраденого» з цієї віртуальної машини гіпервізором для виконання інших завдань (наприклад, для запуску іншої віртуальної машини).

Я не зміг зрозуміти, як захопити ту саму метрику в Windows, хоча це вже можливо? (Ідеально підходить для AMI для Windows 2008 Server R2 на EC2 та звичайно через відповідні лічильники продуктивності Windows .)

Відповіді:


33

Редагувати: оновлення 1 жовтня 2013 р. - Деякі мої оригінальні відповіді з тих пір застаріли.

Я не впевнений, чи ти все ще активний на цьому веб-сайті або що ти це побачиш, але я хотів, щоб ти знав, що я сьогодні це питання читав, і це мене зачарувало, і тому я провів цілий день (коли мав би мати працював) досліджуючи внутрішні пристрої Hyper-V та Windows і навіть заглиблюючись у самі поняття віртуалізації з надією, що я можу бути готовим відповісти на ваше запитання.

Дозвольте мені передмовитись, сказавши, що я виходжу з точки зору Hyper-V як платформи для віртуалізації, тому що саме там я маю найбільший досвід. Незважаючи на те, що, як ми знаємо, можуть існувати певні принципи віртуалізації, від яких не можна відступати, Microsoft і VMware і Xen мають різні стратегії того, як вони розробляють свої гіпервізори.

Це перше, що робить ваше питання складним. Ви ставите своє запитання так, ніби це гіпервізорно-агностик, коли насправді це не так. Наприклад, Amazon EC2 використовує гіпервізор Xen, а показник "Час викрадення процесора", який ви бачите у висновку topкоманди, виданої з VM Linux, що працює на цьому гіпервізорі, є результатом інтеграційних служб, встановлених на цій гостьовій ОС (або засоби віртуалізації, які знаходяться у гостях) у поєднанні з даними, наданими цим конкретним гіпервізором.

По-перше, дозвольте мені прямо відповісти на ваше запитання: Немає способу побачити зсередини віртуальної машини під управлінням Windows скільки часу процесори, що належать до фізичної машини, на якій працює гіпервізор, витрачають на інші дії, за винятком конкретних віртуальних інструментів / сервіси або засоби віртуалізації для вашого конкретного гіпервізора встановлені в гостьовій машині таконкретний гіпервізор, на якому працює гість, виставляє ці дані гостю. Навіть гість Windows, який працює на гіпервізорі Hyper-V, не матиме негайного доступу до інформації щодо часу, витраченого фізичними процесорами на гіпервізорі. (Якщо процитувати voretaq7, те, що "розбиває четверту стіну".) Навіть незважаючи на те, що клієнтські та серверні операційні системи Windows, які працюють як віртуалізовані гості в Hyper-V із встановленими правильними послугами / інструментами інтеграції, використовують "просвіти" (які буквально є ядром) зміни коду, зроблені спеціально для віртуальних машин), які значно підвищують їхню ефективність у використанні ресурсів фізичного хоста, суть полягає в тому, що гіпервізор не маєнадавати гостьовій ОС більше інформації, ніж вона хоче. Це означає, що гіпервізору не потрібно говорити гостю В.М., що ще робить, окрім обслуговування цього ВМ ... якщо тільки цього не хоче. І ця інформація про те, що ще роблять фізичні процесори, необхідна для отримання метрики з точки зору VM, наприклад "Час викрадення процесора: відсоток часу, який vCPU чекає на фізичний процесор".

Звідки гостьова ОС могла це знати, якщо навіть не усвідомлювала, що насправді віртуалізована?

Іншими словами, без правильних інструментів інтеграції, встановлених у гості, гостьова ОС навіть не знатиме, що її процесор насправді є v CPU. Він навіть не дізнається, що існує інша сила поза собою, "крадучи" цикли процесора з нього, отже, ця метрика не буде існувати в гостьовій машині.

VMware почала розкривати ці дані гостям Windows, а також ESXi 5.0. Інструменти інтеграції VMware також потребують оновлення гостя. Ось довідка ; вони називають це "вкраденим процесором часом".

Гіпервізор, такий як Hyper-V, не надає гостям прямого доступу до фізичних ресурсів, таких як фізичні процесори або ядра процесора. Натомість гіпервізор дає їм vDevs - віртуальні пристрої - наприклад, vCPU.

Прекрасний приклад того: Скажімо, гостьова ОС на віртуальній машині робить виклик очистити TLB (трансляційний зовнішній буфер), який є фізичним компонентом фізичного процесора. Якщо гостьовій ОС було дозволено очистити всю TLB на фізичному процесорі, це матиме негативні ефекти на продуктивність для всіх інших віртуальних машин, які також ділилися тим самим фізичним TLB. У випадку з Windows, цей виклик у гостьовій ОС перекладається на "гіперпоклик" або "просвітлений" виклик, який інтерпретується гіпервізором, щоб змити лише той розділ TLB, який стосується цієї віртуальної машини.


(Цікаво, що це натякає мені, що гостьові віртуальні машини, які не мають належних інструментів інтеграції та / або служб, можуть мати можливість впливати на продуктивність усіх інших VM на тому ж хості, але це повністю виходить за рамки цієї теми .)


Все це говорить про те, що ви все ще можете виявити в хості Hyper-V час, який віртуальний процесор витратив на очікування появи реального процесора, щоб він міг запустити роботу. Але ви можете бачити ці дані лише на гіпервізорі Windows Hyper-V. Якщо це можливо побачити в інших гіпервізорах, я закликаю інших сказати нам, як це бачити в цьому гіпервізорі, а також, якщо воно піддається гостям. (Редагувати 01.10.2013. Дякую вам, Евіленський, що зробив саме це!)

Моєю тестовою машиною був Hyper-V Server 2012, який є безкоштовним виданням сервера 2012, який виконує лише Core та Hyper-V роль. Це фактично те саме, що і будь-який Windows Server 2012 під управлінням Hyper-V.

Запустіть Perfmon на своєму батьківському розділі, він же фізичний хост. Завантажте цей лічильник:

Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*

Ви помітите, що буде кожен примірник цього лічильника для кожної віртуальної машини на цьому гіпервізорі, а також _Total. Визначенням Microsoft цього лічильника Perfmon є:

Середній час (у наносекундах), витрачений на очікування, щоб віртуальний процесор був відправлений на логічний процесор.

Очевидно, ви хочете, щоб ця кількість була якомога меншою. Для комп’ютерів очікування майже ніколи не є доброю справою.

Інші лічильники продуктивності на гипервизор , який ви хочете дослідити це Hyper-V Hypervisor Root Virtual Processor\% Guest Run Time, % Hypervisor Run Timeі % Total Run Time. Ці лічильники дають вам відсотки, які могли б бути використані для визначення фактів, таких як, скільки часу "реальні" процесори витрачають на інші речі, крім обслуговування VM чи всіх віртуальних машин.

Отже, підсумовуючи, показник, який ви шукаєте у гостьовій віртуальній машині, залежить від гіпервізора, на якому він працює, чи вибрав цей гіпервізор надати дані про те, як він витрачає свій час, крім обслуговування цього VM, і якщо гість ОС має правильні інструменти / сервіси / драйвери для віртуалізації, щоб бути достатньо обізнаними, щоб зрозуміти, що гіпервізор робить ці дані доступними.

Я не знаю жодного способу для гостя Windows, інструментів інтеграції, встановлених чи ні, щоб побачити, скільки часу, у секундах чи відсотках, хост VM витратив на його обслуговування або не обслуговував його відповідно до загального фізичного часу процесора. (Редагувати 01.10.2013: ESXi 5.0 або вище виставляє ці дані гостьовій машині вибору за допомогою інструментів інтеграції. Однак у Hyper-V все ще нічого.)


1
+1 - епічна відповідь епічна
Марк Хендерсон

1
+1 за ретельну розвідку дійсно, високо оцінений. Тож щодо EC2 це, очевидно, зводиться до гостей Unix / Linux, які працюють у Xen paravirtualрежимі, що є паравіртуалізованим доменом (тобто не повна віртуалізація, гостьова ОС модифікується для роботи на хості), де доступний час крадіжки , порівняно з Windows / FreeBSD / ... гості, що працюють Xen HVM, це апаратно емульований домен (тобто гостьова ОС немодифікована для роботи на хості), де, мабуть, це не так, тож певна негативна відповідь, гадаю, саме це враховує. Чи правильно я прочитав, що він може бути доданий з часом?
Steffen Opel

2
Теоретично це може, але не затримуйте дихання. Як я вже говорив, вимагає, щоб специфічний для постачальника гіпервізор та спеціальна для постачальника гостьова ОС докладали скоординованих зусиль, щоб зробити ці дані про фізичний хост доступними та доступними в межах гостьової візитки. wiki.xen.org/wiki/Xen_Kernel_Feature_Matrix
Ryan Ries

2
Тангенціальна: гіпервізори VMware будуть називати команду викрадення як готовий час - кількість часу, якого віртуальний процесор чекає, щоб його обслуговував фізичний ресурс.
Йоло Пердіем

1
це добре відома тема мейнфрейму. Показник доступний десятиліттями. Це називається "чекай на процесор".

2

FWIW, я просто переглянув лічильники Perfmon сервера Windows 2008r2 під управлінням Hyper-V і не побачив нічого, пов'язаного з крадіжкою часу (або з віртуалізацією взагалі з цього приводу).


Дякуємо за перевірку - мабуть, лічильники віртуалізації для Hyper-V насправді мають бути доступними, можливо, їх потрібно встановити / активувати якось спочатку? Я все ще не можу визначити / вивести аналогічну / споріднену метрику серед них.
Steffen Opel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.