Приложение не поддерживается в виртуальной машине?

10

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

Мы работали более года, выполняя этот код на виртуальной машине VMWare ESXi 4.1u2 на W2K3EE-32-битной (это то, что они поддерживают на нем).

Затем они обновили свой код примерно месяц назад, и мы начали видеть, что один из виртуальных ЦП периодически привязан к 100%, второй виртуальный ЦП довольно проста, скажем, 5-7% - поэтому мы просто предположили, что код плохо переплетен, и связались с ними по поводу Это.

Теперь они вернулись к нам, сказав, что их код не работает на виртуальной машине, они знали об этом требовании около 18 месяцев и хотят, чтобы мы выполнили его. Они говорят, что видят эту проблему только при запуске внутри виртуальных машин. Мне нужно позвонить их старшему программисту, чтобы обсудить их через несколько часов.

Теперь, к счастью, у нас есть несколько физических упражнений, на которых мы можем сделать это, немного времени, но выполнимо.

Мой вопрос, однако, заключается в том, что, учитывая, что эта виртуальная машина не касается напрямую какого-либо оборудования, она находится на очень современном хосте и на самом деле имеет очень низкие требования (2 x vCPU, 4 ГБ, загрузочный виртуальный диск 20 ГБ, виртуальный диск данных 100 ГБ, один виртуальный сетевой адаптер и ничего больше), что Может ли быть проблема с запуском его на виртуальной машине, если она есть?

Очевидно, я решительно преследую это вместе с ними, но мне просто интересно, нашел ли кто-нибудь еще обычное приложение, которое как-то плохо себя ведет внутри ВМ, но не на физическом.

Chopper3
источник
Оба vCPU вытягивают из одного процессора? Есть ли у вас настроено, что каждое реальное ядро ​​отображается непосредственно на vCPU? Вы делаете что-нибудь смешное, например, включить гиперпоточность на своих процессорах? Вот некоторые вопросы, которые должны помочь решить что-либо, что может привести к некоторому замедлению вашей работы. Вероятно, у вас будет лучшая идея после разговора со старшим программистом о том, как решать проблемы, которые могут возникнуть из-за того, что он запускается на виртуальной машине, или вы будете точно знать, делают ли они это неправильно. Может быть так, что код написан на Java.
Уилшир
Я позволяю ESXi делать свое дело с точки зрения планирования процессов, и в случае гиперпоточности Xeon> 55xx не считается «забавным», он работает и очень полезен - о, кстати, код .NET 3.5.
Chopper3
Я знаю, что MySQL Cluster, очевидно, не «официально» работает в виртуализированной среде. Причина? Не знаю! : P
Бен Эштон

Ответы:

3

Хотя я не могу говорить об этом поставщике или программном пакете, я работал на крупного (многонационального) поставщика, где у одного из продаваемых ими компонентов были очень специфические известные проблемы при работе на VMware.

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

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

Хотя я понимаю, что это не поможет вашей проблеме, это показывает, что VMWare не всегда идеальная система.

Сноска: в этом случае поставщик смог работать с VMware, чтобы найти решения (некоторые исправления кода, некоторые изменения конфигурации VMWare), и теперь у них есть некоторые (очень специфические) рекомендации о том, как запускать программное обеспечение на VMWare.

Сэм
источник
Это именно то, о чем мне грустно, но мне приятно это слышать - как я упоминаю в своем ответе Янне, мы настолько привыкли к тому, что в виртуальных машинах все работает правильно, что обнаружение такого странного стечения обстоятельств заставило меня немного удивиться, если честно так что слышать от вас, что я не одинок в этом, по крайней мере, утешительно. Я еще не слышал ничего положительного от поставщика программного обеспечения, но я знаю, что они изучают проблему, не могут представить решение в течение месяца или около того, хотя, к сожалению. Еще раз спасибо.
Chopper3
3

С ESX v5 и лимитом Monster VM (32 В ЦП 1 ТБ ОЗУ) число приложений, имеющих проблемы с ВМ, сокращается. Большинство из тех, что я испытал, это: - полагаться на время, чтобы быть линейным (процессы в реальном времени или приложения, которые должны иметь линейное время ... обычно это можно настроить) - приложения, вызывающие много аппаратных прерываний или переключение контекста

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

Что касается решения, у меня была похожая проблема с ВМ, имеющей высокую загрузку ЦП (но на хосте было достаточно ресурсов ЦП). Мы устранили проблему, перейдя на сервер с процессором Nehalem и изменив уровень совместимости процессора в EVC (если у вас есть кластер с DRS / HA)

hdex
источник
Спасибо за ваш ответ - очень мило с вашей стороны, когда это действительно не черно-белый вопрос. Ваши примеры очень полезны, я собираюсь вернуться и исследовать переключение контекста в частности. Да, и все наши серверы работают на одном и том же процессоре (X5690) с установленным EVC, но еще раз спасибо.
Chopper3
2

Я видел подобную проблему с VMware ESX + Debian 6 + OpenLDAP 2.4.x (какой бы точной версией OpenLDAP не была apt-gettable ...).

При повседневных операциях все работает нормально, но такие вещи, как импорт большого файла LDIF с 400 000 или около того записей, выполняются очень медленно (в 50-100 раз медленнее, чем на физических серверах). Кроме того, при длительном тестировании большого объема все идет гладко с временем отклика в пару миллисекунд, но иногда возникают странные пики в диапазоне от 500 до 25 000 (!) Миллисекунд.

С физическими серверами я не могу воспроизвести эти проблемы. И да, я потратил около трех недель, пытаясь изолировать проблему, настраивая все виды параметров от параметров операционной системы до значений slapd и значений BerkeleyDB ... ничего не помогло.

Янне Пиккарайнен
источник
Большое спасибо за то, что поделились своим опытом, я не могу сказать, что я не нахожу все это немного странным - я фанат виртуализации опыта, и я так привык к тому, что просто работаю, чтобы найти приложение, которое делает это в некотором смысле поколебал мои убеждения, так что приятно слышать, что я не в изолированном положении. Спасибо.
Chopper3
1
Еще два примера: Atlassian говорит, что и то Jiraи другое Confluenceне рекомендуется запускать в среде VM (ware). Должен быть образец для этих исключений, я просто еще не понял, что это может быть. Моя установка OpenLDAP не слишком интенсивна при вводе / выводе (3 МБ / с записи и не слишком много IOPS в пиках во время теста), она использует, возможно, 20-40% ЦП и около 150 МБ ОЗУ. Не должно быть слишком трудно справиться. Возможно, это как-то связано с многопоточностью, но vmstat сообщает, что переключение контекста и т. Д. Находится на нормальном уровне.
Янне Пиккарайнен
Моя текущая теория заключается в том, что это как-то связано с сохранением времени ОС. В прошлом у VMware возникали всевозможные странные проблемы с часами, и даже сейчас иногда приходится передавать tsc=pitстильные параметры во время загрузки, и, по крайней мере, OpenLDAP ОЧЕНЬ чувствителен к точности системных часов. Может быть, я должен избавиться от всех проблемных приложений и посмотреть, все ли они интенсивно используются gettimeofday().
Янне Пиккарайнен
Еще раз спасибо, вы правы насчет времени в VM, оно присуще повсеместно, поэтому я бы это понял, но не могу не думать, что даже если бы это было проблемой, это было бы очень быстро наши поставщики заметили в своем коде, заметьте, это на самом деле не чувствительное ко времени приложение, оно просто захватывает видеоконтент и обрабатывает его, хммм. Еще раз спасибо.
Chopper3