ISSN 0236-235X (P)
ISSN 2311-2735 (E)
1

16 Марта 2024

Методы измерения реактивности систем реального времени


Никифоров В.В. () - , Гуцалов Н.В. () -
Ключевое слово:
Ключевое слово:


     

Программные системы реального времени (СРВ) находят все более широкое применение в сфере производства, на транспорте, в технических системах бытового назначения. Расширение практики применения СРВ сопровождается повышением требований к эффективности использования аппаратных ресурсов программными компонентами. Требования эффективности стимулируют развитие теории построения СРВ и, в частности, методов планирования задач в системах жесткого реального времени [1-3]. Для использования этих методов необходимо располагать характеристиками, отражающими различные аспекты быстродействия аппаратных средств и базовых программных компонент СРВ. К таким характеристикам относятся характеристики реактивности СРВ. Высокая реактивность СРВ означает способность системы быстро откликаться на возникновение ситуаций, требующих незамедлительной реакции. В качестве таких ситуаций могут служить либо внешние прерывания, либо внутрисистемные события. Данная статья посвящена изложению вопросов, относящихся к экспериментальным методам оценки характеристик реактивности СРВ.

Измеряемые параметры. Роль параметров, характеризующих реактивность СРВ, играют величины, обратно пропорциональные максимально возможным задержкам реакций системы на возникновение внешних прерываний и внутрисистемных событий.

Задержка обработки прерываний. Длина интервала времени между возникновением прерывания и передачей управления обработчику этого прерывания называется задержкой обработки прерывания. На рисунке 1 представлена структура интервала задержки обработки прерываний. Интервал разбит на четыре составляющих:

-    (tsignal, tinterrupt ) – завершение фрагмента работы прерываемой программы в режиме блокированных прерываний;

-    (tinterrupt, tprologue) – аппаратно выполняемые действия по реализации операции прерывания;

-    (tprologue, tjump) – действия операционной системы (ОС) по регистрации прерывания и передаче управления обработчику прерываний;

-    (tjump, tact) – аппаратные действия по переходу к выполнению обработчика прерываний.

Интервал (tsignal, tinterrupt) может оказаться вырожденным (то есть иметь нулевую длину), если в момент возникновения сигнала прерывания процессор работал в режиме разблокированных прерываний (в более общем случае прерываемая программа работала с приоритетом процессора ниже приоритета возникшего прерывания).

В течение интервала (tinterrupt, tprologue) процессор выполняет передачу управления по адресу, хранящемуся в векторе прерываний, предварительно состояние прерванной программы фиксируется во фрейме прерывания (как правило, фрейм прерывания размещается в стеке прерываемой программы). Интервал (tprologue, tjump) актуален в том случае, если вектор прерывания контролируется не непосредственно прикладной программой, а ОС. Действия ОС в этом случае называют прологом обработки прерываний. Длительность интервала (tjump, tact) во многих случаях не превышает продолжительности выполнения одной машинной команды. Однако в системах с кэш-памятью длительность интервала (tjump, tact) может оказаться значительной, если страница с обработчиком прерываний в текущий момент вытеснена из кэш-памяти.

Длительность интервалов (tinterrupt, tprologue) и (tprologue, tjump), как правило, невелика и варьируется несущественно. Поэтому, если влиянием кэш-памяти можно пренебречь, то основной вклад в максимальную задержку обработки прерываний вносит максимальная длительность интервала (tsignal, tinterrupt). Отметим, что в неблагоприятной ситуации интервал (tsignal, tinterrupt) может вмещать не только завершение фрагмента работы прерываемой программы в режиме блокированных прерываний, но и обработку других (“дежурящих”) прерываний.

Задержка реакции на внутрисистемные события. Существуют две разновидности внутрисистемных событий: события, генерируемые задачами, и события, генерируемые обработчиками прерываний.

Подпись:  
Рис. 1. Структура интервала задержки обработки пре-рываний











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

Возникновение внутрисистемного события в момент времени tservice сопровождается вызовом сервисной функции ОС, обеспечивающей передачу управления активизируемой задаче. При активизации от задачи (рис. 2а) задержка реакции на внутрисистемное событие сводится к выполнению этой сервисной функции ОС в течение интервала (tservice, tjump) и интервалу (tjump, tact) аппаратных действий по переходу к выполнению активизируемой задачи. В случае активизации от обработчика прерываний структура интервала задержки складывается из четырех составляющих:

-    (tservice, treturn) – вызов сервисной функции ОС;

-    (treturn, tepilogue) – возврат к завершению активизирующего обработчика прерываний;

-    (tepilogue, tjump) – действия ОС по регистрации завершения выполнения обработчика прерывания и по передаче управления активизируемой задаче;

-    (tjump, tact) – аппаратные действия по переходу к выполнению активизируемой задачи.

Если к моменту tact возникнет новый запрос на прерывание, то выполнение активируемой задачи будет вновь отложено до заПодпись:  
				а									б
–	исполнение с разрешенными прерываниями,
–	исполнение с запрещенными прерываниями,
Lmeasured – результат измерений, Lact – истинная задержка.
Рис. 3. Измерение задержки обработки прерывания: а) в момент tsignal прерывания разрешены,б) в момент tsignal пре-рывания запрещены












вершения обработки этого вновь возникшего прерывания.

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

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

-    настройку приложения на выполнение сеанса измерений для оценки требуемых характеристик системы в заданных условиях;

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

-    обработку полученных данных и представление их в удобном для анализа виде (таблицы, графики, диаграммы).

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

Оценка задержек реакций на внешние прерывания. В  качестве источника измерительных прерываний целесообразно использовать независимый таймер, обеспечивающий генерацию периодических запросов на прерывания с требуемой частотой. Независимость измерительного таймера понимается в том смысле, что он не должен использоваться ОС во избежание нежелательной синхронизации действий, выполняемых ОС и измерительным приложением. Такой независимый таймер имеется в составе большинства аппаратных платформ, используемых для СРВ.

Для регистрации моментов времени выполнения фрагментов измерительного приложения рационально использовать счетчик тактов процессора (Time Stamp Counter – TSC). В частности, размещение команд считывания показания TSC в начале обработчика измерительных прерываний дает оценку момента tact активизации обработчика прерываний. На рисунке 3 изображены диаграммы, иллюстрирующие порядок действий по измерению задержки реакции на измерительное прерывание (опущены детали, относящиеся к выполнению компонент ОС, приведенные на рисунке 1).

На рисунке 3 диаграмма а соответствует немедленному удовлетворению запроса на измерительное прерывание (прерывания разрешены), а диаграмма б – отсрочке обработки измерительного прерывания до момента разрешения прерываний.

Для получения представительных статистических данных о реактивности системы необходимо проведение серии большого числа измерений величин Li задержки обработки прерываний. Условия выполнения подавляющего большинства этих измерений, как правило, соответствуют диаграмме а (рис. 3), то есть в моменты возникновения большинства измерительных прерываний выполняются программы с низким приоритетом процессора (прерывания разрешены). В этом случае измеренная величина Li примерно соответствует минимальному значению Lmin задержки обработки прерываний и определяется длительностью выполнения компоненты ОС, регистрирующей факт возникновения прерывания и передающей управление соответствующему обработчику прерываний (длительностью пролога обработки прерываний). Нижняя граница Lmin возможных значений Li задержки обработки прерываний стоит в ряду важных характеристик системы, поскольку может определять заметную часть накладных расходов на обработку прерываний.

Для систем жесткого реального времени особое значение имеет величина верхней границы Lmax возможных значений Li. При организации экспериментальной оценки величины Lmax необходимо учитывать, что, во-первых, интервалы Imax максимально длительной блокировки прерываний, определяющие значение Lmax, возникают редко. Во-вторых, для регистрации интервала Imax средствами измерительного приложения необходимо, чтобы момент tsignal (см. рис. 3б) пришелся на стартовый фрагмент Istart интервала Imax.

Подпись:  
Рис. 4. Стартовые фрагменты интервалов блоки-ровки прерываний
















Рисунок 4 иллюстрирует обозначенную проблему. Длина Lstart стартового фрагмента Istart связана с требуемой точностью измерения Lmax. Для измерения Lmax с точностью, например, не хуже чем 1% необходимо выполнение условия Lstart £ Lmax/100. Поскольку измерительные прерывания генерируются независимым источником, предполагаемый момент texpected возникновения измерительного прерывания может более или менее отличаться от истинного tsignal. Различие между истинным моментом tact активизации обработчика прерываний и величиной tmeasured, получаемой в результате измерения, обусловлено затратами на считывание TSC. В том случае, если для считывания TSC используются низкоуровневые команды, величина разности (tmeasured - tact) практически не варьируется и может быть учтена при обработке результатов. Разность |tsignal - texpected| обусловлена, в частности, относительным дрейфом частот генератора измерительных прерываний и генератора тактов процессора. Если стабильность генераторов не хуже чем 10-4, то для того, чтобы эта разность не превышала десятой доли микросекунды, достаточно один раз в миллисекунду уточнять привязку фазы периодических измерительных прерываний к показаниям TSC. Необходимо, однако, найти способ для подобного уточнения значения фазы измерительных прерываний. Вместе с тем существует способ оценки максимальной задержки, не требующий таких уточнений.

Подпись: –	предполагаемое время прерывания

–	истинное время прерывания

–	измеренное время прерывания

Подпись:  
Рис. 5. Измерения задерж-ки при неизвестной фазе измерительных прерываний




Оценка максимальной задержки при неизвестной фазе измерительных прерываний. Сеанс оценки максимальной задержки прерываний может быть организован без получения информации о фазе измерительных прерываний. Для этого достаточно лишь применить специальный способ обработки результатов измерений. Предположим, что в результате дрейфа действительная фаза генерации измерительных прерываний смещена относительно предполагаемой на величину f (см. рис. 5).

Тогда оценка Li задержки обработки каждого из измерительных прерываний будет завышена на величину f. Но при этом абсолютное значение разности |Li - Li+1| оценок совпадает с разностью истинных задержек. Причем для получения значения |Li - Li+1| нет необходимости использовать информацию о предполагаемых моментах возникновения измерительных прерываний, поскольку |Li+1-Li|=|ti+1-ti-T|, то разность соседних задержек определяется разностью результатов соседних измерений.

С ростом продолжительности сеанса измерений растет вероятность того, что некоторое i-е измерительное прерывание придется на стартовый фрагмент максимально длительного интервала блокировки прерываний, а запрос на соседнее измерительное прерывание будет удовлетворен немедленно в соответствии с диаграммой рисунка 3б. В таком случае выражение max {|Li+1 - Li|} + Lmin может использоваться в качестве оценки величины максимальной задержки обработки прерываний. Подобная оценка будет представлять истинное значение Lmax с требуемой точностью. Для получения оценки максимальной задержки остается определить значение Lmin, примерно соответствующее продолжительности пролога обработки прерываний. Для большинства СРВ продолжительность пролога несложно определить аналитически путем исследования кодов ОС. Возможность экспериментальной оценки Lmin обсуждается ниже.

Продолжительность сеанса оценки максимальной задержки обработки прерываний. Относительная погрешность An оценки значения Lmax в результате проведения сеанса измерений, включающего обработку n измерительных прерываний, определяется как An = (Lmax - max{L1, L2, … , Ln}) / Lmax.

Для того чтобы эта погрешность не превышала заданной величины A, необходимо попадание измерительного прерывания хотя бы для одного из измерений в стартовый фрагмент максимального интервала Imax блокировки прерываний, длина стартового фрагмента должна быть не более чем A*Lmax.

Пусть сеанс измерений включает N интервалов Imax. Тогда при периоде измерительных прерываний, равном T, вероятность Pfalse того, что никакое измерительное прерывание не попадет в стартовый интервал хотя бы одного из Imax, оценивается выражением Pfalse = ((T - A*Lmax ) / T)N. Следовательно, вероятность Psuccess того, что в результате сеанса измерений будет достигнута требуемая точность (погрешность не больше чем A) оценки Lmax, равна:

Psuccess = 1 - ((T - A*Lmax) / T)N.

Отсюда получаем то количество N интервалов Imax в сеансе измерений, которое обеспечивает требуемую вероятность P оценки значения Lmax с заданной относительной точностью (погрешность не больше чем A):

N = log(P – 1) / (log ( T - A*Lmax) - log T).

Для использования этого соотношения в целях оценки требуемой продолжительности сеанса измерений следует исходить из предварительных гипотез о значении Lmax и о частоте появления интервалов Imax. Частоту измерительных прерываний следует устанавливать таким образом, чтобы выполнялось неравенство T > Lmax.

Способы непосредственного использования результатов измерений. Для оценки отдельного значения задержки обработки прерываний удобнее всего было бы непосредственно использовать результат измерений Lmeasured (см. рис. 3). Это возможно, например, в случае, если удается добиться необходимой точности совпадения значений tsignal и texpected так, чтобы значением разности tsignal - texpected можно было бы пренебречь. Один из способов решения этой задачи – ожидание очередного флага измерительных прерываний перед выходом из обработки предыдущего измерительного прерывания с фиксацией времени появления этого флага. Недостаток этого способа в том, что обработчик измерительных прерываний захватывает процессор на время, превышающее Lmax, а это может привести к существенным изменениям в функционировании исследуемой СРВ.

Еще один способ связан с использованием фоновой задачи, постоянно опрашивающей TSC и сохраняющей считанное показание в глобальной переменной. Если значение этой переменной использовать в качестве texpected, то некоторое подмножество результатов Lmeasured будет с хорошей точностью соответствовать задержкам Li. Вместе с тем часть значений Lmeasured будет существенно превосходить соответствующие Li из-за того, что фоновая задача может вытесняться более приоритетными задачами. Однако минимальное значение min{L1, L2, …} быстро приблизится к величине пролога обработки прерываний. Поэтому такой способ проведения измерений пригоден для экспериментальной оценки значения Lmin.

Оценка задержек реакций на внутрисистемные события. Выше были рассмотрены две разновидности внутрисистемных событий: события, генерируемые задачами, и события, генерируемые обработчиками прерываний. В обоих случаях возникновение внутрисистемного события символизируется  вызовом некоторой сервисной функции ОС в момент времени tservice. Результатом выполнения сервисной функции является передача в момент времени tact управления задаче, ожидающей возникновения этого события.

Экспериментальная оценка задержек реакций на внутрисистемные события требует разработки и выполнения специальных измерительных приложений для каждого из двух типов внутрисистемных событий. Измерительные приложения должны обеспечивать измерение продолжительности действий системы в интервале между моментами времени tservice и tact, отмеченными на рисунке 2. С этой целью в каждом измерительном приложении следует разместить по два блока команд, регистрирующих показания TSC. Первый блок, предназначенный для регистрации момента времени tservice возникновения внутрисистемного события, размещается в теле активизирующей задачи (или в теле обработчика прерываний) непосредственно перед оператором вызова функции ОС, реализующей генерацию внутрисистемного события. Этот блок зафиксирует показание TSC в момент времени tstart, предшествующий моменту tservice. Второй блок, предназначенный для регистрации момента времени tact, размещается в теле активизируемой задачи непосредственно вслед за оператором вызова функции ОС, реализующей ожидание внутрисистемного события. Второй блок зафиксирует показание TSC в момент времени tfinish, следующий за моментом tact. Статистические параметры множества {Di} значений разности D = tfinish - tstart, получаемых в результате многократного исполнения измерительного приложения, позволяют оценить задержку реакции системы на возникновение внутрисистемных событий.

Заметим, что существуют две причины, по которым значение D превосходит искомую величину (tact - tservice) задержки реакции на внутрисистемное событие. Первая причина – затраты времени Tread на выполнение блоков считывания показаний TSC. Эти затраты несложно определить аналитически или экспериментально. Вторая причина состоит в том, что между блоками считывания показаний TSC и интервалом времени (tservice, tact) могут возникать (и обрабатываться) внешние прерывания. Поэтому для оценки задержки реакции на внутрисистем- ные прерывания следует использовать величину min{Di}- Tread.

Рассмотренные методы измерения задержек реакций СРВ на внешние прерывания и внутрисистемные события позволяют проводить экспериментальные оценки этих ключевых характеристик СРВ путем разработки и выполнения измерительных программных приложений без привлечения специальных аппаратных средств.

Список литературы

1.   Kopetz H. Real-Time Systems. Design Principles for Distributed Embedded Applications. Kluwer Academic Publishers. MA, 1997.

2.   Никифоров В.В., Павлов В.А. Операционные системы реального времени для встроенных программных комплексов. // Программные продукты и системы. - № 4, 1999. - С. 24-30.

3.   Tindell K., Hansson H. Real-Time Systems by Fixed Priority Scheduling. DoCS, Uppsala University, 1997.



http://swsys.ru/index.php?id=853&lang=.&page=article


Perhaps, you might be interested in the following articles of similar topics: