Аппаратные и программные измерительные мониторы

Введение

 

       Наряду  с аналитическими методами для исследования и оценки параметров программ активно  используются измерительные методы. Привлекательной стороной этих методов  является их высокая достоверность. Поэтому они применяются для  проверки  имитационных и аналитических  методов оценки характеристик программ по принципу: практика – лучший критерий истины.

   В целом измерительные  методы имеют следующее  назначение:

  1. Измерение параметров потребления программами ресурсов вычислительной системы с целью устранения дефектов производительности.
  2. Предварительное измерение параметров системы для имитационных или аналитических моделей программ перед их последующим использованием. Это связано со сложностью оценки параметров моделей, особенно при использовании новых системных средств с неизвестными динамическими параметрами (например устройств ввода-вывода, нового процессора с не вполне известными характеристиками и т.п.).
  3. Проверка адекватности имитационных или аналитических моделей и методов расчета характеристик выполнения программ по результатам моделирования.

   Необходимые условия применения измерительных методов:

  1. Наличие готовой программы, подлежащей измерительному исследованию;
  2. Наличие реальной вычислительной системы (а не её модели) для прогона программы;
  3. Наличие аппаратных или программных средств проведения измерений;
  4. Создание условий снижения искажений, вносимых в функционирование системы в процессе проведения измерений, до приемлемого уровня.
 
 
 
 
    1. Аппаратные  измерительные мониторы (АИМ).
 

       АИМ подразделяются на встроенные и автономные.

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

       Основное  назначение  встроенного АИМ - для  проверки, контроля и настройки ВС.  Но т.к. в его составе могут  находиться триггеры состояний схемы, счетчики и некоторые другие устройства, то они могут использоваться и  ддя измерения параметров программ.

       Автономные  АИМ подключаются к измерительным точкам  извне системы через специальные разъемы и могут задавать любые точки доступные для измерений. Автономные АИМ наиболее общий случай.

       Рассмотрим  структурную схему  автономного АИМ, показанную на рис.1.

         

Измеряемая

вычислительная

система 
 

Фильтр

событий 
 

Регистратор 
 

Архив

Часы  реального времени 

(ЧРВ)

Зонд

протяженность линий м.б. большой

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    Рис.1 

Зонд - высокоомный датчик сигналов, не влияющий на функционирование системы.

Фильтр  событий – устройство, вырабатывающее сигнал истинности, при наступлении какого-либо события. Может содержать аналоговые компараторы для сравнения уровней сигналов с заданными границами, цифровые компараторы для сравнения кодов, простейшие автоматы типа детекторов последовательностей команд или адресов памяти (2-3 команды или адреса, повторяющиеся друг за другом могут служить признаком наступления события).

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

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

Часы  реального времени - служат для регистрации моментов наступления событий или длительностей интервалов времени между событиями.

Регистр

сосотояния

ЦП

 & 

Счетчик А

 & 

Счетчик В 

ГТИ

Часы  реального времени

Блок  управления

Старт

Стоп

Занят

Измеряемая ВС

Пример  АИМ с фиксированной  программой и последовательным входом (рис.2) для измерения коэффициента загрузки процессора или другого ресурса по формуле  
 
 
 
 
 
 
 
 
 
 
 

Рис. 2

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

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

ЦП 

Блок  управления 
 

Регистр

или дешифратор

кода 

операции 

Измеряемая ВС

 & 
 

 & 

 & 

 & 
 

КОП

ГОТ

Регистр

 адреса

памяти 

Базовый  адрес

Таблицы

операций 

Смещение

 адреса

текущей операции

Память  прямого доступа.

Таблица фиксации числа операций

БуфРгДан

(Чт-Инкр-.Зап.)

 

       

       

       

       

       

         
 
 
 
 

Рис. 3

       АИМ неудобны тем, что легко регистрируют события в аппаратных средствах, но менее ориентированы на измерения  параметров, характеризующих выполнение программ.  
 
 
 
 
 
 

    1. Программные измерительные мониторы.
 

       Программные измерительные мониторы (ПИМ) - это  совокупность команд или программ, выполняемых исключительно с  целью проведения измерений. Обычно ПИМ – это специальные программные  средства, под управлением которых  производится выполнение программы  на той же ЭВМ, на которой измеряемая программа и должна выполняться. При этом ПИМ собирает данные о  ходе выполнения программ и накапливает  их в памяти.

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

Идея  использовать измерительные средства в процессе разработки программ - не нова. В настоящее время существует несколько типов таких программных  средств.  Особое место среди них  занимают профилировщики. Профилировщики (называемые также анализаторами  процесса выполнения программ) - это  программы, позволяющие получить ряд  количественных данных о процессе выполнения объекта разработки (снять профиль  разрабатываемой программы) и на основании этих  данных  выявить  в  программе "узкие места", отрицательно сказывающиеся на эффективности  ее работы. Профиль программы может  содержать, например, следующую информацию  о процессе выполнения программы:

  - как и на что расходуется  время работы программы;

  - сколько раз выполняется данная  строка программы;

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

Один  из самых известных профилировщиков  -  Turbo  Profiler  фирмы Borland International. Система Turbo Profiler контролирует каждый шаг выполнения программы и предоставляет подробные статистические сведения о всех этапах ее работы. Такой подход к измерениям позволяет проводить профилирование в интерактивном режиме и получать большое количество сведений о работе программы,  но вносит большие временные искажения в процесс ее выполнения. Кроме того, для проведения измерительного эксперимента тестируемая  программа должна быть откомпилирована с отладочной информации  при  отключении оптимизации компилятора. Это делает профилирование неадекватным реальному выполнению программы. Для получения достоверной информации о времени выполнения от программиста требуется  достаточно высокая квалификация в методике планирования и проведения измерительного эксперимента. Таким образом, Turbo Profiler ориентирован прежде всего на профессиональных программистов. За счет грамотного  планирования эксперимента и отказа от ряда сервисных функций можно повысить точность временных измерений до 55 мс. Тем не менее, такая точность в ряде случаев недостаточна.

       Другой  подход реализован, например, в пакете Interval Performance Monitoring (IPM) Калифорнийского Университета. IPM ориентирован исключительно на временные измерения и состоит из набора отдельных функций для замера времени и протоколирования результатов измерения. Функции вставляются в нужные места программы, после чего программа компилируется. Такой подход позволяет резко повысить точность измерений, но требует значительных дополнительных усилий по сбору и классификации полученной информации. Трудоемкость проведения измерительного эксперимента не позволяет считать системы типа IPM полноценными профилировщиками.

       Многие  из  полезных  принципов  организации  системы  Turbo Profiler и пакета IPM были реализованы на кафедре МОЭВМ в ПИМ Sampler. Особенностью работы ПИМ Sampler  являются:

1. Исследуемая программа запускается под управлением  монитора  и монитор берет на себя все функции по накоплению результатов измерений и протоколированию.

2. Исследуемая  программа выполняется "естественным" образом, а не по шагам и  без использования отладочной  информации.

3. Измерения  времени выполняются с максимально  возможной точностью.

4. Искажения,  вносимые ПИМ за счет потребления  им ресурсов ЭВМ, минимальны  и не сказываются на итоговых  результатах.

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

На этапе  планирования  измерительного  эксперимента  производится задание контрольных  точек. После этого исследуемая  программа компилируется. Задание  контрольной точки предполагает вызов некоторой функции на языке  программирования исследуемой программы.  Назовем  эту функцию функцией задания контрольных точек или  просто функцией контрольных точек.  Эта функция не должна вносить  больших искажений в работу исследуемой  программы. Для этого она должна быть небольшого размера и обладать высоким быстродействием. Вызов  функции контрольных точек осуществляется с помощью механизма прерываний, в частности, используется прерывание пользователя с номером 65.   Функция  контрольных точек выполняет  измерение  времени  дважды:  сразу  после входа в нее и непосредственно  перед выходом. Оба значения времени передаются измерительному монитору. После первого замера  управление передается  монитору и он выполняет действия по идентификации и накоплению результатов измерений. После возврата  управления  в функцию задания контрольных точек, выполняется второе измерение времени. Такой подход наиболее полно соответствует условиям 3 и 4, поскольку позволяет точно измерить не только время выполнения участка программы между контрольными точками, но и убрать временное искажение вносимое измерительным монитором.

Проведение  измерительного эксперимента начинается с запуска монитора. Работа измерительного монитора состоит из нескольких фаз. 

  • Подготовительные  операции. На этом этапе производится проверка допустимости входных параметров, формирование необходимых структур данных и операции по калибровке измерительного монитора. После окончания подготовительных операций управление передается исследуемой  программе. Управление  передается по схеме - "запуск программы-потомка  с возвратом в предок".
  • Идентификация и накопление измерительный информации. Эти действия производится после перехвата прерывания от исследуемой программы.  Идентификация информации подразумевает не только анализ положения контрольных точек, но и определение ряда статистических сведений о проходах между контрольными точками. Накопление такого рода измерительной информации облегчает последующее формирование отчета и позволяет резко сократить расход памяти, потребляемой монитором. При накоплении измерительная информация корректируется для снятия временных искажений монитора. Таким образом, исследуемая программа выполняется без трассировки и освобождается от операций по анализу и протоколированию измерительной информации. Это полностью соответствует принципам 1, 2 и 4.
  • Операции по анализу  измерительной  информации  и  формированию отчетов. Эта  фаза является заключительной и наступает после окончания работы исследуемой программы. Реализация   условия 5 требует значительных  ресурсов ВС. В этой связи, целесообразно графическую интерпретацию  снятого профиля  выполнять  в  отдельной программе - просмотрщике. Снятый профиль программы выдается в виде текстового файла и в виде двоичного.

       В «Sampler»e замеры системного времени проводятся, как и для IPM, внутри тестируемой программы вызовом функции задания точки профилирования. Этим достигается высокая точность измерения времени и отсутствие ограничений на использование отладочной информации и оптимизации компилятора. Функция задания точки профилирования определена в модуле на соответствующем языке программирования, подключаемом к тестируемой программе. С другой стороны, запуск тестируемой программы осуществляется, как и для Turbo Profiler, через монитор. Это позволяет освободить пользователя  от сбора и классификации измерительной информации. Результаты измерения могут быть представлены как на экране компьютера, так и твердой копией после вывода протокола измерения на принтер.

ПИМ  Sampler состоит из двух исполняемых модулей следующего функционального назначения:

  • Измерительный монитор Sampler. Монитор запускает программу пользователя и перехватывает   прерывания,   несущие   информацию   о   прохождении тестируемой программы пользователя  через   определяемые   им   точки (контрольные точки ).  После отработки тестируемой программы, монитор выгружает собранную информацию в текстовый файл с профилем тестируемой программы   и   создает специальный двоичный  файл  для графической интерпретации результатов;
  • Программа графической интерпретации результатов профилирования Smpview. Программа выдает снятый профиль на экран в максимально информативной форме. Такой формой является ориентированный граф с вершинами в контрольных точках снятия отсчетов. Программа анализирует схему переходов между контрольными точками и отображает ее в виде дуг графа.  Информацию о времени перехода можно получить отметив нужные вершины на графе.
 
 
 
 
 
 
 
 

ЛИТЕРАТУРА 

      1. Липаев В.В.  Качество программного обеспечения.  - М.:  Финансы  и статистика, 1983. -263с.

      2. Назаров  С.В.,  Барсуков А.Г.  Измерительные  средства и оптимизация вычислительных  систем. - М.: Радио и связь, 1990. -248с.

      3. Боэм Б.У.  Инженерное проектирование программного  обеспечения: Пер. с англ. - М.: Радио  и связь, 1985. -512с.

      4. Авен О.И.  и др. Оценка качества и оптимизация  вычислительных систем. - М.: Наука, 1982. -485с.

      5. Кузовлев В.И.,  Шкатов П.Н. Математические методы анализа производительности и надежности САПР, М.: Высшая школа, 1990.

      6. Липаев В.В.  Надежность программного обеспечения.  - М.: Энергоиздат, 1981. -241с.

Аппаратные и программные измерительные мониторы