Статья опубликована в рамках: Научного журнала «Инновации в науке» № 6(94)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал
СИСТЕМА АНАЛИЗА ДЛИТЕЛЬНОСТИ КЛЮЧЕВЫХ ОПЕРАЦИЙ НА ОСНОВЕ ТРАССИРОВКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
SYSTEM OF ANALYSIS OF DURATION OF KEY OPERATIONS BASED ON OF THE SOFTWARE TRACING METHOD
Alexandr Kozhevnikov
master's Degree student of the Automation for Scientific Research, Lomonosov Moscow State University,
Russia, Moscow
АННОТАЦИЯ
В статье рассмотрены различные механизмы, предназначенные для анализа производительности в операционной системе Windows. На основе анализа длительности ключевых операций описана методика оценки состояния вычислительной системы. Описан подход к построению систем анализа производительности в режиме реального времени.
ABSTRACT
In this article we have overviewed performance analysis software for Windows and described a method of developing real time performance evaluation systems. The system state evaluation is based on the analysis of duration of key operations.
Ключевые слова: анализ производительности; трассировка событий.
Keywords: performance analysis; event tracing.
Пользователи вычислительных систем сталкиваются с проблемами снижения производительности приложений, которые не могут решить самостоятельно. Изучение данных проблем с помощью доступных программных продуктов либо очень дорого, либо технически не представляется возможным.
Начинающие пользователи для контроля производительности используют диспетчер задач, который предоставляет информацию о загруженности процессора и оперативной памяти каждым процессом. Данный подход не позволяет сформировать полную картину взаимодействия различных программ в операционной системе, и тем более сделать вывод о причинах снижения производительности системы в целом.
Продвинутые пользователи используют программы тестирования и оценки состояния операционной системы и оборудования. Такие приложения предназначены для обнаружения нарушений балансировки и указания наиболее узких мест в вычислительной системе. Подобные программные продукты не позволяют отслеживать состояние вычислительной системы в режиме реального времени, следовательно, расследование причин падения производительности в конкретный момент не представляется возможным.
В ядре операционной системы Windows реализовано получение данных от объектов производительности [1, с. 177-178]. Каждое устройство имеет счетчики производительности [1, с. 178-183], которые предоставляют системе информацию о состоянии объекта.
Системные администраторы используют программы записи и анализа счетчиков производительности. Например, встроенный в Windows инструмент «Монитор Производительности» [1, с. 177]. Для комплексного рассмотрения системы требуется анализ десятков счетчиков, кроме того, необходимо обладать специализированными знаниями в области производительности для интерпретации показаний. Операционная система Windows позволяет объединять счетчики, относящиеся к одному объекту производительности, в группы сборщиков данных (Data Collector Sets) [1, c. 185]. Показания счетчиков, предоставляемые сборщиками данных можно сохранять в виде структурированной информации, анализ которой позволяет оценить состояние вычислительной системы за любой период времени, но при этом невозможно установить с высокой точностью момент, в который произошло снижение производительности. В связи с этим, возникает потребность в разработке инструмента для контроля действий пользователя и времени отклика системы.
Основным и более универсальным инструментом администраторов и прикладных программистов является трассировка событий (Windows Event Tracing) – механизм, позволяющий любому компоненту системы создавать события, которые может использовать любое другое приложение [2]. Структуру и содержание события устанавливает сам поставщик информации. В первую очередь для нас будут интересны события провайдера ядра системы – это зарезервированный сеанс трассировки, который встроен в операционную систему Windows и предоставляет информацию от драйверов. Например, каждое переключение контекста процесса сопровождается созданием события CSwitch, которое может проанализировать любой компонент системы. Трассировка событий позволяет сохранять данные и осуществлять циклическую запись в файл или оперативную память для их дальнейшего анализа администратором. Существуют различные программы для просмотра файлов трассировки событий, например, Windows Performance Analyzer – инструмент, который строит графики и таблицы на основе данных производительности. Информации трассировки ядра достаточно для расследования большинства причин снижения производительности, но подобные программные продукты может применять только опытный пользователь. Постоянная запись трассировки событий в файл нагружает аппаратные ресурсы.
Следовательно, существует потребность в инструменте, который бы производил запись трассировки событий только в момент снижения производительности вычислительной системы и предоставлял пользователю полную и доступную для понимания информацию о причинах нестабильной работы системы.
Для расследования причин снижения производительности необходимо определить интервалы времени, в которые состояние системы характеризовалось как «неудовлетворительное». С точки зрения пользователя, снижение производительности оказывает влияние на длительность обработки интерактивных операций. Следовательно, одной из методик оценки производительности является методика, основанная на мониторинге важных для пользователя операций, которые называются ключевыми [3, с. 25-26].
Система анализа производительности не должна быть привязана к конкретным приложениям и действиям пользователя, вместе с тем необходимо получать информацию о произвольных событиях в системе и анализировать их длительность. Одним из вариантов решения этой задачи является создание подсистемы, предоставляющей информацию о событиях пользователя (например, нажатии кнопок на форме, щелчков мыши) и подсистемы чтения этой информации. Наибольшую производительность обработки событий пользователя можно достичь путем регистрации информации в новом провайдере трассировки событий.
Точность определения времени должна быть сравнима с квантом процессорного времени, выделенным для потока, иначе при расследовании причин падения производительности, процесс, выполняющийся на процессоре, не попадет в интервал всплеска активности. Большинство функций определения текущего времени в операционной системе Windows предоставляют данные с точностью до миллисекунд. Следовательно, функции «timeGetTime», «GetTickCount», «GetSystemTime», точность которых в зависимости от операционной системы варьируется от 1 до 50мс, не подходят для использования (подробное описание Windows API функций, структур, констант представлено в [2]). В Windows, начиная с версии 2000, доступна для использования функция «QueryPerformanceCounter», которая принимает на вход переменную типа LARGE_INTEGER и возвращает в ней количество тактов процессора с момента запуска системы. Точность «QueryPerformanceCounter» составляет 297нс [5, с. 491].
Для оценки длительности выполнения ключевых операций можно использовать международный стандарт оценки производительности приложений (APDEX – Application Performance Index), подробная информация о стандарте представлена в источнике [3, c. 27]. Цель данной методики предоставить информацию о соответствии производительности приложений ожиданиям пользователей. Методика оценки должна удовлетворять требованиям, описанным в [5, c. 53].
Для построения APDEX необходимо:
- Отобрать ключевые операции, длительность которых влияет на скорость работы пользователя. Производительность вычислительной системы будет характеризоваться временем выполнения этих операций.
- Сопоставить каждой ключевой операции время T0, называемое целевым [3]. Это приемлемое с точки зрения пользователя время обработки операции. При выборе T0 желательно участие представителей заказчика программного продукта.
- Запустить систему мониторинга и накопления информации о длительности выполнения ключевых операций.
- Рассчитать APDEX для каждой операции, по следующей формуле:
(1)
где:
– количество операций, длительность которых меньше T0.
– количество операций, длительность которых более T0, но менее 4T0.
– общее количество операций;
- интерпретировать данные, полученные методикой APDEX согласно Таблице 1.
Таблица 1.
Оценка методикой APDEX
Значения APDEX |
Оценка |
|
От |
До |
|
0.00 |
0.50 |
Неудовлетворительно |
0.50 |
0.70 |
Очень низкая производительность |
0.70 |
0.85 |
Приемлемая производительность |
0.85 |
0.94 |
Пользователь доволен производительностью приложения |
0.94 |
1.00 |
Длительность обработки ключевых операций соответствует ожиданиям пользователя |
Методика APDEX требует продолжительной настройки, и взаимодействия с пользователем для определения предельных значений целевого времени. Кроме того, оценка должна отсеивать случайные всплески активности в системе. Нахождение среднего или превышение определенного значения не являются объективными оценками. Следовательно, случайные всплески оказывают влияние на длительность пользовательских событий. В результате тестирования была выбрана статистическая оценка, основанная на превышении среднеквадратичных отклонений.
Формула среднеквадратичного отклонения дискретной случайной величины выглядит следующим образом:
(2)
где:
M(X) – математическое ожидание.
D(X) – дисперсия.
После расчета среднеквадратичного отклонения, необходимо проверить удовлетворяет ли новое значение условию:
, где Nmax устанавливает администратор.
Тестирование статистической оценки производилось на приложении «1С:Предприятие». В этом программном продукте существует подсистема для вывода информации о длительности различных событий в текстовый файл, называемый «Технологическим журналом». В результате тестирования были собраны массивы значений по 240 различным событиям. Далее представлены некоторые из них:
1) отклик на нажатие кнопок мыши и клавиш клавиатуры;
2) отклик приложения на нажатие пользователем кнопок на формах;
3) запуск приложения;
4) обработка ввода значений на формах;
5) открытие, закрытие форм;
6) создание новых объектов.
Данная оценка учитывает постепенное увеличение длительности обработки пользовательских событий, но возможны ложные срабатывания в случае наличия всплесков. Для увеличения точности необходимо рассчитывать математическое ожидание по 100 или более значениям.
Данную методику оценки можно использовать и при сравнении нового значения длительности события с установленным пользователем предельным значением. Совокупность этих подходов позволит исключать случайные всплески, если находить математическое ожидание определенной выборки, где выборка состоит из значений, которые удовлетворяют условию:
, где Nmin и Nmax задаются пользователем.
После определения интервала времени (T0, T1), в который состояние производительности системы охарактеризовано, как «неудовлетворительное», должен выполняться анализ событий трассировки программного обеспечения, а именно зарезервированного провайдера ядра операционной системы – NT Kernel Logger Trace Session. Данный провайдер предоставляет информацию от драйверов оборудования и позволит установить причину снижения производительности. Перед формированием отчета пользователю, необходимо:
- Проанализировать потребление ресурсов программами, запущенными непосредственно перед снижением производительности или в период (T0, T1). При запуске приложения происходит резкий всплеск нагрузки, каждому новому процессу выделяется место в оперативной памяти и вычислительные мощности процессора.
- Проанализировать процессы, потребляющие наибольшее количество аппаратных ресурсов.
- Проанализировать информацию об активности приложений в момент возникновения проблемы.
- Рассмотреть процессы, которые наиболее часто становятся причиной замедления работы операционной системы (например, антивирусные программы).
- Выполнить поиск процессов, активность которых хоть и не существенно влияет на производительность, но их наличие не желательно (Например, рекламные программы, различные службы обновления приложений, неиспользуемые процессы).
- Проверить минимальные требования для данного компьютера или выполнить поиск ошибок оборудования при неоднократном возникновении проблем с определенным устройством.
- Проверить наличие перемещения страниц виртуальной памяти на жесткий диск.
- Проверить наличие фрагментации файлов, с которыми осуществлялся обмен в интервал времени (T0, T1).
Список литературы:
- Чекмарев А. Н. Windows Server 2008. Настольная книга администратора. – Санкт-Петербург: БХВ-Петербург, 2009. – 512 с.
- Руссинович М., Соломон Д. Внутреннее устройство Microsoft Windows. – Санкт–Петербург: Питер, 2013. – 800 с.
- Филиппов Е. В. Настольная книга 1С:Эксперта по технологическим вопросам. – Москва: 1С-Паблишинг, 2014. – 247 с.
- Лебедев А. В. Оценка интегральной производительности информационной системы по методике APDEX // Актуальные проблемы экономики современной России. – 2016. №3. – С. 52–55.
- Щупак Ю. А. Win32 API. Разработка приложений для Windows. – Санкт-Петербург: Питер, 2008. – 592 с.
Оставить комментарий