Aplikacja „nieobsługiwana” na maszynie wirtualnej?

10

Kupiliśmy oprogramowanie od małej firmy, jest to 32-bitowy menedżer przepływu treści wideo w systemie Windows, który został przez nich dostosowany.

Od ponad roku działamy dobrze, uruchamiając ten kod w VMWare ESXi 4.1u2 VM na W2K3EE-32-bit (właśnie na tym obsługują).

Potem zaktualizowali swój kod mniej więcej miesiąc temu i zaczęliśmy widzieć, że jedna z vCPU okresowo ustalana jest na 100%, druga vCPU jest dość bezczynna, powiedzmy 5-7% - więc po prostu założyliśmy, że kod jest źle napisany i skontaktowaliśmy się z nimi w sprawie to.

Teraz wrócili do nas, mówiąc, że ich kod nie działa na maszynie wirtualnej, wiedzieli o tym wymaganiu od około 18 miesięcy i chcą, abyśmy to zrobili. Mówią, że widzą ten problem tylko wtedy, gdy działają w maszynach wirtualnych. Mam rozmowę z ich starszym programistą zaplanowanym za kilka godzin w celu omówienia.

Teraz na szczęście mamy kilka elementów fizycznych, na których możemy to zrobić, trochę czasochłonne, ale wykonalne.

Moje pytanie jest jednak takie, że biorąc pod uwagę, że ta maszyna wirtualna nie dotyka bezpośrednio żadnego sprzętu, jest na bardzo nowoczesnym hoście i faktycznie ma bardzo niskie wymagania (2 x vCPU, 4 GB, dysk rozruchowy 20 GB, dysk danych 100 GB, pojedynczy dysk vNIC i nic więcej) co może być problem z uruchomieniem go na maszynie wirtualnej, jeśli taka istnieje?

Oczywiście zdecydowanie staram się to osiągnąć, ale zastanawiałem się, czy ktokolwiek znalazł regularną aplikację, która jakoś źle zachowuje się w maszynie wirtualnej, ale nie w fizyce.

Siekacz 3
źródło
Czy oba procesory vCPU pobierają z tego samego procesora? Czy masz ustawione, że każdy prawdziwy rdzeń jest mapowany bezpośrednio na vCPU? Czy robisz coś śmiesznego, na przykład z włączoną funkcją hiperwątkowania na procesorach? Oto niektóre pytania, które powinny pomóc w rozwiązaniu wszystkiego, co może być przyczyną spowolnienia, które możesz rozwiązać. Prawdopodobnie będziesz miał lepszy pomysł po rozmowie ze starszym programistą, albo jak rozwiązać problemy, które mogą pojawić się po uruchomieniu go na maszynie wirtualnej, lub będziesz wiedział na pewno, czy robią to źle. Możliwe, że kod został napisany w języku Java.
Wilshire
Pozwalam ESXi robić to samo, jeśli chodzi o planowanie procesów, a w przypadku Xeonów z serii> 55xx hiperwątkowanie nie jest uważane za „śmieszne”, działa i jest bardzo przydatne - och, a przy okazji, .NET 3.5 kodu.
Chopper3
Wiem, że klaster MySQL najwyraźniej również nie „oficjalnie” działa w zwirtualizowanym środowisku. Powód? Nie wiem! : P
Ben Ashton

Odpowiedzi:

3

Chociaż nie mogę wypowiadać się za tym dostawcą ani pakietem oprogramowania, pracowałem dla dużego (międzynarodowego) dostawcy, w którym jeden z sprzedawanych przez niego programów miał bardzo znane znane problemy podczas uruchamiania na VMware.

W takim przypadku jeden problem może spowodować zakleszczenie oprogramowania, a drugi może spowodować uszkodzenie danych. W związku z tym doradzono klientom, aby nie uruchamiali oprogramowania w środowisku wirtualnym. Niektórzy nadal tak robili i we wszystkich przypadkach, o których wiedziałem, napotkali jeden lub oba problemy.

Chociaż jest to rzadkie, mogą zdarzyć się przypadki, w których oprogramowanie nie działa tak, jak można tego oczekiwać w VMware.

Chociaż zdaję sobie sprawę, że nie pomaga to bezpośrednio Twojemu problemowi, pokazuje, że VMWare nie zawsze jest idealnym systemem.

Przypis: w tym przypadku dostawca był w stanie współpracować z VMware w celu znalezienia rozwiązań (niektóre poprawki kodu, niektóre zmiany konfiguracji VMWare), a teraz mają pewne (bardzo szczegółowe) wskazówki dotyczące uruchamiania oprogramowania na VMWare.

Sam
źródło
To jest dokładnie to, o czym jestem smutny, ale wdzięczny za to, że słyszę - jak wspominam Janne w jego odpowiedzi, jesteśmy tak przyzwyczajeni do rzeczy, które działają poprawnie na maszynach wirtualnych, że znalezienie tak dziwnego zestawu okoliczności nieco mnie oszołomiło. , więc słuchanie od ciebie, że nie jestem sam w tym, jest co najmniej pocieszające. Nie słyszałem jeszcze nic pozytywnego od dostawcy oprogramowania, ale wiem, że analizują problem, ale nie potrafię sobie wyobrazić rozwiązania na około miesiąc, choć niestety. Dzięki jeszcze raz.
Chopper3
3

W przypadku ESX v5 i limitu Monster VM (32vCPU 1 TB RAM) liczba aplikacji mających problemy z VM zmniejsza się. Większość z tych, których doświadczyłem, to: - poleganie na czasie, aby być liniowym (procesy w czasie rzeczywistym lub aplikacje, które muszą mieć czas liniowy ... zwykle można to poprawić) - aplikacje powodujące wiele przerwań sprzętowych lub przełączania kontekstu

W większości przypadków powinieneś być w stanie poprosić swojego przedstawiciela vmware o rozmowę z tymi facetami. Wierzę, że vmware wciąż ma zespół ludzi zaangażowanych w sprawianie, aby wszystko działało (mieli na początku laboratorium wsparcia technicznego).

Jeśli chodzi o rozwiązanie, miałem podobny problem z VM o wysokim zużyciu procesora (ale host ma dużo zasobów procesora wolnych). Rozwiązaliśmy ten problem, migrując na serwer z procesorem Nehalem i zmieniając poziom kompatybilności procesora w EVC (jeśli masz klaster z DRS / HA)

hdex
źródło
Dziękuję za odpowiedź - bardzo miło z twojej strony, kiedy to naprawdę nie jest czarno-białe pytanie. Twoje przykłady są bardzo przydatne, wrócę i zbadam w szczególności przełączanie kontekstu. No i wszystkie nasze serwery mają dokładnie ten sam procesor (X5690) z EVC ustawionym równomiernie, ale jeszcze raz dziękuję.
Chopper3
2

Widziałem podobny problem z VMware ESX + Debian 6 + OpenLDAP 2.4.x (niezależnie od dokładnej wersji OpenLDAP jest apt-gettable ...).

W codziennych operacjach działa OK, ale rzeczy takie jak importowanie dużego pliku LDIF zawierającego około 400 000 wpisów są bardzo wolne (50-100x wolniej niż w przypadku serwerów fizycznych). Również przy długookresowym, wysokonakładowym testowaniu wszystko idzie płynnie z czasem reakcji wynoszącym kilka milisekund, ale czasami zdarzają się dziwne wartości szczytowe od 500 do 25 000 (!) Milisekund.

W przypadku serwerów fizycznych nie jestem w stanie odtworzyć tych problemów. I tak, spędziłem około trzech tygodni próbując wyizolować problem, dostosowując wszystkie parametry od parametrów systemu operacyjnego do wartości slapd do wartości BerkeleyDB ... nic nie pomogło.

Janne Pikkarainen
źródło
Dziękuję bardzo za podzielenie się swoimi doświadczeniami, nie mogę powiedzieć, że nie uważam tej całej sprawy za nieco dziwną - jestem maniakiem wirtualizacji doświadczeń i jestem tak przyzwyczajony do rzeczy, które działają, że znalezienie aplikacji, która to robi w pewien sposób wstrząsnęło moimi przekonaniami, więc dobrze jest usłyszeć, że nie jestem w izolacji. Dziękuję Ci.
Chopper3
1
Kolejne dwa przykłady: Atlassian mówi, że oba Jirai Confluencenie są zalecane do uruchamiania w środowisku VM (ware). Muszą istnieć wzór dla tych wyjątków, po prostu jeszcze nie rozgryzłem, co to może być. Moja instalacja OpenLDAP nie jest bardzo intensywna we / wy (3 MB / s zapisu i niezbyt wiele IOPS w szczytach podczas testu porównawczego), wykorzystuje może 20-40% procesora i około 150 MB pamięci RAM. Nie powinno być zbyt trudne w obsłudze. Być może ma to coś wspólnego z wątkami, ale vmstat informuje, że przełączniki kontekstu itp. Są na normalnym poziomie.
Janne Pikkarainen,
Moja obecna teoria jest taka, że ​​ma to coś wspólnego z utrzymywaniem czasu systemu operacyjnego. VMware miało w przeszłości wiele dziwnych problemów z zegarem i nawet teraz czasami trzeba przekazać kilka tsc=pitstylowych parametrów podczas rozruchu, a przynajmniej OpenLDAP jest BARDZO wrażliwy na dokładność zegara systemowego. Może powinienem prześledzić wszystkie problematyczne aplikacje i sprawdzić, czy wszystkie z nich intensywnie korzystają, gettimeofday()czy nie.
Janne Pikkarainen
Jeszcze raz dziękuję, masz rację na temat czasu spędzonego na maszynie wirtualnej, jest to właściwie wszędzie, więc zrozumiałbym to, ale nie mogę nie myśleć, że nawet gdyby to był problem, byłby to bardzo szybki problem dla nasi dostawcy zauważają w kodzie, pamiętając, że tak naprawdę nie jest to aplikacja czasochłonna, po prostu pobiera treści wideo i przetwarza je, hmmm. Dzięki jeszcze raz.
Chopper3