ru_manual_03_02
< Пред. раздел Содержание След. раздел >
В зависимости от решаемой задачи, вы можете запускать 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 Основной экран
На основном экране приложения можно выделить следующие области:
- строка меню — предоставляет доступ ко всем возможностям приложения
- панель инструментов — содержит элементы управления для выполнения основных операций над всеми профайлерами
- рабочая область — область экрана, предназначенная для размещения окон профайлеров или окон инструментов
- панель статуса — отображает статус текущего профайлера или инструмента
Приведенная иллюстрация, также, содержит пример окна профайлера (область № 5), более подробное описание которого вы найдете в соответствующем разделе Профайлер.
Меню
Текущая версия LightProfiler имеет следующую структуру меню:
- Профайлер
- Выбрать файл(ы) — показать диалог выбора трейс-файла(ов) для активного или новых профайлеров1.
- Экспорт — показать диалог сохранения проанализированного трейс-файла в xtrc-файл.
- Активный
- Отмена — отмена текущей операции для активного профайлера.
- Сбросить — сброс состояния активного профайлера (удаление результатов анализа, сброс статуса на «создан»).
- Очистить — очистка текущего профайлера (удаление результатов анализа, сброс статуса на «создан», удаление информации о выбранном трейс-файле).
- Анализ — выполнение операции «Анализ» для активного профайлера (подготовка и заполнение внутренних структур данных, сбор статистики по трейс-файлу и т.д.)2.
- А&П — выполнение операций «Анализ» и «Профиль» для активного профайлера.
- Все
- Отмена — отмена текущих операций для всех профайлеров.
- Сбросить — сброс статуса для всех профайлеров.
- Очистить — очистка всех профайлеров.
- Анализ — выполнение операции «Анализ» для всех профайлеров.
- А&П — выполнение операций «Анализ» и «Профиль» для всех профайлеров.
- Выход — выход из приложения.
- Отчеты
- Опрос — вывод краткой статистики по трейс-файлу для активного профайлера. Подробное описание отчета вы можете найти в соответствующем разделе Опрос.
- Активный
- Профиль — формирование профиля ресурсов сессии для активного профайлера. Подробное описание отчета вы можете найти в соответствующем разделе Профиль ресурсов.
- Все
- Профиль — формирование профиля ресурсов сессии для всех профайлеров. Подробное описание отчета вы можете найти в соответствующем разделе Профиль ресурсов.
- Оптимизация — открытие диалога для формирования отчетов оптимизации. Подробное описание процесса формирования отчетов и их структуру, вы можете найти в соответствующем разделе Оптимизация.
- <список последних отчетов> - при формировании отчетов «Профиль» или «Оптимизация», приложение сохраняет имя сформированного файла и отображает его в данном списке для быстрого запуска.
- Инструменты3
- LpDBMonitor — запуск соответствующего инструмента.
- LpCombiner — запуск соответствующего инструмента.
- LpSplitter — запуск соответствующего инструмента.
- Окружение
- Опции — открытие диалога настройки опции приложения4. Подробное описание имеющихся опций и их использования вы можете найти в соответствующем разделе Опции.
- Команды - открытие диалога настройки команд приложения. Подробное описание по настройке команд вы можете найти в соответствующем разделе Настройка.
- <список настроенных команд> - в этом разделе выводятся заголовки всех настроенных команд.
- Окно
- Во весь экран — развернуть активное окно профайлера или инструмента на всю рабочую область приложения.
- Восстановить — восстановить размер по умолчанию активного окна профайлера или инструмента.
- Каскадом — восстановить размеры по умолчанию для открытых окон профайлеров или инструментов и разместить их каскадом в рабочей области.
- <список окон профайлеров и инструментов>
- ?
Рис. 7 Официальный сайт проекта
- Есть идея! - открыть в браузере страницу для предложения идей.
- Поддержать — открыть в браузере страницу поддержки приложения.
Рис. 8 Страница поддержки проекта
- Гостевая книга — открыть в браузере страницу для создания записей в гостевой книге.
- Отправить комментарий — открыть в браузере страницу для отправки комментария
Рис. 9 Форма комментария
- Сообщить об ошибке — открыть в браузере страницу для отправки сообщения об ошибке.
Рис. 10 Форма сообщения об ошибке
- Лицензия — вывод диалога с краткой информации по лицензии.
- Благодарности — вывод диалога «Благодарности».
- Проверка обновлений — проверка текущей версии приложения, доступной для скачивания на официальной сайте.
- О программе — вывод диалога «О программе».
Примечание:
- В зависимости от статуса профайлера, некоторые операции над ним, могут быть недоступны.
Панель инструментов
Панель инструментов приложения содержит следующие элементы управления:
- элементы управления окнами профайлеров («Новое», «Закрыть», «Каскадом»)
- элементы управления для запуска основных операций для всех профайлеров («Отменить все», «Сбросить все», «Проанализировать все» и т.д.)
Профайлер
Профайлер — встроенный инструмент приложения, предназначенный для анализа трейс-файлов и формирования отчетов. При запуске приложения с графическим интерфейсом вы можете использовать произвольное количество профайлеров.
Ниже приведен пример окна профайлера:
Рис. 11 Окно профайлера
Для окна профайлера можно выделить следующие зоны:
- панель инструментов — содержит следующие элементы управления:
- вызов операций над активным профайлером ( «Отмена», «Сброс», «Очистка», «Анализ», «Профиль» и т.д.)
- открытие файлов журнала и сформированного профиля («Открыть профиль», «Открыть журнал»)
- вызов диалога для изменения опций профайлера («Опции»)7. При открытии нового окна профайлера, его опции, заполняются значениями установленными для всего приложения. До начала какой-либо операции, вы можете изменить их.8
- отображение разделов сформированного профиля («Показать события», «Показать предложения», «Показать курсоры», «Показать снимки состояний»). Ниже приведен пример окон профайлера и разделов профиля:
Рис. 12 Окна профайлера и разделов профиля
- рабочая область — состоит из трех вкладок: «Общие», «Журнал», «Отладка». Подробное описание каждой вкладки приведено ниже.
- панель статуса — отображает индикатор состояния текущего процесса.
Общие
Данная закладка содержит элементы управления для выбора трейс-файла и заведения комментария9.
Рис. 13 Закладка «Общие»
Журнал
Данная закладка предназначена для отображения журнала работы активного профайлера. Содержимое вкладки может быть удалено (кнопка «Очистить») или выгружено в файл (кнопка «Выгрузить»).
Рис. 14 Закладка «Журнал»
Также, журнал имеет встроенное средство поиска, которое вы можете вызвать нажатием клавиш Ctrl+F.
Рис.15 Диалог поиска
Результат(ы) поиска выделяются в тексте журнала (данное выделение сбрасывается при повторном поиске или нажатии кнопки «Сбросить все».
Примечание:
- После выбора трейс-файла содержимое журнала также дублируется в файл, по умолчанию имеющий путь <Каталог приложения>\logs\<имя трейс-файла>.log. Данный файл вы можете открыть, нажав кнопку «Показать журнал» на панели инструментов профайлера.
Отладка
Примечание:
- Использование режима отладки может значительно понизить производительность приложения !
Использование режима отладки позволяет собирать для предложений SQL дополнительную информацию: строки исходного трейс-файла, подробности по выполняемым расчетам, а также формировать sdmp-файлы (см.Глоссарий)
Рис.16 Закладка «Отладка»
На данной закладке можно выделить следующие группы элементов:
- Журнал отладки с встроенным средством поиска
- Переключатель режима отладки
- Список идентификаторов курсоров SQL, подлежащих отладке (идентификатором курсора SQL служит значение поля hv раздела PARSING IN CURSOR)10.
- Управление списком отладки: поле ввода идентификатора, кнопки добавления/удаления записи.
Текущая версия приложения позволяет осуществлять отладку в следующих режимах:
- Sdmp – формирование sdmp-файлов для выбранных предложений SQL
- All — вывод всей отладочной информации для выбранных предложений SQL
Примечание:
- По умолчанию, sdmp-файлы формируются в <Каталог приложения>\dmp\<имя трейс-файла>_<идентификатор>.csv.
Инструменты
В данном разделе приведено описание базовых инструментов а также необходимая информация об их разработке.
LpCombiner
LpCombiner – инструмент, предназначенный для извлечения данных сессии из одного или нескольких трейс-файлов.
Рис. 17 Инструмент «LpCombiner»
В зависимости от конфигурации сервера Oracle и используемой ОС, в один трейс-файл могут быть помещены данные нескольких сессий, или данные одной сессии могут быть размещены в нескольких трейс-файлах. Для решения подобных проблем и предназначен данный инструмент. Он разбирает содержимое трейс-файлов в поисках идентификаторов сессий (строки вида *** SESSION ID:...) и выстраивает их в правильном порядке (в соответствии с указанной датой), формируя новый «псевдо» трейс-файл.
В верхней части закладки «Управление» размещена панель инструментов, которая позволяет выполнить следующие операции:
- выбрать файл(ы) — открыть диалог для выбора обрабатываемых трейс-файлов
- проанализировать файл(ы) — выполнить поиск идентификаторов сессий
- собрать файл(ы) — создать новый «псевдо» трейс-файл
- очистить все — очистить данные работы
- переключатель режима
- параллельное выполнение — выбранные трейс-файлы содержат данные работы нескольких параллельных сессий, т.е. «псевдо» трейс-файл будет содержать данные всех этих сессий в порядке выполнения.
- точный выбор — выбранные трейс-файлы содержат конкретную сессию, т. е. «псевдо» трейс-файл будет содержать данные, относящиеся только к ней.
В нижней части выводится список трейс-файлов, выбранных для анализа.
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 или более поздней.
Рис. 19 Инструмент «LpDBMonitor»
Окно инструмента можно разделить на следующие области:
- панель инструментов — вызов диалога «Менеджер подключений» или «Новое соединение». При использовании диалога «Менеджер подключений» параметры подключений будут сохранены для последующего использования12.
- Панель закладок текущих соединений — отображает открытые соединения с экземплярами Oracle.
- Панель инструментов текущего соединения — позволяет выполнять операции над сессиями или изменять параметры отображения. Для текущей версии инструмента панель инструментов содержит следующие поля и элементы управления:
- кнопка «Убить сессию» - выполнить операцию ALTER SYSTEM KILL SESSION …, для выбранной сессии
- поля «Строк» - отображает количество сессий для активного соединения (активных/всех)
- флаг «Не-систем. Поль-ти» - позволяет «спрятать» сессии, принадлежащие системным пользователям
- поле-список «Фильтр» и поле ввода — позволяют задать условия на отображение, только тех сессий, значение заданного поля которых, начинается со значения, указанного в поле ввода
- кнопка «Обновить» - обновить информацию о сессиях (с клавиатуры - F5)
- флаг «Авто-обнов.» и поле-список — позволяют включить автообновление информации о сессиях
- поле-список «Уровень» - выбор уровня трассировки
- кнопка «Включить трассировку» - позволяет выполнить для выбранной сессии установку события 10046 на заданном уровне (с клавиатуры - “+”)
- кнопка «Выключить трассировку» - отключает трассировку для сессии (с клавиатуры - “-”)
- кнопка «Закрыть соединение» - закрыть соединение и активную вкладку
- Панель сессий — содержит таблицу для отображения сессий БД для активного соединения. В зависимости от некоторых условий, строка таблицы может быть выделена цветом:
- Желтый — собственная сессия инструмента
- Зеленый — сессия, появившаяся в запросе, впервые с последнего обращения к БД
- Голубой — для сессии была запущена трассировка
- Панель детализации — содержит вкладки для отображения дополнительной информации по выбранной сессии:
- Предложение SQL — показывает текст текущего (последнего) запроса
- Открытые курсоры – открытые курсоры сессии
- События — статистика событий ожидания для сессии (имя, количество, продолжительность)
- Статистика — общая статистика для сессии
- Блокирует, Блокирован — краткая информация о сессиях, которые, или от которых установлена блокировка, препятствующая работе13
- План SQL — текущий план выполнения из v$sql_plan
Разработка
Инструмент — приложение на языке Python, имеющее интерфейс, использующий библиотеку tkinter, и оформленное согласно определенным требованиям.
Файлы, используемые инструментом, размещаются в отдельном каталоге (далее — каталог инструмента), имеющем определенную структуру. Ниже приведена структура инструмента LpSplitter:
- lpsplitter - каталог инструмента14
- locale – каталог переводов
- ru – каталог языка перевода
- LC_MESSAGES — каталог типа сообщений
- lpsplitter.mo - файл переводов
- LC_MESSAGES — каталог типа сообщений
- ru – каталог языка перевода
- lpsplitter.py - основной модуль инструмента
- tool.dsc – файл описания инструмента (содержит необходимую информацию для включения инструмента в LightProfiler)
- locale – каталог переводов
Рассмотрим процесс разработки собственного инструмента с названием usertool на ОС Windows:
- Загружаем файл usertool.zip c официального сайта приложения http://www.lightprofiler.org страница Загрузка
- Распаковываем содержимое файла 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 – основной модуль инструмента
- Редактируем файл usertool.py, соблюдая следующие требования:
- Если будет произведена локализация инструмента, то код основного модуля должен содержать фрагмент:
##########################
### global translator
##########################
go_translator = cl_ToolTranslator()
_ = go_translator.get
_u = go_translator.get
, где cl_ToolTranslator — объект импортированный из модуля lptoolapi
- Должны быть определены следующие глобальные переменные:
- __toolid__ - обозначение инструмента (должно совпадать с именем каталога инструмента)
- __toolname__ - имя инструмента для заголовков
- __toolversion__ - версия инструмента
- __toolhelp__ - список строк, представляющих собой краткое описание или помощь по инструменту
- __toolmw__ - минимальная ширина инструмента в рабочей области приложения
- __toolmh__ - минимальная высота инструмента в рабочей области приложения
- Сам инструмент должен представлять собой класс с именем cl_Tool, наследуемый от cl_ToolAPI (импортируется из lptoolapi)
- Ниже приведен рекомендуемый вид конструктора инструмента:
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)
- Для дополнительных операций при инициализации рекомендуется переопределять следующие методы:
- user_pre_init_mdichild(self, **kw) — вызывается до инициализации интерфейса инструмента, где kw – параметры инициализации.
- user_post_init_mdichild(self, **kw) — вызывается после инициализации интерфейса инструмента, где kw – параметры инициализации.
- Для создания виджетов инструмента рекомендуется использовать следующий метод:
- user_fill_content(self, pw_controltab) — вызывается при формировании интерфейса, где pw_controltab — фрейм вкладки «Управление» инструмента.
- Редактируем файл _write_dsc.py – при необходимости, указываем в нем иконку инструмента15.
- Запускаем файл 00.create_dsc.bat, для создания dsc-файла.
На этом процесс создания инструмента завершен - новый инструмент будет доступен для использования в LightProfiler:
Рис. 20 Добавление нового инструмента
Команды
«Команды» - механизм, позволяющий выполнять команды ОС или запускать другие приложения из LightProfiler, при необходимости, используя атрибуты активного профайлера.
Настройка
Настройка команд производится в диалоге «Команды», вызвать который вы можете, через меню приложения (Окружение/Команды), или через панель инструментов (кнопка «Команды»).
Рис. 21 Диалог «Команды»
Диалог состоит из следующих областей:
- Область списка команд — отображает список существующих команд.
- Панель инструментов для области списка команд — содержит элементы управления позицией команд в меню и панели инструментов приложения.
- Элементы управления для работы с командами — создание, редактирование, удаление команды.
Создание или редактирование команды происходит в «Редактор команд» — диалоге, предназначенном для ввода текста и параметров команды.
Рис. 22 Диалог «Редактор команд»
Параметры
При редактировании команды можно использовать специальные теги «Параметры» - фрагменты текста, которые будут заменены на конкретные значения при выполнении команды.
Текущая версия приложения позволяет использовать следующий набор параметров:
- <srcpath> - полный путь к трейс-файлу активного профайлера
- <srcfile> - имя и расширение трейс-файла активного профайлера
- <srcfolder> - каталог трейс-файла активного профайлера
- <srcname> - имя трейс-файла активного профайлера
- <output> - каталог для формирования отчетов, заданный настройками приложения
- <profile> - имя отчета «Профиль ресурсов» активного профайлера
- <prfpath> - полный путь к отчету «Профиль ресурсов» активного профайлера
- <log> - имя файла-журнала активного профайлера
- <logpath> - полный путь к файлу-журналу активного профайлера
- <username> - имя текущего пользователя ОС
- <ossep> - системный разделитель
- <sysdate> - текущая дата в формате YYYYMMDD
- <systime> - текущее время в формате HHMISS
- <resources> - путь к каталогу resources приложения
Выполнение
Выполнение команды производится следующим образом:
- Через меню приложения (необходимо выбрать команду из списка в меню «Окружение»)
- Через панель инструментов (необходимо выбрать команду из списка на панели инструментов приложения и нажать кнопку «Выполнить команду»)
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