Nasze oprogramowanie zachowuje się wyjątkowo u jednego z klientów, gdzie jest uruchamiane na maszynie wirtualnej z systemem Windows 2008. Hostem jest VMWare ESX Server.
Największym problemem, jaki widziałem, jest to, że nasze procesy upuszczały połączenia gniazd lub upłynęły limity czasu połączeń gniazd. Niektóre z naszych procesów komunikują się ze sobą przez gniazda TCP. W niektórych przypadkach łączymy gniazda z systemami zdalnymi (np. WMI, JDBC).
Jestem przekonany, że maszyna wirtualna jest pozbawiona zasobów. Nie mamy dostępu do pulpitów administratora / wydajności ESX. Dowiedziałem się również, że wszelkie liczby wykonywane przez perfmon lub menedżera zadań w maszynie wirtualnej hosta nie są prawdziwym wskaźnikiem stanu systemu operacyjnego hosta.
Mógłbym napisać program, który zajmuje się matematyką zmiennoprzecinkową i drukuje poświęcony czas. Następnie porównaj ten czas z czasem uzyskanym na różnych maszynach wirtualnych lub rzeczywistych polach Windows.
To podejście jest wystarczające, abyśmy mogli ustalić, czy podstawową przyczyną jest rzeczywiście wydajność maszyny wirtualnej. Byłoby jednak znacznie łatwiej przekonać klienta, gdyby istniał standardowy sposób lub narzędzie do tego.
Czy jest jeden
źródło
Odpowiedzi:
Zwykle używam tych samych produktów, których używam do testowania fizycznego sprzętu.
http://www.passmark.com/products/pt.htm
Oczywiście pomiń test 3d, ale inne mogą być pomocne, zwłaszcza testy porównawcze dysków i sieci. Upewnij się, że używasz odpowiednich sterowników sieciowych i IO i upewnij się, że wszystkie ustawienia systemu Windows są zoptymalizowane pod kątem maszyny wirtualnej.
źródło
Do testowania sieci używam iperf i netperf do przetestowania tego.
Do testowania I / O dysku używaj sqlio, które jest kolejnym standardowym narzędziem branżowym. Uruchom zarówno losowe, jak i sekwencyjne testy we / wy z różnymi rozmiarami bloków.
Jeśli chodzi o testowanie procesora / pamięci RAM, nie mogę wymyślić niczego dla systemu Windows z góry.
źródło