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

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

  

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

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

  

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

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

22 голоса | спросил Steffen Opel 24 Maypm12 2012, 15:38:42

2 ответа


32

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

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

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

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

Прежде всего, позвольте мне сразу ответить на ваш вопрос: нет возможности увидеть изнутри виртуальную машину с Windows, сколько времени процессоры, принадлежащие физической машине, на которой работает гипервизор, тратят другие вещи, если не установлены конкретные виртуальные инструменты /службы или инструменты для виртуализации для вашего конкретного гипервизора, в гостевой VM и конкретный гипервизор, на котором выполняется гость, предоставляет эти данные гостю. Даже клиент 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 whole на физическом процессоре, это будет иметь отрицательные эффекты для всех других виртуальных машин, которые также используют тот же физический 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.)

ответил Ryan Ries 6 ThuEurope/Moscow2012-12-06T07:42:01+04:00Europe/Moscow12bEurope/MoscowThu, 06 Dec 2012 07:42:01 +0400 2012, 07:42:01
1

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

ответил uSlackr 24 Maypm12 2012, 16:49:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132