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

Как виртуализация серверов увеличивает производительность?

Я читал о виртуализации серверов как о новой тенденции из-за множества преимуществ, которые она приносит. Один из них - повысить производительность с меньшим количеством оборудования.

Как это возможно? Насколько я знаю, виртуализация не может сравниться с физической производительностью (потому что вы добавляете 1 дополнительное программное обеспечение). И если вы уменьшите количество физического оборудования (например, на 1 компьютер меньше), как вы сможете получить такую ​​же производительность?

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

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

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

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

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

Говоря о производительности, виртуальные машины могут использовать паравиртуализацию, чтобы уменьшить накладные расходы либо на всю виртуальную машину, либо на определенные критически важные устройства в эмулируемой виртуальной машине. Это обеспечивает очень близкие к исходным скоростям (а в некоторых случаях даже более высокие скорости из-за расширенных функций кэширования) гибких абстракций диска, прямых подключений к диску и виртуальных сетевых адаптеров. Кроме того, гипервизоры используют расширенные функции памяти, такие как дедупликация, которые гостевая ОС может не поддерживать. Это позволит чему-то вроде гостевой системы Windows напрямую воспользоваться преимуществами дедупликации памяти с помощью KSM и устойчивости хранилища BTRFS или ZFS, в качестве примера.

Ответ прост: виртуализация не увеличить производительность. По факту, виртуализация значительно снижает производительность.

Конечно, я провел это тестирование некоторое время назад, но нет способа избавиться от огромных накладных расходов, связанных с дополнительным переключением контекста. Переключение контекста в гипервизоре обычно примерно в 100 раз медленнее, чем в «голом железе». Когда вы приближаетесь к точке насыщения ЦП, производительность резко падает.

Конечно, я проводил это тестирование еще во времена Core2, но все не изменилось так сильно, как можно было ожидать. Есть способы до некоторой степени снизить накладные расходы, в том числе: 1) закрепить виртуальные ЦП к физическим потокам ЦП (и пожертвовать возможностью миграции виртуальных машин). 2) Оставьте несколько ядер нераспределенными для гостей и прикрепите к ним гипервизор (и упреждающе пожертвуйте производительностью этих нескольких ядер) 3) Увеличьте минимальную продолжительность временного интервала (обычно с использованием соответствующего профиля настроенного ADM).

Но все равно останутся значительные накладные расходы.