litceysel.ru
добавить свой файл
  1 ... 3 4 5 6 7 8

5. Результаты

5.1. Современные методы профайлинга

После проведенных тестов можно выделить некоторые проблемы и ошибки, которые происходят при профайлинге приложений. Ссылка на полную таблицу результатов можно найти в Приложении 9 “Результаты тестирования”.

5.1.1. Выявленные ошибки

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

5.1.2. Выявленные недостатки

Первая из проблем, которая была выявлена набором тестов ”4.5. Использование оперативной памяти”, – возникновение погрешностей при активном использовании памяти. Если при профайлинге приложения параллельно запускается другое приложение, использующее оперативную память, то показания профайлера несколько отличаются от того времени, которое требуется программе для работы в чистой системе.

Вторая проблема, выявленная набором тестов “4.6. Предсказания ветвлений” – различие процессов выполнения программ на процессорах различных архитектур. Тестирование производилось на процессорах фирмы AMD и Intel. На графиках видны значительные отличия в поведении функции времени исполнения программы от входного параметра. Из этого можно сделать вывод, что для различных процессоров оптимальные программы могут отличаться.

Третья проблема, которая была выявлена, связана с применением метода семплирования. Метод производит периодические замеры состояния программы, а затем, собрав все эти данные, находит ”горячие” участки в ней. Из-за того, что метод статистический, то возможен случай, когда семплы не будут покрывать весь исполняемый код. В тесте ”4.7. Потеря контекста” для профайлера AMD CodeAnalyst был выявлен случай, когда график времени работы программы от параметра имеет ступенчатый вид. Это объясняется тем, что для несильно отличающихся параметров семпл не успевает попасть в нужный процесс из-за принудительной потери контекста.


5.1.3. Сравнение профайлеров между собой

Если использвать профайлер как инструмент для измерения времени работы приложения, то, оценив все полученные результаты, можно сказать, что профайлер AMD CodeAnalyst проявил себя лучше всех. От профайлера компании Intel его отличает лишь то, что он работает на процессорах обеих фирм. Intel VTune же специализирован только на процессорах Intel.

AQTime оценивается как самый худший из рассматриваемых фирменных профайлеров. В его показаниях всегда присутствует некоторое постоянное отклонение от реального времени исполнения приложений. В тесте “4.9. Вызовы процедур” из-за ошибки в способе измерения, профайлер давал на выход неадекватные показания, которые значительно отличаются от реального времени работы приложения.

5.1.4. Проблемы, возникшие при тестировании

Каждый из рассматриваемых профайлеров не был приспособлен к такому роду тестирования. Для каждого инструмента пришлось создавать небольшие утилиты или скрипты для того, чтобы пакетные запуски стали возможны. В нашем случае при обработке тестов необходимо перебирать некоторое количество чисел и передавать их в качестве параметров.

Профайлер AQTime и в этом случае проявил себя не с лучшей стороны, не предоставив полноценных консольных средств для работы с ним. Из командной строки возможно осуществлять только запуск уже настроенной конфигурации. При этом отсутствует экспорт полученных результатов в обычный текстовый файл.

AMD CodeAnalyst и Intel VTune имеют достаточно средств для работы с ними через командную строку. Для полной оптимизации процесса тестирования было достаточно написать скрипты для извлечения необходимых данных из сгенерированных отчетов.

5.2. Преимущества метода подсчета инструкций

Ниже перечислены преимущества метода подсчета инструкций, выявленные после проведения всех тестов:


  1. независимость показаний от архитектуры компьютера, версии и модели процессора,

  2. независимость показаний от внутренних оптимизаций процессора (кеширование, предсказания ветвлений и другие),

  3. постоянные показания, независящие от окружения, параллельных процессов и нагрузки на систему,

  4. результирующие показания пропорциональны реальному времени работы программы,

  5. высокая точность производимых измерений.

За все такие преимущества приходится платить замедлением работы программы в среднем в 50-100 раз в зависимости от плотности ветвлений и переходов в программе.



<< предыдущая страница   следующая страница >>