- •Оценка производительности программ с помощью пим Sampler2
- •Концепции оценки производительности программ и их реализация в пим Sampler
- •2. Методология измерений с помощью пим Sampler
- •3. Обоснование точности измерений, проводимых с помощью пим Sampler
- •3.1. Обоснование методики измерения времени
- •3.2. Расчет времени коррекции функции контрольных точек
Оценка производительности программ с помощью пим Sampler2
Концепции оценки производительности программ и их реализация в пим Sampler
Анализ производительности ПО имеет ряд специфических особенностей, которые необходимо учитывать:
большое число факторов влияющих на производительность ПО: аппаратная платформа, операционная система и т. д.;
сложность определения и задания параметров потребления ресурсов, характеризующих нагрузку компонентов модели программы для расчета по ним характеристик производительности;
сложность априорной оценки вероятностных параметров модели программы, характеризующих статистические свойства ее выполнения: вероятности выбора маршрутов, числа повторений циклов и т. д.
Первая особенность является ключевой для любого ПИМ, т. к. тот факт, что команды ПИМ должна выполнять сама измеряемая система (ЭВМ, на которой функционирует измеряемая программа), приводит к возникновению искажений. Количество искажений зависит от частоты обнаруживаемых событий и от операций, выполняемых измерителем при обнаружении каждого события. Подтверждением тому явились искажения измерений, получаемых с помощью ПИМ Sampler, например, при сильной загрузке ЦП ЭВМ произвольным сторонним процессом.
На более глубоком уровне, если говорить об измеряемом программном модуле, запускаемом в отдельном процессе на конкретной ЭВМ, необходимо обеспечить максимальную независимость последнего от процесса, в котором функционирует ПИМ. В ПИМ Samplerэто требование реализовано с помощью использования механизма программных прерываний: исследуемый модуль запускается в отдельном от ПИМ процессе и упакованные данные измерений поступают на обработку в ПИМ через пользовательское прерывание (обычно вектор 65h).
Измеряемым ресурсом в ПИМ Samplerявляется время выполнения заданного участка кода. Соответственно под анализом производительности понимается определение количественных характеристик времени и вероятностей выбора маршрутов выполнения исследуемой программы.
2. Методология измерений с помощью пим Sampler
Проведение измерительных экспериментов с помощью ПИМ Samplerсостоит из следующих этапов:
1) Ручная расстановка контрольных точек (КТ). Для этого измеряемый код располагается между минимум двумя функциями контрольных точек (функция SAMPLEдляC++).
Компиляция исследуемой программы (требуется подключение заголовочного файла sampler.h) и ее выполнение под управлением монитора со снятием замеров в КТ.
После выполнения исследуемой программы под управлением ПИМ Sampler(командная строка:sampler.exe<имя файла>) формируется отчет о выполнении измерений в виде таблицы измерений и генерируется файл данных измерений, являющийся входным для программы визуализации результатов измеренийSmpView. Ниже последовательно приведены пример файла отчета и пример графической интерпретации данных файла отчета для программыProg1 на С++:
№ строки код файла Prog1.cpp
1. #include “sampler.h”
2. void main() {
3. SAMPLE;
4. char*k= “Время выполнение этой строки измеряется в ПИМSampler!”;
5. SAMPLE;
6. }
Отчет о результатах измерений для программы Prog1.
Список обработанных файлов.
---------------------------------------------------------------------------
NN Имя обработанного файла
---------------------------------------------------------------------------
1. PROG1.CPP
---------------------------------------------------------------------------
Таблица с результатами измерений ( используется 2 из 416 записей )
---------------------------------------------------------------------------
Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Вер-ть Среднее
время(мкс)
---------------------------------------------------------------------------
1 : 3 1 : 5 0.28 1 1 0.28
---------------------------------------------------------------------------
Отображение нагруженного орграфа (НОГ) программы Prog1.cpp:
1 3 1 5
Источник: PROG1.CPP [ 3 ]
Приемник: PROG1.CPP [ 5 ]
Общее время, мкс: 0.28
Количество переходов: 1
Вероятность: 1
Среднее время, мкс: 0.28
Из приведенных примеров видно, что вершины НОГ соответствуют местам вызова функций КТ. Дуги НОГ нагружены вероятностями перехода из узла-источника дуги в узел-приемник дуги.