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

Производительность выделенного и виртуального сервера

У меня есть приложение, работающее как в выделенной, так и в виртуальной серверной среде (все Windows Server 2008 R2). Учитывая почти идентичные спецификации серверов (память, процессоры), приложение, работающее на виртуальном сервере, значительно уступает по производительности тому, которое выполняется на выделенном сервере, с точки зрения времени для выполнения сложной задачи, занимая в 2 раза больше времени для выполнения. Во время этой задачи загрузка процессора виртуального сервера постоянно составляет около 30%, хотя она редко превышает этот уровень. Использование процессора выделенного сервера никогда не превышает 5%. На обоих серверах достаточно свободной памяти, и я не вижу узких мест при чтении / записи на диск.

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

Есть ли что-то, что мне не хватает с точки зрения того, почему мое приложение работает намного медленнее на виртуальном сервере с тем же приложением?

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

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

Хороший пример функций ЦП, которые могут отсутствовать в обоих KVM (Qemu) и Hyper-V гости с настройками по умолчанию являются AES и AES-NI набор инструкций, который обычно значительно ускоряет шифрование / дешифрование AES.

Только просмотр общесистемного использования ЦП / памяти / диска не решит многих проблем с производительностью.

Профилируйте приложение, чтобы узнать, что именно работает медленно. В Windows попробуйте Набор инструментов для повышения производительности Windows (fka Xperf). Данные можно сравнивать и визуализировать разными способами, в том числе графики пламени.


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