Достоверность сравнительного анализа в виртуальных машинах? - PullRequest
3 голосов
/ 26 декабря 2008

Насколько достоверны тесты в виртуальной машине, в отличие от реального оборудования?

Давайте рассмотрим конкретную ситуацию. Предположим, мы хотим оценить влияние недавнего изменения кода на производительность. Предположим для простоты, что рабочая нагрузка полностью связана с процессором (хотя интерес представляют связанные с IO и смешанные рабочие нагрузки). Предположим, что машина работает под VirtualBox, потому что она лучшая;)

Предположим, что мы измерили исходный код и новый код, и новый код был на 5% быстрее (при сравнении в виртуальной машине). Можем ли мы смело утверждать, что на реальном оборудовании это будет как минимум на 5% быстрее?

И, что еще важнее, предположим, что новый код работает на 3% медленнее. Можем ли мы быть полностью уверены, что на реальном оборудовании это будет на 3% или меньше медленнее, но определенно не на хуже , чем на 3%?

ОБНОВЛЕНИЕ: меня больше всего интересуют результаты битвы. То есть. Вы можете быть свидетелем случая, когда код, который был на 10% медленнее в виртуальной машине, работал на 5% быстрее на реальном железе, или наоборот? Или он всегда был последовательным (т. Е. Если он быстрее / медленнее в виртуальной машине, то он всегда пропорционально быстрее / медленнее на реальной машине)? Мои более или менее последовательны до сих пор; по крайней мере, всегда идти в одном направлении.

Ответы [ 4 ]

1 голос
/ 26 декабря 2008

Не думаю, что в VM есть что-то особенное для этого. Даже на «реальной» машине вы по-прежнему работаете с виртуальной памятью и совместно используете ЦП с другими процессами, поэтому применимы аналогичные соображения.

1 голос
/ 26 декабря 2008

Учитывая все это, используя принципы Fair Witness, все, что вы можете утверждать, это то, насколько хорошо приложение работает на ВМ, потому что это то, что вы на самом деле измеряете.

Теперь, если вы хотите попытаться экстраполировать то, что вы наблюдаете, на основе среды, то, если вы работаете с собственной виртуальной машиной (против эмулируемой, например, с PPC на x86), задача, связанная с процессором, - это процессор. связанная задача даже в виртуальной машине, потому что центральный процессор выполняет большую часть тяжелой работы.

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

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

Тем не менее, я не думаю, что вы можете честно сказать, что «вы знаете», если вы на самом деле не проверяете себя в правильной среде.

1 голос
/ 26 декабря 2008

Если вы сравниваете результаты на ВМ с результатами, не запущенными на ВМ, то нет, результаты не заслуживают доверия.

С другой стороны, если оба теста выполнялись в одной и той же среде, они да, результаты заслуживают доверия. Оба теста будут медленнее внутри ВМ, но разница все же должна быть достоверной.

0 голосов
/ 26 декабря 2008

Способ ONLY для получения достоверных результатов производительности между средой тестирования и производственной средой - запуск аппаратного и программного обеспечения IDENTICAL. Вплоть до версии аппаратного обеспечения и уровней исправлений программного обеспечения.

В противном случае вы теряете время.

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

Что касается программного обеспечения, программное обеспечение ВМ ВСЕГДА будет иметь влияние; и на некоторые операции может повлиять больше, чем на другие, в зависимости от стольких факторов, что невозможно сравнить их.

...