ПОД_3.1 (кр_з)

2020-08-19СтудИзба

Описание файла

Файл "ПОД_3.1" внутри архива находится в папке "кр_з". Документ из архива "кр_з", который расположен в категории "". Всё это находится в предмете "параллельная обработка данных" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "ПОД_3.1"

Текст из документа "ПОД_3.1"

Казачкин Дмитрий, 522 гр.

Цели и методы профилирования программ

Профилирование — измерение производительности как всей программы в целом, так и отдельных ее фрагментов, с целью нахождения "горячих" точек (Hot Spots), — тех участков программы, на выполнение которых расходуется наибольшее количество времени.

Поскольку большинство программ проводят 90% времени в 10% кода (правило «90/10», примененное к информационным технологиям), то было бы весьма неплохо выловить эти 10% и переписать их эффективнее. Однако простой взгляд на текст программы не всегда позволяет найти такие места. Вот тут и приходит на помощь профилировка.

Основная цель профилировки — исследовать характер поведения приложения во всех его точках. Под "точкой" в зависимости от степени детализации может подразумеваться как отдельная машинная команда, так целая конструкция языка высокого уровня (например: функция, цикл или одна–единственная строка исходного текста). Анализ данного поведения позволяет выделить наиболее «узкие» места, давая тем самым твердую почву для улучшений показателей программы путем модификаций подобных участков.

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

  • Общее время исполнения – время, проведенное суммарно в пределах точки программы. Понятно, что таким образом определенная величина для функции main() равна 100%, что не очень интересно. Если под точками программы подразумеваются функции, то целесообразно также рассматривать чистое время работы каждой из функций (т.е. с вычетом времени дочерних функций).

Func Func+Child Hit

Time % Time % Count Function

---------------------------------------------------------

350,192 95,9 360,982 98,9 10000 _do_pswd (pswd_x.obj)

5,700 1,6 5,700 1,6 10000 _CalculateCRC (pswd_x.obj)

5,090 1,4 10,790 3,0 10000 _CheckCRC (pswd_x.obj)

2,841 0,8 363,824 99,6 1 _gen_pswd (pswd_x.obj)

1,226 0,3 365,148 100,0 1 _main (pswd_x.obj)

0,098 0,0 0,098 0,0 1 _print_dot (pswd_x.obj)

  • Удельное время выполнения (так же называемое растактовкой) соответствует времени выполнения точки программы в среднем, лучшем и худшем случае. Если для какой-либо строчки кода среднее значение существенно превышает некоторый разумный порог – имеет смысл задуматься, а все ли в порядке, к примеру, с кэшем и правильно ли вообще составлен алгоритм. В идеале, при работе на уровне машинных команд, удельное время для каждой точки должно мериться единицами тактов. Если разброс между минимальным и максимальным значением измеряется порядками, то также следует заподозрить неладное.

109 y = y | y << 8;

109 mov eax,DWORD PTR [ebp-28]

109 shl eax, 08h

109 mov ecx, DWORD PTR [ebp-28]

109 or ecx, eax

109 mov DWORD PTR [ebp-28], ecx

2

1

(0,7.3,80)

1

1

  • Количество вызовов – простая и в то же время довольно важная характеристика точки программы. Если оно слишком низкое, то это означает, что не стоит доверять остальным данным, поскольку нет гарантии, что замеренное время и разброс не связаны с подгрузкой из ОП при первом запуски или других краевых эффектах, не выражающихся ярко при миллионах последовательных прогонов. Кроме того, данный параметр позволяет оценить важность оптимизации некоторой конструкции. Ведь улучшение на 1% при миллионах вызовов даст огромный прирост, в то время как ускорение на 10% может оказаться незначительным при числе вызовов, измеряемых десятками. Часто вызываемые функции просто необходимо делать in-line.

  • Причины/источники конфликтов и пенальти определяются, исходя из информации о пенальти машинных команд. Хотя современные процессоры x86 с некоторыми ограничениями позволяют получить эту информацию и так, гранды компьютерной индустрии — Intel и AMD уже давно выпустили свои профилировщики, содержащие полноценные эмуляторы выпускаемых ими процессоров, позволяющие визуализировать нюансы выполнения каждой машинной инструкции.

decoder minimum clocks = 0

Decoder Average Clocks = 0

Decoder Maximum Clocks = 4

retirement average clocks = 1

total cycles = 1011 (08,20%)

micro-ops for this instruction = 1

The instruction had to wait (8,11.1,113) cycles for it's sources to be ready  

Dynamic Penalty: BTB_Miss_Penalty

This instruction stalls because the branch was mispredicted.

Occurances = 13

  • Покрытие кода – побочная функция профилировщиков, не имеющая прямого отношения к оптимизации. Покрытием кода называется процент достигнутых при профилировании точек программы от общего числа точек. Эта информация важна, чтобы убедиться, что весь код приложения протестирован целиком и в нем не осталось никаких "темных" мест, т.е. профилированы были все ветки программы.

call depth: 2

total functions: 5

Function coverage: 60,0%

Module Statistics for pswd.exe

------------------------------

Functions in module: 5

Module function coverage: 60,0%

Covered Function

----------------

. _DeCrypt (pswd.obj)

. __real@4@4008fa00000000000000 (pswd.obj)

* _gen_pswd (pswd.obj)

* _main (pswd.obj)

* _print_dot (pswd.obj)

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

I refs: 1,873,023

I1 misses: 2,222

L2i misses: 2,057

I1 miss rate: 0.11%

L2i miss rate: 0.10%

D refs: 808,914 (578,685 rd + 230,229 wr)

D1 misses: 9,785 ( 9,212 rd + 573 wr)

L2d misses: 5,119 ( 4,757 rd + 362 wr)

D1 miss rate: 1.2% ( 1.5% + 0.2% )

L2d miss rate: 0.6% ( 0.8% + 0.1% )

L2 refs: 12,007 ( 11,434 rd + 573 wr)

L2 misses: 7,176 ( 6,814 rd + 362 wr)

L2 miss rate: 0.2% ( 0.2% + 0.1% )

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

Пути сбора профилирующей информации можно разделить на следующие группы:

  • Event based. В данном случае, профилировщиком является сама среда выполнения (например, .NET framework или виртуальная машина Java, а также среды Python и Ruby). Профилировщики всех данных сред – событийно-ориентированные, т.е. профилировщик работает благодаря хуку, выполняемому при различных вызовах.

  • Statistical. В основе данного метода лежит статистический прием семплирования. По прерываниям системы проверяется значение счетчика команд изучаемой программы. Наиболее знаковые системы, использующие данный подход - GNU's gprof, AMD's CodeAnalyst, Intel VTune.

  • Hypervisor / Simulator. Программа запускается в виртуальном окружении или под симулятором. В первом случае используется реальная аппаратура (SIMMON), при симуляции же работа процессора лишь симулируется на языке высокого уровня (SIMON, OLIVER).

  • Instrumentation. Модификация программы для выполнения инструкций, связанных с профилировкой. Модификации должны быть в запущенном бинарном приложении, но внесены могут быть на любом этапе:

    • Модификация исходного кода, вручную при написании

    • Модификация компилятором («gcc –pg »)

    • Модификация бинарного приложения (ATOM)

    • Модификация во время выполнения (PIN, Valgrind)

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее