Профайлер программа что это

Содержание

SQL Profiler: примеры настройки, как пользоваться

SQL Profiler — это инструмент, предоставляющий пользовательский интерфейс для утилиты SQL Trace, которая собирает события по мере их возникновения в экземпляре SQL Server. Это дает возможность отслеживать все, что происходит внутри экземпляра. ПО предоставляет простой в использовании интерфейс, который позволяет выбирать события отслеживания и место, где нужно сохранить вывод.

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

Принцип работы SQL Server Profiler

Вам будет интересно: Чем открыть FRW-файлы? Программы

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

ПРОФАЙЛИНГ. Демонстрация навыков профайлера в живую на НТВ. Александр Лукин.

Принцип работы SQL Server Profiler

Чтобы запустить ПО, переходят в «Пуск» > «Программы» > Microsoft SQL Server > «Инструменты производительности» > SQL Profiler.

Вам будет интересно: Как установить и настроить Tor?

Список преимуществ ПО для разработчиков и администраторов баз данных:

Инструменты анализа баз данных

Администратору баз данных необходимы инструменты, позволяющие анализировать действия в БД SQL Server для устранения возможных проблем приложения, БД или просто для мониторинга общего состояния системы. Доступ к интерфейсу SQL Profiler получают из Server Management Studio.

Инструменты анализа баз данных

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

Вам будет интересно: Как перевести аудио в текст быстро и качественно

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

Кто такой «Профайлер-Верификатор»? Где обучаться необычной профессии/ @Верификатор

Наконец, MS SQL Profiler используется для выполнения аудита. У пользователя есть возможность определять данные входа и выхода из системы, чтобы видеть, кто обращается к экземпляру и из каких систем они получают к нему доступ. Можно записывать все события DDL, которые будут содержать журнал всех изменений, внесенных в среду.

Доступные версии программы

Доступные версии программы

MS SQL Profiler доступен только в выпусках SQL Server Enterprise, Business Intelligence и Standard, однако если в среде установлен выпуск Enterprise или Standard, его можно использовать для профилирования любых других выпусков, например, Express SQL Profiler или Web. Расширенные события были выпущены в Server 2008, который считается заменой Profiler или Trace, по-прежнему широко используется и продолжает представлять ценность для удовлетворения многочисленных потребностей администраторов баз данных.

Как при установке MS SQL server Profiler, так и при создании схемы БД существуют рекомендации, которые следует соблюдать. Есть также некоторые советы, которые следует учитывать при настройке трассировки с использованием Profiler. Эти рекомендации помогут пользователю контролировать экземпляр Server, не вызывая чрезмерных расходов и не увеличивая влияние на проблему производительности.

Шаблоны для быстрого доступа

Шаблоны для быстрого доступа

Есть несколько вариантов запуска Profiler. В разных версиях Windows открывают его через «Пуск» или из Metro Interface в более поздних выпусках. Более продвинутые пользователи предпочитают просто запустить его из SSMS, который всегда открыт. Юзер может найти SQL в меню инструментов.

После запуска приложения открывают диалоговое окно, позволяющее выполнить подключение к серверу, который нужно профилировать. Из раздела «Рекомендации» подключаются к удаленному серверу. После того как заполнены данные подключения, нажимают «Подключиться».

Вам будет интересно: Переменные окружения Linux: описание, особенности

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

Перед тем как пользоваться SQL Profiler, требуется выбрать шаблон для сбора данных. Шаблоны — это в основном сохраненный набор событий и столбцов данных, которые нужно отследить. Они позволяют быстро запустить трассировку без необходимости вручную выбирать все события и столбцы данных при каждом запуске нового сеанса. Microsoft предоставляет несколько вариантов, по умолчанию выбран «Стандартный».

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

Выбор событий для отслеживания

Выбор событий для отслеживания

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

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

Событие — это действие, которое происходит в пользовательском экземпляре базы данных SQL Profiler Oracle. В трассировке можно настроить более 150 различных событий.

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

Определение столбцов данных

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

Существует более 60 столбцов данных, которые можно добавить к трассировке, но в зависимости от того, какое событие выбрано, данный столбец может быть доступным или нет. Для просмотра описания доступных столбцов необходимо сначала выбрать настраиваемое событие.

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

Фильтры в сеансе трассировки

Фильтры в сеансе трассировки

Profiler позволяет пользователю фильтровать данные, захваченные в сеансе SQL. r, чтобы ограничить объем захватываемых. Фильтр применяется к любому столбцу, являющемуся частью выбранного события. Даже если столбец не сохранен как часть сеанса трассировки SQL, все равно применяют фильтры на его основе. Чтобы создать фильтр, выбирают кнопку «Фильтры столбцов» на вкладке «Выбор».

После выбора откроется диалоговое окно «Редактировать фильтр». Далее выбирают столбец данных LoginName, в котором содержатся предложения сравнения текста, и отфильтровывают с помощью LoginName, например, именем «Сервер». При использовании оператора LIKE следует иметь в виду, что если пользователь не включит подстановочный знак «%», он будет рассматриваться как оператор равенства (=). Например, если нужно найти какого-либо оператора, выполненного именем входа, которое начинается с «app», в качестве фильтра будет «app%». В зависимости от выбранного столбца появятся различные операторы сравнения.

Читайте также:
Hard drive что это за программа

Рекомендации по настройке

Profiler — отличный инструмент, который позволяет увидеть, что происходит внутри Server, и поможет пользователям выяснить, какие наихудшие запросы, как часто выполняется запрос.

Для реализации наилучших возможных индексов выполняют 4 шага:

Для отслеживания в конкретной БД используют функцию фильтрации столбцов. Запускают трассировку через шаблон настройки и сохраняют данные трассировки в его файл.

Результаты показывают, насколько можно добиться улучшения, если предложения будут реализованы, и что нужно реализовать для повышения скорости работы БД.

Для того чтобы перехватить взаимоблокировки с помощью Profiler, делают следующее:

Подключение к серверу и анализ ситуации

Вам будет интересно: Технологии ACPI — что это? Описание, особенности и отзывы

Подключение к серверу и анализ ситуации

Перед тем как начать пользоваться SQL Server Profiler, подключаются к серверу, на котором нужно выполнить профилирование. В окне «Свойства трассировки» на вкладке «Общие» выбирают пустой шаблон. На вкладке «Выбор событий» выбирают график «тупик» в разделе «Лист блокировки».

Выполняют следующие запросы:

  • выполнить запрос в синем прямоугольнике;
  • выполнить запрос в зеленом прямоугольнике;
  • выполнить запрос, выделенный серым цветом;
  • выполнить запрос, выделенный синим.

Обращают внимание, что идентификаторы процессов отображаются на информационной панели в SQL. «Мертвая блокировка» будет сгенерирована при выполнении 4-го шага: для последующего анализа это можно сохранить в меню «Файл» -> «Экспорт» -> «Извлечь события SQL Server» -> «Извлечь события взаимоблокировки».

Анализ графа тупиковой ситуации:

У пользователя есть журнал транзакций. Если транзакция сделала много обновлений, размер журнала будет больше. Следовательно, для выполнения той, которая выполнила большое количество обновлений, потребуется много затрат.

HoBtID (идентификатор кучи или двоичного дерева), связанный с узлом ресурса, используется для поиска объекта базы данных, участвующего во взаимоблокировке, и представлен с помощью следующего запроса:

  • SELECT object_name([object_id]) from sys.partitions;
  • WHERE hobt_id = xxxxxx.

Стрелки представляют типы блокировок, которые имеются на каждом узле ресурса. Обозначения X и S на стрелках представляют эксклюзивные и общие блокировки.

Использование профиля в 1С

Использование профиля в 1С

SQL Server Profiler с графической оболочкой используется в бухгалтерской программе 1С для создания трасс и анализа результирующей трассировки с сохранением событий в трассировочных файлах. На их базе выполняется анализ ситуации образовавшихся проблем.

Для создания треков в Profiler запускают программу, формируют маршрут и настраивают анализ индикаторов. Перед тем как настроить для 1С SQL Profiler, выполняют следующие шаги:

Альтернативные инструменты профилировщика

Несмотря на популярность SQL Profiler, это не единственный способ отслеживать сервер. Следующие альтернативы выполняют аналогичную функцию:

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

Таким образом, очевидно, что профилировщик позволяет разработчикам и администраторам баз данных (DBA) создавать и обрабатывать трассировки, а также воспроизводить и анализировать их результаты.

Источник: abc-import.ru

Профайлинг для ИБ: как программа «читает» человека (ч. 1)

bannerbanner

Службы информационной безопасности хотят предотвращать инциденты, а не просто фиксировать факт и разбираться с последствиями. Как с прогнозированием рисков справляется автоматизированный профайлинг – и что это такое?

Профайлинг для ИБ: как программа «читает» человека (ч. 1)

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

Что такое профайлинг

В поиске действенных способов вычислять инсайдеров «на подлете» в ИБ-сфере созрел запрос на технологию поведенческого анализа. Основное развитие в этом направлении получили технологии UEBA или UBA.

Они изучают действия пользователя и сигнализируют, если привычное поведение вдруг меняется: например, сотрудник, который обычно отправляет по 2-3 письма в день, вдруг делает массовую рассылку на 400 адресов. Но как любой другой сугубо статистический метод, UBA дает много ложноположительных сработок. Увидев «бум» в корпоративной почте, служба безопасности готовится взять сотрудника «на карандаш» – а он всего-то получил задание поздравить всех клиентов компании с грядущими праздниками.

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

Если вкратце, профайлинг – технология для составления психологических портретов. Методика появилась в 70-е годы как разработка израильской армии: военные использовали его, чтобы вычислить в группе людей потенциальных террористов.

По сей день в аэропортах Израиля, а также США и ряда других стран, которые позаимствовали подход, существует практика «странных вопросов» при досмотре пассажиров. Конечно, сотрудников аэропорта не интересует, правда ли вы сами собирали свой чемодан. Важнее другое: по реакции пассажира на вопрос, мимике, тону голоса и самому ответу специалисты складывают представление о нем как о человеке, склонном или не склонном к совершению преступления.

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

Метод взяли на вооружение и специалисты по корпоративной безопасности, и люди, от вопросов безопасности довольно далекие. Например, профайлеров немало среди HR-специалистов, которым тоже нужно знать каждого сотрудника «в лицо».

Проанализировать психотипы всех сотрудников даже небольшой компании – работа большая и ресурсозатратная. Обычно услуги профайлера стоят недешево: от 5 тыс. рублей за профилирование одного человека, так что сложно представить применение методики к коллективам в сотни и тысячи человек. При этом профилирование даст срез на конкретную дату диагностики, не динамику. Прибавим к этому то, что руководители не горят желанием отвлекать людей от работы на беседы с профайлером.

Это не значит, что профайлинг непригоден для работы в отделах ИБ, просто он недоступен как массовый метод. Но ограничения легко снимала бы автоматизация процесса, чем наша компания и занялась в 2017 году. По нашей гипотезе, «сырьем» для анализа могла стать информация из «перехвата» DLP-систем, где скапливается огромный массив данных по каждому сотруднику. И она оказалась верна.

Как автоматизировали

Модуль профайлинга – часть DLP-системы. Для выстраивания профиля он «забирает» тексты рабочих переписок сотрудников – богатый материал для анализа.

Речь – один из ключевых ресурсов, который профайлеры используют для «чтения» психотипа испытуемых. Мы говорим так, как думаем – следовательно, и думаем так, как говорим. В век, когда основным инструментом коммуникации стали мессенджеры, письменная речь стала такой же иллюстративной, как устная. На этом основывается психолингвистика, которая дает инструменты для подробного анализа текста.

Модуль вычленяет из текстов наиболее «говорящие» фрагменты – неформальные, которые демонстрируют индивидуальные особенности речи пользователя. Поэтому для анализа не подходит деловая переписка в корпоративной почте. Куда полезнее для программы сообщения, которыми сотрудники обмениваются в корпоративных мессенджерах.

Чтобы составить ясную картину по конкретному сотруднику, модулю требуется рассмотреть около 20 тысяч набранных им лемм (исходных форм слов). Обычно этот объем удается собрать за 2-3 месяца. Затем текст очищается от «шума»: слов с опечатками, цифр, иноязычных вставок, копипаст. Чистый текст проверяется по ряду параметров, среди которых:

  • длина и сложность предложений;
  • использование личных местоимений;
  • использование глаголов;
  • «словарь» пользователя (использование редких слов, терминов, сленга и т.п.);
  • расстановка знаков препинания;
  • использование вводных конструкций («короче говоря», «к сожалению», «надо признаться» и т.п.);
  • и т.д.

Каждый параметр указывает на ту или иную склонность человека. Например, частое употребление в речи глаголов говорит о человеке дела, активном и уверенном в себе. А вводные слова и сослагательное наклонение («хотелось бы»), наоборот, характеризуют говорящего как нерешительного, более склонного к размышлениям.

Конечно, это большое упрощение, в реальности программа прогоняет текст по более чем 70 критериям. Результаты программа автоматически проверяет на соответствие 8-ми психотипам (радикалам), которые выделяет классический профайлинг. Они описывают самые распространенные «наборы черт» разных людей. Например, эмотивам свойственны миролюбие и чуткость, а эпилептоиды любят четкие правила и контроль.

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

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

Работодатель получает полную картину по ценностям, наклонностям, общительности и амбициозности каждого сотрудника

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

Профили разных пользователей можно сравнивать и ранжировать в зависимости от того, как сильно выражены те или иные черты характера.

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

Сегодня точность прогнозов, которые выдает модуль, достигает 75-85%. Это высокий уровень достоверности, достаточный, чтобы выявлять группы риска, составлять команды из дополняющих друг друга специалистов, следить за уровнем лояльности.

Читайте также:
Что за программа наследство без границ

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

До конца года профайлинг выйдет на англоязычный рынок, идет работа над испанской версией. При этом на российском рынке модуль уже показал себя на практике. С момента релиза в 2018 году его протестировали около сотни компаний.

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

Источник: www.computerra.ru

Профилирование сайтов на PHP

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

Что такое профилировщик?

Профилировщик (или профайлер, от английского profiler) — это специальное программное обеспечение, которое дает возможность оценить:

  • где именно;
  • на какие операции;
  • в каких объемах

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

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

Для проектов, написанных на PHP, наибольшей популярностью пользуются профилировщики XHProf и Tideways — бесплатные решения с открытым исходным кодом, которые можно использовать на нашем хостинге: мы сделали простую установку профилировщика и интерфейса для работы с ним прямо из Панели управления, чтобы нашим пользователям не приходилось тратить время и силы на его подключение.

Как установить профилировщик на сайт?

Установить профилировщик на сайт можно из раздела «Сайты» Панели управления: напротив доменного имени, прилинкованного к нужному сайту, кликните по иконке «Управление профилировщиком».

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

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

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

Как использовать профилировщик?

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

После генерации отчетов они будут доступны в интерфейсе — ссылка на него доступна в окне управления профилировщиком.

Главное окно

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

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

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

Отчет о результатах

Каждый отчет профилировщика состоит из нескольких частей:

  • общая информация о результатах профилирования — статистика общего выполнения скрипта, информация о Cookie и параметрах GET- и POST-запросов;
  • подробная информация о результатах профилирования — статистика по каждой вызываемой скриптом функции;
  • граф вызовов функций — визуальное отображение связи функций, выполняемых скриптом.

Общая информация об отчете

Первая часть отчета содержит общую информацию о работе скрипта, для которого запускалось профилирование. Если профилирование для скрипта запускалось несколько раз — интерфейс отобразит это: соответствующие счетчики будут отображены в графе «Точный URL» (в случае, когда отчеты собирались при посещении одной и той же страницы сайта) и «Похожие URL» (когда есть результаты профилирования страниц, адрес которых похож на адрес из текущего отчета).

Интерфейс отображает следующие данные статистики:

  • Время выполнения скрипта (в микросекундах);
  • Процессорное время, потраченное на работу скрипта (в микросекундах);
  • Потребление памяти во время выполнения (в байтах);
  • Количество вызовов функций внутри скрипта.

Также предоставляются следующие данные (при их наличии):

  • информация о Cookie;
  • информация о GET- и POST-запросах.

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

Подробная информация об отчете (таблица)

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

Таблица отображает следующие данные статистики:

  • Количество вызовов функции за время работы скрипта;
  • Время в микросекундах, потраченное на выполнение функции (как с учетом выполнения других функций внутри, так и без);
  • Процессорное время в микросекундах, использованное на выполнение функции (как с учетом выполнения дочерних функций, так и без)
  • Среднее и пиковое потребление памяти в байтах (также с учетом и без учета дочерних функций).

По клику на имя функции откроется расширенная статистика ее профилирования.

В расширенной статистике доступна информация как о самой функции, так и о родительских (тех функциях, которые в ходе своей работы вызывали исследуемую нами) и дочерних (тех функциях, которые вызывала исследуемая нами функция). Статистика собирается по следующим данным:

  • количеству вызовов;
  • времени выполнения в микросекундах;
  • процессорному времени в микросекундах;
  • потреблению памяти в байтах (как среднему, так и пиковому).

Граф вызовов

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

Заключение

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

Источник: beget.com

Профилирование уже запущенных программ

Все мы пользуемся профайлерами. Традиционная схема работы с ними такова, что приходится изначально запускать программу «под профайлером» а затем, после окончания ее работы, анализировать сырой дамп с помощью дополнительных утилит.
А что делать если мы не имея root’а хотим запрофилировать уже работающую программу, которая долго работала «как надо», а сейчас что-то пошло не так. И хотим это сделать быстро. Знакомая ситуация?
Тогда рассмотрим наиболее популярные профайлеры и принципы их работы. А затем профайлер, который решает именно указанную задачу.

Популярные профайлеры

Если вы знаете принципиально другой — напишите о нем в комментах. А пока рассмотрим эти 4:

I. gprof

Старый-добрый UNIX профайлер который, по словам Кирка МакКузика, был написан Биллом Джоем для анализа производительности подсистем BSD. Собственно, профайлер «предоставляется» компилятором — он должен расставить контрольные точки в начале и в конце каждой функции. Разница между двумя этими точками и будет временем ее исполнения.
Стоит отметить, что gprof в данном случе точно «знает» и то, сколько раз была вызвана каждая функция. И хотя это может быть необходимым в некоторых ситуациях, это также имеет отрицательный эффект — overhead от замеров может быть сравним или даже больше чем само тело функции. Поэтому, например, для при компиляции C++-кода используют оптимизации приводящие к inline.
Так или иначе, но gprof не работает с уже запущеными программами.

II. Callgrind

Callgrind является частью Valgrind’а — отличного фреймворка для построения средств динамического анализа кода. Valgrind запускает программу «в песочнице», фактически используя виртуализации. Callgrind производит профилирование основываясь на брейкпоинтах на инструкциях типа call и ret. Он значительно замедляет анализируемый код, как правило, от 5 до 20 раз. Таким образом, для анализа на больших данных в runtime он, как правило, не годен.
Однако инструмент очень популярен, и простой формат графа вызовов поддерживается отличными средствами визуализации, например, kcachegrind.

Читайте также:
Муниципальные планы и программы что это

III. OProfile

OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead.

OProfile является общесистемным профайлером. Т.е. он не нацелен на работу с отдельными процессами, профилируя вместо этого всю систему. OProfile собирает метрики считывая не системный таймер, как gprof или callgrind, а счетчики CPU. Поэтому для запуска демона он требует привелегий.
Однако это незаменимое средство когда Вам необходимо разобраться с работой всей системы, всего сервера сразу. И особенно незаменимое при профилировании области ядра.

Новая версия OProfile 0.9.8

Для версий 0.9.7 и в более ранних профайлер состоял из драйвера ядра и демона для сбора данных. С версии 0.9.8 этот метод заменен на использование Linux Kernel Performance Events (требует ядро 2.6.31 или более свежее). Релиз 0.9.8 также включает в себя программу ‘operf’, позволяющую непривилегированным пользователям профилировать отдельные процессы.

IV. Google perftools

Этот профайлер является частью набора Google perftools. Я не нашел на хабре его обзора, поэтому очень кратко опишу.
Набор включает серию библиотек нацеленых на ускорение и анализ C/C++ — приложений. Центральной частью является аллокатор tcmalloc, который помимо ускорения распределения памяти несет средства для анализа классических проблем — memory leaks и heap profile.

Второй частью является libprofiler, который позволяет собирать статистику использования CPU. Важно остановиться на том, как он это делает. Несколько раз в секунду (по-умолчанию 100) программа прерывается на сигнал таймера. В обработчике этого сигнала раскручивается стек и запоминаются все указатели инструкций. По-окончанию сырые данные сбрасываются в файл, по которому уже можно строить статистику и граф вызовов.

Здесь некоторые детали того как это делается

1. По-умолчанию сигналом таймера выбирается таймер ITIMER_PROF, который тикает лишь при использовании программой CPU. Ведь, как-правило, нам не очень интересно где была программа ожидая ввод с клавиатуры или поступления данных по сокету. А если все же интересно, используйте env CPUPROFILE_REALTIME=1

2. Стек вызова раскручивается либо с помощью libunwind, либо вручную (что требует —fno-omit-framepointer, всегда работает на x86).
3. Имена функций впоследствии узнаются с помощью addr2line(1)
4. Как и прочие средства Google perftools, профайлер может быть слинкован явно, а может быть и предзагружен средствами LD_PRELOAD .

Интересен принцип действия — программа прерывается лишь N раз в секунду, где N достаточно мало. Это т.н. сэмплирующий профайлер. Его преимущество в том, что он не оказывает существенного влияния на анализируемую программу, сколько бы мелких функций там не вызывалось. Ввиду особенностей работы, он, однако, не позволяют ответить на вопрос «сколько раз вызывалась данная функция».
В случае с google profiler есть еще несколько неприятностей:

  • этот профайлер также не предназначен для работы с уже работающими программами
  • последние версии не работают с fork(2), порой затрудняя его использование в демонах

Crxprof

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

Он собирает стек вызовов и выводит наиболее «горячие» части в консоль по нажатию ENTER. Также он умеет сохранять граф вызова в упомянутом ранее формате callgrind. Работает быстро, и как любой другой сэмплирующий профайлер не зависит от сложности вызовов в профилируемой программе.

Некоторые детали работы

В основном, crxprof работает также как perftools, но использует внешнее профилирование через ptrace(2). Подобно perftools он использует libunwind для раскрутки стека, а вместо тяжелой работы по преобразованию в имена функций, вместо addr2line(1) используется libbfd.

Несколько раз в секунду программа останавливается (SIGSTOP) и с помощью libunwind «снимается» стек вызова. Загрузив при старте crxprof карту функций профилируемой программы и связанных с ней библиотек, мы можем быстро найти какой функции пренадлежит каждый отделый IP (instruction pointer).

Параллельно выстраивается граф вызова, полагая что есть некая центральная функция — точка входа. Обычно это __libc_start_main из библиотеки libc.

Исходный код доступен на github. Т.к. утилита создавалась для меня и моих коллег, я вполне допускаю что она может не соответствовать Вашему use-case’у. Так или иначе, спрашивайте.

Соберем crxprof и посмотрим на пример его использования.

Сборка

Что необходимо: Linux (2.6+), autoconf+automake, binutils-dev (включает libbfd), libunwind-dev (у меня он называется libunwind8-dev).
Для сборки выполняем:

autoreconf -fiv ./configure make sudo make install

Если libunwind установлен в нестандартное место, используйте:
./configure —with-libunwind=/path/to/libunwind

Профилирование

Для этого просто запустите
crxprof pid

И все! Теперь используйте ENTER для вывода профайла в консоль, и ^C для завершения. Crxprof также выведет профайл и по выходу программы.

crxprof: ptrace(PTRACE_ATTACH) failed: Operation not permitted

Если вы видите эту ошибку, значит ptrace на вашей системе «залимитирован». (Ubuntu ?)
Подробней можно прочитать здесь
Если кратко, то либо пускайте с sudo, либо (лучше) выполните в консоли:

$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

Как все unix-утилиты, crxprof выводит usage при вызове с ключом —help. Подробную информацию см. в man crxprof .

crxprof —help

Usage: crxprof [options] pid Options are: -t|—threshold N: visualize nodes that takes at least N% of time (default: 5.0) -d|—dump FILE: save callgrind dump to given FILE -f|—freq FREQ: set profile frequency to FREQ Hz (default: 100) -m|—max-depth N: show at most N levels while visualizing (default: no limit) -r|—realtime: use realtime profile instead of CPU -h|—help: show this help —full-stack: print full stack while visualizing —print-symbols: just print funcs and addrs (and quit)

Реальный пример

Для того чтобы привести реальный, но не сложный пример я использую этот код на C. Скомпилируем, запустим его и попросим crxprof сохранить граф вызова функций (4054 — pid профилируемой программы):

$ crxprof -d /tmp/test.calls 4054 Reading symbols (list of function) reading symbols from /home/dkrot/work/crxprof/test/a.out (exe) reading symbols from /lib/x86_64-linux-gnu/libc-2.15.so (dynlib) reading symbols from /lib/x86_64-linux-gnu/ld-2.15.so (dynlib) Attaching to process: 6704 Starting profile (interval 10ms) Press ENTER to show profile, ^C to quit 1013 snapshot interrputs got (0 dropped) main (100% | 0% self) _ heavy_fn (75% | 49% self) _ fn (25% | 25% self) _ fn (24% | 24% self) Profile saved to /tmp/test.calls (Callgrind format) ^C— Exit since ^C pressed

  • main() вызывает heavy_fn() (и это самый «тяжелый» путь)
  • heavy_fn() вызывает fn()
  • main() также вызывает fn() непосредственно
  • heavy_fn() занимает половину времени CPU
  • fn() занимает оставшееся время CPU
  • main() сама по себе не потребляет ничего

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

Для визуализации сложных графов вызова удобно использовать KCachegrind:

$ kcachegrind /tmp/test.calls

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

Источник: habr.com

Профилирование в программировании: какой профилировщик выбрать

Lorem ipsum dolor

Профайлер или профилировщик в программировании — это специализированный программный инструмент, который выполняет процесс профилирования. Профилирование — это процесс, при котором собираются характеристики работоспособности какой-то программы.

Характеристики работы программы нужны для того, чтобы оценить насколько эффективно работает исследуемая программа и выявить ее «слабые» участки.

Простыми словами, профилировщик — это программа, которая следит за другими программами, во время их исполнения.

Процесс профилирования связан не только с программированием, но и с другими сферами, где нужно «отслеживать» определенные показатели определенных программ. Например, профилирование активно используется в трейдерстве, когда специальные профилировщики отслеживают работу других программ, участвующих в построении графиков торговых серверов.

Сегодня нас интересует, что такое профилировщик в программировании. Описание работы таких программ в других сферах оставим для следующих статей.

Профилировщик в программировании — что это?

  • измерение времени, затраченного на ту или иную функцию;
  • измерение потраченных системных ресурсов на ту или иную функцию;
  • изменения программы в зависимости от воздействия на нее со стороны пользователей;
  • как запустилась и как прекратила работать программа;
  • были ли «зависания» в программе и из-за чего;
  • и др.

Программы-профилировщики

  1. «gprof». Многоплатформенный и многофункциональный профилировщик.
  2. «VТune». Программный продукт компании Intel на платной основе.
  3. «Single Event API». Программный продукт компании Intel на бесплатной основе.
  4. «CodeAnalyst». Универсальный профилировщик компании AMD.
  5. «AQtime». Профилировщик для операционной системы Windows.
  6. «Instruments». Профилировщик для операционной системы MacOS.
  7. «Perf». Профилировщик для операционной системы Linux.
  8. «dotMemory». Профилировщик памяти разных систем.

Заключение

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

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник: codernet.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru