Вопрос: Есть ли эквивалент Windows для Unix «время краха процессора»?


Чтобы оценить точность мониторинга производительности на платформах виртуализации, Время кражи процессора стала все более актуальной метрикой - см. Контроль EC2: случай похищенного CPU для поучительного резюме в контексте Amazon EC2 и документ IBM о Учет времени процессора для более подробного технического объяснения (включая иллюстрации) концепции:

Время кражи - это процент времени, в течение которого виртуальный процессор ожидает реального   CPU, в то время как гипервизор обслуживает другой виртуальный процессор.

Соответственно, он отображается в большинстве связанных с ним инструментов мониторинга Unix / Linux в настоящее время - см., Например, столбцы % украсть или улица в sar или top:

st - Steal Time
  Количество CPU, «украденного» с этой виртуальной машины гипервизором   для других задач (например, запуск другой виртуальной машины).

Я не смог понять, как зафиксировать один и тот же показатель в Windows, хотя это уже возможно? (Идеально для Средство AMI для Windows 2008 Server R2 на EC2 и через соответствующий Счетчики производительности Windows конечно.)


21
2018-05-24 11:38


Источник




Ответы:


Изменить: Обновление 1 октября 2013 г. - Часть моего первоначального ответа с тех пор устарела.

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

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

Это первое, что заставляет ваш вопрос бросать вызов. Вы задаете свой вопрос, как если бы это был гипервизор-агностик, когда на самом деле это не так. Например, Amazon EC2 использует гипервизор Xen и метрику «Время краха процессора», которую вы видите на выходе top команда, выпущенная из виртуальной машины Linux, работающая на этом гипервизоре, является результатом служб интеграции, установленных на этой гостевой ОС (или инструментов, поддерживающих виртуализацию), в сочетании с данными, предоставленными этим конкретным гипервизором.

Прежде всего позвольте мне сразу ответить на ваш вопрос: нет возможности увидеть внутри виртуальной машины, на которой работает Windows, сколько раз процессоры, принадлежащие физической машине, на которой работает гипервизор, тратят другие вещи, если конкретные виртуальные инструменты / службы или инструменты для виртуализации для вашего конкретного гипервизора устанавливаются в гостевой виртуальной машине а также конкретный гипервизор, на котором запускается гость, предоставляет данные гостю. Даже клиент Windows, работающий на гипервизоре Hyper-V, не будет иметь прямого доступа к информации о времени, затрачиваемом на то, что физические процессоры на гипервизоре выполняли другие вещи. (Чтобы процитировать voretaq7, что-то, что «ломает четвертую стену».) Несмотря на то, что Windows-клиентские и серверные операционные системы, работающие как виртуализированные гости в Hyper-V с установленными правильными установками интеграции / инструментами, используют «просветления» (которые буквально являются ядром изменения кода, сделанные специально для виртуальных машин), которые значительно увеличивают их производительность при использовании ресурсов физического хоста, в итоге гипервизор не иметь чтобы предоставить дополнительную информацию гостевой ОС, чем она хочет. Это означает, что гипервизор не иметь чтобы сообщить гостевой VM, что еще он делает, помимо обслуживания этой виртуальной машины ... если она этого не хочет. И эта информация о том, что еще делают физические процессоры, необходима для получения метрики с точки зрения виртуальной машины, такой как «Время старта процессора: процент времени, в течение которого vCPU ждет физический процессор».

Как может гостевая ОС это знать, если она даже не понимает, что она фактически виртуализована?

Другими словами, без правильных инструментов интеграции, установленных на гостевой, гостевая ОС даже не знает, что ее центральный процессор на самом деле является vЦПУ. Он даже не узнает, что есть другая сила, которая сама по себе «крадет» циклы процессора из этого, поэтому эта метрика не будет существовать на гостевой виртуальной машине.

VMware начала предоставлять эти данные пользователям Windows, а также ESXi 5.0. Средства интеграции VMware также должны быть обновлены для гостя. Вот ссылка; они называют это «CPU Stolen Time».

Гипервизор, такой как Hyper-V, не дает гостям прямого доступа к физическим ресурсам, таким как физические процессоры или процессорные ядра. Вместо этого гипервизор дает им vDevs - виртуальные устройства - например, vCPU.

Яркий пример того, почему: Скажем, гостевая ОС виртуальной машины заставляет вызов очистить TLB (буфер отбрасывания перевода), который является физическим компонентом физического процессора. Если гостевой ОС было разрешено очистить все TLB на физическом процессоре, который будет иметь отрицательные эффекты для всех других виртуальных машин, которые также используют тот же физический TLB. В случае Windows этот вызов в гостевой ОС преобразуется в «гиперколл» или «просвещенный» вызов, который интерпретируется гипервизором, так что только часть TLB, относящаяся к этой виртуальной машине, очищается.


(Интересно, что это подсказывает мне, что гостевые виртуальные машины, у которых нет надлежащих инструментов интеграции и / или служб, могут иметь возможность влиять на производительность всех других виртуальных машин на одном и том же хосте, но это полностью выходит за рамки этой темы .)


Все это, чтобы сказать, что вы Можно все еще обнаруживают на хосте Hyper-V время, которое виртуальный процессор потратил на ожидание появления реального процессора, чтобы он мог планироваться. Но вы можете видеть только эти данные на гипервизоре Windows Hyper-V. Если это можно увидеть в других гипервизорах, я настоятельно призываю других рассказать нам, как это увидеть в этом гипервизоре, а также, если он открыт для гостей. (Редактировать 10/1/2013 Спасибо, злые, за это!)

Моя тестовая машина была Hyper-V Server 2012, которая является бесплатной версией Server 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, Эти счетчики предоставляют вам проценты, которые могут быть использованы для определения таких фактов, как сколько времени «реальные» процессоры тратят на то, чтобы делать что-то Другие чем обслуживание виртуальной машины или всех виртуальных машин.

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

Я ничего не знаю о гостевой ОС Windows, установленных инструментах интеграции или нет, чтобы узнать, сколько времени, с точки зрения секунд или процентов, хост VM потратил на обслуживание или не обслуживал его в соответствии с общим временем физического процессора.  (Редактировать 10/1/2013: ESXi 5.0 или лучше предоставляет эти данные гостевой виртуальной машине через инструменты интеграции. Тем не менее, на Hyper-V все равно нет.)


31
2017-12-06 03:42



+1 - эпический ответ эпический - Mark Henderson♦
+1 для тщательной разведки действительно, высоко ценится. Так что в отношении EC2 это, очевидно, сводится к тому, что гости Unix / Linux работают в Xen paravirtual режим, который является паравиртуализированный домен (т. е. не полная виртуализация, гостевая ОС изменена для запуска на хосте), где время кражи доступно, в отличие от Windows / FreeBSD / ... гостей, работающих в Xen HVM, который является аппаратный эмулируемый домен (то есть гостевая ОС немодифицирована для запуска на хосте), где, по-видимому, нет - так что определенный отрицательный ответ, предположим, это то, что считается. Правильно ли я прочитал, что он может быть добавлен в конце концов? - Steffen Opel
Это могло бы, теоретически, но не задерживать дыхание. Как я уже сказал, это требует, чтобы гипервизор, зависящий от поставщика, и гостевая ОС, зависящие от поставщика, прилагали скоординированные усилия, чтобы сделать эти данные о физическом хосте доступными и доступными из гостевой виртуальной машины. wiki.xen.org/wiki/Xen_Kernel_Feature_Matrix - Ryan Ries
Тангенциальность: гипервизоры VMware будут ссылаться на команду кражи как на время готовности - количество времени, в течение которого виртуальный процессор ожидает обслуживания физическим ресурсом. - Yolo Perdiem
это хорошо известная тема на мэйнфрейме. Эта метрика доступна уже несколько десятилетий. Это называется «wait on cpu».


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


1
2018-05-24 12:49



Спасибо за проверку - видимо Счетчики виртуализации для Hyper-V действительно должны быть доступны, возможно, они должны быть установлены / активированы как-то сначала? Я все еще не могу определить / вывести аналогичную / связанную метрику среди них. - Steffen Opel