Бенчмаркинг, профилирование на виртуальных машинах

Во многих различных источниках вы можете прочитать о проблемах учета времени на виртуальных машинах. Поскольку каждый тест зависит от времени, я не уверен, как интерпретировать, например. Результаты тестов apache или профилировщика xdebug на vmware и их достоверность.

http://communities.vmware.com/docs/DOC-5581

VMware предлагает построить специальную виртуальную машину для тестирования производительности. Кроме того, есть много советов, которые кажутся обходными решениями (установка VMware Tools, специальная конфигурация и т. д.).

Особенно, когда дело доходит до проблем с производительностью дискового ввода-вывода, меня очень беспокоит точность результатов. Расмус Лердорф рассказал об этом на drupalcon, заявив, что некоторые из его улучшений производительности, связанных со вызовами статистики, не видны в его тестах VMware, потому что VMware имеет специальное кэширование дисков, которое нельзя сравнить с физическими дисками:

http://www.nowpublic.com/tech-biz/rasmus-lerdorf-simple-hard-drupalcon-2008-key-note

После всего этого я не уверен, что VMware вообще способна проводить какой-либо бенчмаркинг.


person Sebastian Keßler    schedule 15.09.2011    source источник
comment
Это вопрос или утверждение? Я не уверен, что где-то вижу вопрос...   -  person Simon    schedule 15.09.2011
comment
Это вопрос. Я хотел бы узнать больше о проблеме бенчмаркинга в vms и можете ли вы доверять результатам. При каждом запуске бенчмарка apache я получаю разные результаты, они отличаются до 10%, то же самое для профилировщика. Как я могу сравнить изменения кода в отношении производительности, если у меня нет четкой ссылки для сравнения? Я предполагаю, что причиной является vmware, но мне интересно, заметили ли другие ту же проблему.   -  person Sebastian Keßler    schedule 15.09.2011


Ответы (2)


Многое зависит от того, что вы пытаетесь сделать.

  1. Просто продолжайте измерения, чтобы искать регрессии
  2. Найдите потери времени, которые вы можете исправить, чтобы повысить производительность

Многие люди думают, что это одно и то же, но я думаю, что это происходит из-за ограниченного практического опыта (2).

То, как я это делаю (2), не измеряет, а спрашивает в несколько случайных моментов времени, что происходит и почему. Для этого не имеет большого значения, находится ли он на виртуальной машине или нет. Если он делает что-то скрытое, что занимает большую часть времени, вы увидите это, независимо от того, выполняется ли это на виртуальной машине. Точная дробь значения не имеет. Разоблачение скрытой деятельности — вот что важно.

Вот пример на python, но вы можете сделать это на любом языке.

person Mike Dunlavey    schedule 18.09.2011

Что ж, это может быть правдой о дисковом кэшировании и низкой производительности без vmware-tools.
Но я обнаружил, что Vmware очень помогает в разработке, поскольку у меня есть виртуальная машина Linux в качестве сервера разработки, пока я пишу код в Windows.
br> И я могу легко протестировать и найти потенциальные узкие места в моем коде.

Это может быть не идеально и может упускать некоторые вещи, но все же это намного проще и дешевле, чем установка выделенного Linux-бокса.

Обновление
ApacheBench — хороший инструмент для тестирования масштабируемости и необработанного показателя RequestPerSeconds.

Но для поиска узких мест в моих PHP-скриптах и ​​тестирования эффектов оптимизации кода я всегда использую XDebug вместе с Webgrind или WinCacheGrind для просмотра выходных данных профилировщика.

Если у вас есть Linux, вы можете установить XDebug с помощью pecl install xdebug или для Windows вы можете найти готовые двоичные файлы на сайте xdebug.

Я использую следующую конфигурацию для Xdebug

[xdebug]
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "/opt/lampp/htdocs/profiles"
xdebug.profiler_output_name = "cachegrind.out.%s.%t"

с помощью profiler_enable_trigger я могу выборочно профилировать, если это необходимо, передав XDEBUG_PROFILE в качестве параметра строки запроса.
Также я Я настроил webgrind, чтобы я мог напрямую просматривать вывод в графическом виде в самом браузере.

person danishgoel    schedule 15.09.2011