Назад | Перейти на главную страницу

Итак, каковы накладные расходы виртуализации и когда мне следует беспокоиться?

Я ищу хорошие практические правила, чтобы понять, когда НЕ виртуализировать машину.

Например, я знаю, что процесс, полностью привязанный к ЦП с почти 100% -ной загрузкой, вероятно, не является хорошей идеей для виртуализации, но есть ли смысл запускать что-то, что большую часть времени использует ЦП в «значительной степени» (скажем, 40 или 50%)?

Другой пример: если я виртуализирую 1000 машин, даже если они используются слабо или умеренно, вероятно, было бы плохо запускать все это на хосте с 4 ядрами.

Может ли кто-нибудь обобщить намеки на виртуализацию на основе рабочей нагрузки машины или количества гостевых машин по сравнению с ресурсами хоста?

Обычно я виртуализирую хосты Windows с помощью VirtualBox или VMWare, но я предполагаю, что это довольно общий вопрос.

То, что я бы никогда не вставил в виртуальную машину:

  • Все, что использует определенное оборудование, которое не может быть виртуализировано: обычно графика, довольно много аппаратных модулей безопасности, все, что имеет настраиваемые драйверы (например, сетевые драйверы специального назначения).

  • Системы с проблемами лицензии. Некоторое программное обеспечение взимает плату за физический процессор или ядро, независимо от того, сколько вы выделили виртуальной машине. Вы бы попали в аудиторскую проверку, если бы у вас было программное обеспечение, лицензированное для одного ядра, работающего в виртуальной машине на 32-ядерном сервере.

Вещи, которые я бы не рекомендовал вставлять в виртуальную машину:

  • Программное обеспечение, которое уже пытается использовать все ресурсы стандартного оборудования. Машины, работающие в рамках системы «больших данных», такие как hadoop, обычно предназначены для работы на «голом железе».

  • Все, что будет тонко настроено для использования ресурсов. Когда вы действительно начинаете настраивать базу данных, виртуальные машины, борющиеся за ресурсы, действительно могут помешать работе.

  • Все, что уже имеет большое узкое место. Он уже плохо работает сам с собой, он вряд ли будет хорошо работать с другими.

Есть несколько замечательных вещей для установки в виртуальные машины:

  • Все, что довольно много времени проводит без дела. Хосты служебных программ, такие как почта и DNS, с трудом создают достаточную нагрузку на современное оборудование, чтобы гарантировать выделенные серверы.

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

  • Проекты / приложения, которые начинаются с малого, но растут. Гораздо проще добавить ресурсы к виртуальной машине (а также перейти на более новое и мощное оборудование), чем запускать на «голом железе».

Кроме того, я не уверен, что вы преувеличиваете по поводу размещения огромного количества виртуальных машин на одном хосте, но если вы пытаетесь добиться большого соотношения виртуальных машин: HW, вы можете вместо этого рассмотреть ESX, Xen, KVM. Вы добьетесь большего успеха, чем при использовании VMware или виртуального бокса в Windows.

Дисковая подсистема. Обычно это наименее распространенный ресурс. Память, конечно, но та очевидная.

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

При использовании только 512 МБ памяти в гостях весь дисковый кеш помещается на хост. И он не разделен поровну между гостями.

Не беспокойтесь о процессоре ввода-вывода. Таким образом, виртуализация очень эффективна, часто это связано с тем, что в одной системе выполняется только несколько процессов. Я редко вижу мульти-xeon-системы, работающие на CPU на 100%.

изменить: опечатки

Есть два аспекта производительности виртуализации.

  • общее узкое место
  • подражание

Кто еще находится на том же железе, что касается общих узких мест? Если вы находитесь в виртуальной среде, вы очень сильно зависите от честности хостинга с вами.

Я думаю, что главный вопрос, который нужно задать для чистой производительности (особенно интерактивности), - какие части системы виртуализации эмулируются. Это зависит от настройки. Диск и сеть - типичные кандидаты. Как показывает практика, эмуляция удваивает «стоимость» производительности при выполнении действия, поэтому любое время задержки оборудования следует учитывать вдвое, а любое число пропускной способности следует уменьшать вдвое.

В конечном счете, никакая высокопроизводительная нагрузка не должна виртуализироваться. Превышение производительности виртуализации нетривиально. Смотрите результаты моих тестов здесь:

https://altechnative.net/virtual-performance-or-lack-thereof/

OTOH, если вы хотите консолидировать несколько машин, которые в основном все время простаивают, виртуализация - это путь вперед.

Хороший ответ от anttiR.

Кроме того, критичные по времени системы. Я просто понял, что гниение копейки Hyper-V (vm медленно отстает, все современные ОС в vm делают это, часто обновляются) не очень хорошо работает с некоторыми критичными по времени приложениями, которые я разрабатываю. Кроме того, я собираюсь использовать там "много" ЦП и планирую получить 12-ядерный компьютер только для этого приложения в производстве.