Запуск приложения






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

Чтобы помочь вам определиться, рассмотрим следующие факты:

  • Интерфейс командной строки:

    • потребляет меньший объем памяти

    • потребляет меньше ресурсов ЦПУ

    • отсутствует возможность обработки нескольких файлов

    • отсутствует возможность использования пользовательских команд

    • отсутствует возможность генерации отчетов оптимизации

    • отсутствует возможность использования инструментов

  • Графический интерфейс:

    • реализована возможность обработки нескольких файлов

    • полный доступ к функциям приложения

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

Интерфейс командной строки

Для запуска приложения с интерфейсом командной строки, необходимо выполнить основной файл: (lightprofiler.py или lightprofiler.exe), используя параметры. Данные параметры можно разделить на следующие группы:

  • обязательные

  • необязательные

  • специальные

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

Следующие параметры являются обязательными для запуска приложения в командной строке:

  • --quiet — параметр, указывающий на запуск приложения без графического интерфейса

  • --filename – параметр, содержащий имя и путь обрабатываемого файла

К специальным параметрам относятся:

  • --examine – выполнить опрос файла

  • --help — вывести раздел «Помощь»

  • --credits — вывести раздел «Благодарности»

  • --about — вывести раздел «О программе»

Пример запуска приложения в командной строке:

Запуск приложения без графического интерфейса
Рис. 5 Запуск приложения без графического интерфейса

Графический интерфейс

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

  • Открытая версия (архив)

    • перейдите в каталог, содержащий распакованное приложение

    • запустите приложение, выполнив команду:

      python lightprofiler.py

  • Открытая версия (deb-пакет)

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

    • или перейдите в каталог приложения (по умолчанию - /usr/local/share/applications/lightprofiler), и выполните команду:

      python lightprofiler.py

  • Скомпилированная версия (ОС Windows)

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

    • или запустите «Пуск» - «Все программы» - «LightProfiler 0.8.00» - «LightProfiler»

    • или перейдите в каталог приложения и запустите файл lightprofiler.exe

Внешний вид

При запуске приложения с графическим интерфейсом, вы автоматически перейдете на основной экран:

Основной экран
Рис. 6 Основной экран

На основном экране приложения можно выделить следующие области:

  1. строка меню — предоставляет доступ ко всем возможностям приложения

  2. панель инструментов — содержит элементы управления для выполнения основных операций над всеми профайлерами

  3. рабочая область — область экрана, предназначенная для размещения окон профайлеров или окон инструментов

  4. панель статуса — отображает статус текущего профайлера или инструмента

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

Меню

Текущая версия LightProfiler имеет следующую структуру меню:

  • Профайлер

    • Выбрать файл(ы) — показать диалог выбора трейс-файла(ов) для активного или новых профайлеров1.

    • Экспорт — показать диалог сохранения проанализированного трейс-файла в xtrc-файл.

    • Активный

      • Отмена — отмена текущей операции для активного профайлера.

      • Сбросить — сброс состояния активного профайлера (удаление результатов анализа, сброс статуса на «создан»).

      • Очистить — очистка текущего профайлера (удаление результатов анализа, сброс статуса на «создан», удаление информации о выбранном трейс-файле).

      • Анализ — выполнение операции «Анализ» для активного профайлера (подготовка и заполнение внутренних структур данных, сбор статистики по трейс-файлу и т.д.)2.

      • А&П — выполнение операций «Анализ» и «Профиль» для активного профайлера.

    • Все

      • Отмена — отмена текущих операций для всех профайлеров.

      • Сбросить — сброс статуса для всех профайлеров.

      • Очистить — очистка всех профайлеров.

      • Анализ — выполнение операции «Анализ» для всех профайлеров.

      • А&П — выполнение операций «Анализ» и «Профиль» для всех профайлеров.

    • Выход — выход из приложения.

  • Отчеты

    • Опрос — вывод краткой статистики по трейс-файлу для активного профайлера. Подробное описание отчета вы можете найти в соответствующем разделе Опрос.

    • Активный

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

    • Все

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

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

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

  • Инструменты3

    • LpDBMonitor — запуск соответствующего инструмента.

    • LpCombiner — запуск соответствующего инструмента.

    • LpSplitter — запуск соответствующего инструмента.

  • Окружение

    • Опции — открытие диалога настройки опции приложения4. Подробное описание имеющихся опций и их использования вы можете найти в соответствующем разделе Опции.

    • Команды - открытие диалога настройки команд приложения. Подробное описание по настройке команд вы можете найти в соответствующем разделе Настройка.

    • <список настроенных команд> - в этом разделе выводятся заголовки всех настроенных команд.

  • Окно

    • Во весь экран — развернуть активное окно профайлера или инструмента на всю рабочую область приложения.

    • Восстановить — восстановить размер по умолчанию активного окна профайлера или инструмента.

    • Каскадом — восстановить размеры по умолчанию для открытых окон профайлеров или инструментов и разместить их каскадом в рабочей области.

    • <список окон профайлеров и инструментов>

  • ?

    • Помощь — вызов диалога с разделом «Помощь», содержащего список опций приложения.

    • Руководство пользователя — открыть файл «Руководство пользователя»5 на текущем языке приложения6.

    • Сайт – открыть в браузере официальный сайт приложения.

Официальный сайт проекта
Рис. 7 Официальный сайт проекта
  • Есть идея! - открыть в браузере страницу для предложения идей.

  • Поддержать — открыть в браузере страницу поддержки приложения.

Страница поддержки проекта
Рис. 8 Страница поддержки проекта
  • Гостевая книга — открыть в браузере страницу для создания записей в гостевой книге.

  • Отправить комментарий — открыть в браузере страницу для отправки комментария

Форма комментария
Рис. 9 Форма комментария
  • Сообщить об ошибке — открыть в браузере страницу для отправки сообщения об ошибке.

Форма сообщения об ошибке
Рис. 10 Форма сообщения об ошибке
  • Лицензия — вывод диалога с краткой информации по лицензии.

  • Благодарности — вывод диалога «Благодарности».

  • Проверка обновлений — проверка текущей версии приложения, доступной для скачивания на официальной сайте.

  • О программе — вывод диалога «О программе».

Примечание:

    В зависимости от статуса профайлера, некоторые операции над ним, могут быть недоступны.

Панель инструментов

Панель инструментов приложения содержит следующие элементы управления:

  • элементы управления окнами профайлеров («Новое», «Закрыть», «Каскадом»)

  • элементы управления для запуска основных операций для всех профайлеров («Отменить все», «Сбросить все», «Проанализировать все» и т.д.)

Профайлер

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

Ниже приведен пример окна профайлера:

Окно профайлера
Рис. 11 Окно профайлера

Для окна профайлера можно выделить следующие зоны:

  1. панель инструментов — содержит следующие элементы управления:

  • вызов операций над активным профайлером ( «Отмена», «Сброс», «Очистка», «Анализ», «Профиль» и т.д.)

  • открытие файлов журнала и сформированного профиля («Открыть профиль», «Открыть журнал»)

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

  • отображение разделов сформированного профиля («Показать события», «Показать предложения», «Показать курсоры», «Показать снимки состояний»). Ниже приведен пример окон профайлера и разделов профиля:

Окна профайлера и разделов профиля
Рис. 12 Окна профайлера и разделов профиля
  1. рабочая область — состоит из трех вкладок: «Общие», «Журнал», «Отладка». Подробное описание каждой вкладки приведено ниже.

  2. панель статуса — отображает индикатор состояния текущего процесса.

Общие

Данная закладка содержит элементы управления для выбора трейс-файла и заведения комментария9.

Закладка «Общие»
Рис. 13 Закладка «Общие»
Журнал

Данная закладка предназначена для отображения журнала работы активного профайлера. Содержимое вкладки может быть удалено (кнопка «Очистить») или выгружено в файл (кнопка «Выгрузить»).

Закладка «Журнал»
Рис. 14 Закладка «Журнал»

Также, журнал имеет встроенное средство поиска, которое вы можете вызвать нажатием клавиш Ctrl+F.

Диалог поиска
Рис.15 Диалог поиска

Результат(ы) поиска выделяются в тексте журнала (данное выделение сбрасывается при повторном поиске или нажатии кнопки «Сбросить все».

Примечание:

    После выбора трейс-файла содержимое журнала также дублируется в файл, по умолчанию имеющий путь <Каталог приложения>\logs\<имя трейс-файла>.log. Данный файл вы можете открыть, нажав кнопку «Показать журнал» на панели инструментов профайлера.

Отладка

Примечание:

    Использование режима отладки может значительно понизить производительность приложения !

Использование режима отладки позволяет собирать для предложений SQL дополнительную информацию: строки исходного трейс-файла, подробности по выполняемым расчетам, а также формировать sdmp-файлы (см.Глоссарий)

Закладка «Отладка»
Рис.16 Закладка «Отладка»

На данной закладке можно выделить следующие группы элементов:

  1. Журнал отладки с встроенным средством поиска

  2. Переключатель режима отладки

  3. Список идентификаторов курсоров SQL, подлежащих отладке (идентификатором курсора SQL служит значение поля hv раздела PARSING IN CURSOR)10.

  4. Управление списком отладки: поле ввода идентификатора, кнопки добавления/удаления записи.

Текущая версия приложения позволяет осуществлять отладку в следующих режимах:

  • Sdmp – формирование sdmp-файлов для выбранных предложений SQL

  • All — вывод всей отладочной информации для выбранных предложений SQL

Примечание:

    По умолчанию, sdmp-файлы формируются в <Каталог приложения>\dmp\<имя трейс-файла>_<идентификатор>.csv.

Инструменты

В данном разделе приведено описание базовых инструментов а также необходимая информация об их разработке.

LpCombiner

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

Инструмент «LpCombiner»
Рис. 17 Инструмент «LpCombiner»

В зависимости от конфигурации сервера Oracle и используемой ОС, в один трейс-файл могут быть помещены данные нескольких сессий, или данные одной сессии могут быть размещены в нескольких трейс-файлах. Для решения подобных проблем и предназначен данный инструмент. Он разбирает содержимое трейс-файлов в поисках идентификаторов сессий (строки вида *** SESSION ID:...) и выстраивает их в правильном порядке (в соответствии с указанной датой), формируя новый «псевдо» трейс-файл.

В верхней части закладки «Управление» размещена панель инструментов, которая позволяет выполнить следующие операции:

  • выбрать файл(ы) — открыть диалог для выбора обрабатываемых трейс-файлов

  • проанализировать файл(ы) — выполнить поиск идентификаторов сессий

  • собрать файл(ы) — создать новый «псевдо» трейс-файл

  • очистить все — очистить данные работы

  • переключатель режима

    • параллельное выполнение — выбранные трейс-файлы содержат данные работы нескольких параллельных сессий, т.е. «псевдо» трейс-файл будет содержать данные всех этих сессий в порядке выполнения.

    • точный выбор — выбранные трейс-файлы содержат конкретную сессию, т. е. «псевдо» трейс-файл будет содержать данные, относящиеся только к ней.

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

LpSplitter

LpSplitter - инструмент, разработанный для разделения трассировочного файла на несколько частей.

Инструмент «LpSplitter»
Рис. 18 Инструмент «LpSplitter»

Для выполнения разбиения трейс-файла вам необходимо:

  • выбрать трейс-файл

  • указать размер фрагментов в байтах11 - используя для этого поле ввода или комбинации клавиш: Ctrl-<цифра> - умножить текущее значение поля на <цифра>, Alt-<цифра> - задать размер <цифра> Мб

  • выполнить операцию, нажав кнопку «Разделить файл»

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

LpDBMonitor

LpDBMonitor - небольшой монитор для базы данных Oracle. Показывает сессии БД и связанную информацию. Также позволяет вкл./выкл. трассировку или отсоединять сессию.

Примечание:

    Текущая версия инструмента, была реализована с использованием библиотеки cx_Oracle 5.1 (http://cx-oracle.sourceforge.net) и клиента для БД Oracle – InstantClient 11.2.0.1 (http://www.oracle.com). В данной конфигурации, инструмент может применяться для подключения к БД версии 9i или более поздней.

Инструмент «LpDBMonitor»
Рис. 19 Инструмент «LpDBMonitor»

Окно инструмента можно разделить на следующие области:

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

  2. Панель закладок текущих соединений — отображает открытые соединения с экземплярами Oracle.

  3. Панель инструментов текущего соединения — позволяет выполнять операции над сессиями или изменять параметры отображения. Для текущей версии инструмента панель инструментов содержит следующие поля и элементы управления:

  • кнопка «Убить сессию» - выполнить операцию ALTER SYSTEM KILL SESSION …, для выбранной сессии

  • поля «Строк» - отображает количество сессий для активного соединения (активных/всех)

  • флаг «Не-систем. Поль-ти» - позволяет «спрятать» сессии, принадлежащие системным пользователям

  • поле-список «Фильтр» и поле ввода — позволяют задать условия на отображение, только тех сессий, значение заданного поля которых, начинается со значения, указанного в поле ввода

  • кнопка «Обновить» - обновить информацию о сессиях (с клавиатуры - F5)

  • флаг «Авто-обнов.» и поле-список — позволяют включить автообновление информации о сессиях

  • поле-список «Уровень» - выбор уровня трассировки

  • кнопка «Включить трассировку» - позволяет выполнить для выбранной сессии установку события 10046 на заданном уровне (с клавиатуры - “+”)

  • кнопка «Выключить трассировку» - отключает трассировку для сессии (с клавиатуры - “-”)

  • кнопка «Закрыть соединение» - закрыть соединение и активную вкладку

  1. Панель сессий — содержит таблицу для отображения сессий БД для активного соединения. В зависимости от некоторых условий, строка таблицы может быть выделена цветом:

  • Желтый — собственная сессия инструмента

  • Зеленый — сессия, появившаяся в запросе, впервые с последнего обращения к БД

  • Голубой — для сессии была запущена трассировка

  1. Панель детализации — содержит вкладки для отображения дополнительной информации по выбранной сессии:

  • Предложение SQL — показывает текст текущего (последнего) запроса

  • Открытые курсоры – открытые курсоры сессии

  • События — статистика событий ожидания для сессии (имя, количество, продолжительность)

  • Статистика — общая статистика для сессии

  • Блокирует, Блокирован — краткая информация о сессиях, которые, или от которых установлена блокировка, препятствующая работе13

  • План SQL — текущий план выполнения из v$sql_plan

Разработка

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

Файлы, используемые инструментом, размещаются в отдельном каталоге (далее — каталог инструмента), имеющем определенную структуру. Ниже приведена структура инструмента LpSplitter:

  • lpsplitter - каталог инструмента14

    • locale – каталог переводов

      • ru – каталог языка перевода

        • LC_MESSAGES — каталог типа сообщений

          • lpsplitter.mo - файл переводов

    • lpsplitter.py - основной модуль инструмента

    • tool.dsc – файл описания инструмента (содержит необходимую информацию для включения инструмента в LightProfiler)

Рассмотрим процесс разработки собственного инструмента с названием usertool на ОС Windows:

  1. Загружаем файл usertool.zip c официального сайта приложения http://www.lightprofiler.org страница Загрузка

  2. Распаковываем содержимое файла usertool.zip в каталог <каталог_приложения>/resources/usertool. Содержимое каталога должно быть:

  • _write_dsc.py – скрипт для генерации dsc-файла

  • 00.create_dsc.bat – пакетный файл для запуска генерации dsc-файла

  • 01.translate_tool.bat – пакетный файл для создания локализации инструмента с использованием ранее установленного приложения — PoEdit (последние версии и инструкции по работе с приложением вы можете найти на официальном сайте проекта — http://www.poedit.net)

  • msgfmt.py, pygettext.py – скрипты для создания локализации инструмента, также могут использоваться установленные в <папка языка Python>/Tools/i18n.

  • usertool.py – основной модуль инструмента

  1. Редактируем файл usertool.py, соблюдая следующие требования:

    1. Если будет произведена локализация инструмента, то код основного модуля должен содержать фрагмент:

##########################

### global translator

##########################

go_translator = cl_ToolTranslator()

_ = go_translator.get

_u = go_translator.get

, где cl_ToolTranslator — объект импортированный из модуля lptoolapi

    1. Должны быть определены следующие глобальные переменные:

      1. __toolid__ - обозначение инструмента (должно совпадать с именем каталога инструмента)

      2. __toolname__ - имя инструмента для заголовков

      3. __toolversion__ - версия инструмента

      4. __toolhelp__ - список строк, представляющих собой краткое описание или помощь по инструменту

      5. __toolmw__ - минимальная ширина инструмента в рабочей области приложения

      6. __toolmh__ - минимальная высота инструмента в рабочей области приложения

    2. Сам инструмент должен представлять собой класс с именем cl_Tool, наследуемый от cl_ToolAPI (импортируется из lptoolapi)

    3. Ниже приведен рекомендуемый вид конструктора инструмента:

def __init__(self,**kw):

global go_translator

kw['helptext'] = __toolhelp__

kw['translator'] = go_translator

kw['toolpath'] = os.path.split(__file__)[0]

kw['toolid'] = __toolid__

kw['toolname'] = __toolname__

kw['toolversion'] = __toolversion__

if 'mw' not in kw:

kw['mw'] = __toolmw__

if 'mh' not in kw:

kw['mh'] = __toolmh__

cl_ToolAPI.__init__(self,**kw)

self.__guiitem = cl_ToolAPI.api_get_guiitem(self)

    1. Для дополнительных операций при инициализации рекомендуется переопределять следующие методы:

      1. user_pre_init_mdichild(self, **kw) — вызывается до инициализации интерфейса инструмента, где kw – параметры инициализации.

      2. user_post_init_mdichild(self, **kw) — вызывается после инициализации интерфейса инструмента, где kw – параметры инициализации.

    2. Для создания виджетов инструмента рекомендуется использовать следующий метод:

      1. user_fill_content(self, pw_controltab) — вызывается при формировании интерфейса, где pw_controltab — фрейм вкладки «Управление» инструмента.

    3. Редактируем файл _write_dsc.py – при необходимости, указываем в нем иконку инструмента15.

    4. Запускаем файл 00.create_dsc.bat, для создания dsc-файла.

На этом процесс создания инструмента завершен - новый инструмент будет доступен для использования в LightProfiler:

Добавление нового инструмента
Рис. 20 Добавление нового инструмента

Команды

«Команды» - механизм, позволяющий выполнять команды ОС или запускать другие приложения из LightProfiler, при необходимости, используя атрибуты активного профайлера.

Настройка

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

Диалог «Команды»
Рис. 21 Диалог «Команды»

Диалог состоит из следующих областей:

  1. Область списка команд — отображает список существующих команд.

  2. Панель инструментов для области списка команд — содержит элементы управления позицией команд в меню и панели инструментов приложения.

  3. Элементы управления для работы с командами — создание, редактирование, удаление команды.

Создание или редактирование команды происходит в «Редактор команд» — диалоге, предназначенном для ввода текста и параметров команды.

Диалог «Редактор команд»
Рис. 22 Диалог «Редактор команд»
Параметры

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

Текущая версия приложения позволяет использовать следующий набор параметров:

  • <srcpath> - полный путь к трейс-файлу активного профайлера

  • <srcfile> - имя и расширение трейс-файла активного профайлера

  • <srcfolder> - каталог трейс-файла активного профайлера

  • <srcname> - имя трейс-файла активного профайлера

  • <output> - каталог для формирования отчетов, заданный настройками приложения

  • <profile> - имя отчета «Профиль ресурсов» активного профайлера

  • <prfpath> - полный путь к отчету «Профиль ресурсов» активного профайлера

  • <log> - имя файла-журнала активного профайлера

  • <logpath> - полный путь к файлу-журналу активного профайлера

  • <username> - имя текущего пользователя ОС

  • <ossep> - системный разделитель

  • <sysdate> - текущая дата в формате YYYYMMDD

  • <systime> - текущее время в формате HHMISS

  • <resources> - путь к каталогу resources приложения

Выполнение

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

  1. Через меню приложения (необходимо выбрать команду из списка в меню «Окружение»)

  2. Через панель инструментов (необходимо выбрать команду из списка на панели инструментов приложения и нажать кнопку «Выполнить команду»)

1Если пользователь выберет несколько трейс-файлов, то приложение автоматически создаст недостающие профайлеры

2Операция «Анализ» является обязательной для формирования любых отчетов приложения

3Перечислены базовые инструменты текущей версии приложения

4Диалог для настройки опций приложения может быть вызван нажатием комбинации клавиш Ctrl-O

5Для открытия файла необходима программа для просмотра pdf

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

7Диалог для настройки опций профайлера может быть вызван нажатием комбинации клавиш Ctrl+P

8Профайлер имеет меньшее количество доступных для изменения опций

9Если поле «Комментарий» заполнено, то его содержимое будет включено как дополнительный раздел отчета «Профиль ресурсов»

10Для предложений RPC CALL приложение использует идентификатор построенный по правилам 0_RPC_<порядковый номер уникального имени подпрограммы в трейс-файле>

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

12В целях безопасности пароли не сохраняются

13В данных закладках реализована обработка комбинации клавиш Ctrl-L — переход к выбранной сессии в панели сессий

14В текущей версии каталоги инструментов располагаются в <каталог приложения>/resources/

15Иконка инструмента указывается в текстовом формате, подробное описание вы можете найти в http://code.activestate.com/recipes/52264