Мы видим, как наше программное обеспечение ведет себя необычно у одного из клиентов, где оно запускается на виртуальной машине Windows 2008. Хост - VMWare ESX Server.
Самая большая проблема, которую я видел, - это то, что наши процессы сбрасывают соединения сокетов или время ожидания соединений сокетов истекает. Некоторые из наших процессов взаимодействуют друг с другом через сокеты TCP. В некоторых случаях мы подключаемся к удаленным системам через сокеты (например, WMI, JDBC).
Я считаю, что виртуальная машина испытывает нехватку ресурсов. У нас нет доступа к панелям администратора и производительности ESX. Я также узнал, что любые числа, которые предоставляет perfmon или диспетчер задач внутри виртуальной машины хоста, не являются истинным показателем работоспособности операционной системы хоста.
Я мог бы написать программу, которая выполняет кучу математических операций с плавающей запятой и распечатывает затраченное время. Затем сравните это время с временем, полученным на разных виртуальных машинах или реальных компьютерах с Windows.
Этого подхода достаточно, чтобы мы могли определить, действительно ли основная причина заключается в производительности виртуальной машины. Однако было бы намного проще убедить клиента, если бы для этого существовал стандартный способ или инструмент.
Есть один?
Я обычно использую те же продукты, что и для тестирования физического оборудования.
http://www.passmark.com/products/pt.htm
Конечно, пропустите 3D-тест, но другие могут быть полезны, особенно тесты диска и сети. Убедитесь, что вы используете правильные драйверы сети и ввода-вывода, а также убедитесь, что все настройки Windows оптимизированы для виртуальной машины.
Для тестирования сети я использую iperf и netperf для стресс-тестирования.
Для тестирования дискового ввода-вывода используйте sqlio - еще один стандартный инструмент. Запускайте тестирование как случайного, так и последовательного ввода-вывода с разными размерами блоков.
Что касается тестирования ЦП / ОЗУ, я не могу придумать ничего для Windows из головы.