8.3.3 Построение профиля

8.3.3 Построение профиля

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

Рисунок 8.11. Адреса некоторых алгоритмов ядра

На Рисунке 8.11 приведены гипотетические адреса некоторых процедур ядра. Пусть в результате 10 измерений, проведенных в моменты поступления прерываний по таймеру, были получены следующие значения счетчика команд: 110, 330, 145, адрес в пространстве задачи, 125, 440, 130, 320, адрес в пространстве задачи и 104. Ядро сохранит при этом те значения, которые показаны на рисунке. Анализ этих значений показывает, что система провела 20 % своего времени в режиме задачи (user) и 50 % времени потратила на выполнение алгоритма bread в режиме ядра.

Если измерение параметров ядра выполняется в течение длительного периода времени, результаты измерений приближаются к истинной картине использования системных ресурсов. Тем не менее, описываемый механизм не учитывает время, потраченное на обработку прерываний по таймеру и выполнение процедур, блокирующих поступление прерываний данного типа, поскольку таймер не может прерывать выполнение критических отрезков программ и, таким образом, не может в это время обращаться к подпрограмме обработки прерываний драйвера параметров. В этом недостаток описываемого механизма, ибо критические отрезки программ ядра чаще всего наиболее важны для измерений. Следовательно, результаты измерения параметров ядра содержат определенную долю приблизительности. Уайнбергер [Weinberger 84] описал механизм включения счетчиков в главных блоках программы, таких как "if-then" и "else", с целью повышения точности измерения частоты их выполнения. Однако, данный механизм увеличивает время счета программ на 50-200 %, поэтому его использование в качестве постоянного механизма измерения параметров ядра нельзя признать рациональным.

На пользовательском уровне для измерения параметров выполнения процессов можно использовать системную функцию profil:

profil(buff, bufsize, offset, scale);

где buff — адрес массива в пространстве задачи, bufsize — размер массива, offset — виртуальный адрес подпрограммы пользователя (обычно, первой по счету), scale — способ отображения виртуальных адресов задачи на адрес массива. Ядро трактует аргумент "scale" как двоичную дробь с фиксированной точкой слева. Так, например, значение аргумента в шестнадцатиричной системе счисления, равное 0xffff, соответствует однозначному отображению счетчика команд на адреса массива, значение, равное 0x7fff, соответствует размещению в одном слове массива buff двух адресов программы, 0x3fff — четырех адресов программы и т. д. Ядро хранит параметры, передаваемые при вызове системной функции, в пространстве процесса. Если таймер прерывает выполнение процесса тогда, когда он находится в режиме задачи, программа обработки прерываний проверяет значение счетчика команд в момент прерывания, сравнивает его со значением аргумента offset и увеличивает содержимое ячейки памяти, адрес которой является функцией от bufsize и scale.

Рассмотрим в качестве примера программу, приведенную на Рисунке 8.12, измеряющую продолжительность выполнения функций f и g. Сначала процесс, используя системную функцию signal, делает указание при получении сигнала о прерывании вызывать функцию theend, затем он вычисляет диапазон адресов программы, в пределах которых будет производиться измерение продолжительности (начиная с адреса функции main и кончая адресом функции theend), и, наконец, запускает функцию profil, сообщая ядру о том, что он собирается начать измерение. В результате выполнения программы в течение 10 секунд на несильно загруженной машине AT&T 3B20 были получены данные, представленные на Рисунке 8.13. Адрес функции f превышает адрес начала профилирования на 204 байта; поскольку текст функции f имеет размер 12 байт, а размер целого числа в машине AT&T 3B20 равен 4 байтам, адреса функции f отображаются на элементы массива buf с номерами 51, 52 и 53. По такому же принципу адреса функции g отображаются на элементы buf c номерами 54, 55 и 56. Элементы buf с номерами 46, 48 и 49 предназначены для адресов, принадлежащих циклу функции main. В обычном случае диапазон адресов, в пределах которого выполняется измерение параметров, определяется в результате обращения к таблице идентификаторов для данной программы, где указываются адреса программных секций. Пользователи сторонятся функции profil из-за того, что она кажется им слишком сложной; вместо нее они используют при компиляции программ на языке Си параметр, сообщающий компилятору о необходимости сгенерировать код, следящий за ходом выполнения процессов.

#include ‹signal.h›

int buffer[4096];

main() {

 int offset, endof, scale, eff, gee, text;

 extern theend(), f(), g();

 signal(SIGINT, theend);

 endof = (int) theend;

 offset = (int) main; /* вычисляется количество слов в тексте программы */

 text = (endof - offset + sizeof(int) - 1) / sizeof(int);

 scale = Oxffff;

 printf("смещение до начала %d до конца %d длина текста %d ", offset, endof, text);

 eff = (int) f;

 gee = (int) g;

 printf("f %d g %d fdiff %d gdiff %d ", eff ,gee, eff - offset, gee - offset);

 profil(buffer, sizeof(int) * text, offset, scale);

 for (;;) {

  f(); g();

 }

}

f() {}

g() {}

theend() {

 int i;

 for (i = 0; i ‹ 4096; i++) if (buffer[i]) printf("buf[%d] = %d ", i, buffer[i]);

 exit();

}

Рисунок 8.12. Программа, использующая системную функцию profil

смещение до начала 212 до конца 440 длина текста 57

f 416 g 428 fdiff 204 gdiff 216

buf[46] = 50

buf[48] = 8585216

buf[49] = 151

buf[51] = 12189799

buf[53] = 65

buf[54] = 10682455

buf[56] = 67

Рисунок 8.13. Пример результатов выполнения программы, использующей системную функцию profil

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Создание профиля

Из книги Запись CD и DVD: профессиональный подход автора Бахур Виктор

Создание профиля Если у вас возникают проблемы с созданием файлов-образов или аудиодиски занимают, на ваш взгляд, слишком много места на винчестере, то вы можете создать собственный профиль.Щелкните правой кнопкой мыши на любом из пяти значков в окне, изображенном на


2.1. Построение документа

Из книги Единая система программной документации. ТРЕБОВАНИЯ К ПРОГРАММНЫМ ДОКУМЕНТАМ, ВЫПОЛНЕННЫМ ПЕЧАТНЫМ СПОСОБОМ автора Госстандарт СССР

2.1. Построение документа 2.1.1. При необходимости допускается делить документ на части. Деление на части осуществляется на уровне не ниже раздела. Каждую часть комплектуют отдельно. Всем частям присваивают обозначение документа в соответствии с ГОСТ 19.103-77.Части оформляют в


Построение зон

Из книги ArchiCAD 11 автора Днепров Александр Г

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


Построение диаграммы

Из книги Excel. Мультимедийный курс автора Мединов Олег

Построение диаграммы Для первого примера вам понадобится создать таблицу, изображенную на рис. 8.1. Рис. 8.1. Таблица замера температурыМы построим простой график изменения температуры на основе данных этой таблицы.1. Выделите заполненный диапазон в таблице.2. Перейдите на


Построение полилиний

Из книги ArchiCAD. Начали! автора Орлов Андрей Александрович

Построение полилиний Полилинией называется контур, состоящий из смежных линий и дуг, – сегментов полилинии, объединенных таким образом, что начальная точка очередного графического элемента является конечной точкой предыдущего. Вызвать инструмент построения


Построение кривых

Из книги 3ds Max 2008 для дизайна интерьеров автора Семак Рита

Построение кривых Произвольные кривые можно построить с помощью инструмента Spline (Сплайн), кнопка которого по умолчанию отсутствует в разделе Document (Документ) палитры инструментов. Чтобы активировать этот инструмент, нужно выполнить команду главного меню ArchiCAD Document ?


Построение стен

Из книги Приемы создания интерьеров различных стилей автора Тимофеев С. М.

Построение стен Геометрические методы построения стен выбираются с помощью следующих кнопок, расположенных в соответствующем разделе информационной палитры (см. рис. 5.2): – построение прямых и криволинейных стен с постоянным сечением; – построение стен с основанием в


Построение крыш

Из книги Как спроектировать современный сайт автора Вин Чои

Построение крыш ArchiCAD предоставляет проектировщику несколько методов построения скатов. Этим методам соответствуют следующие кнопки, расположенные на информационной палитре: – построение многоугольных скатов. Используется для проектирования крыш с формой скатов,


Построение объектов

Из книги AutoCAD 2008 для студента: популярный самоучитель автора Соколова Татьяна Юрьевна

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


Метод вращения профиля

Из книги Цифровая фотография от А до Я [2-е издание] автора Газаров Артур Юрьевич

Метод вращения профиля Метод вращения профиля — один из наиболее фундаментальных методов моделирования. Данный метод позволяет передавать формы любых тел вращения. В качестве примеров тел вращения привожу следующие: ваза, стакан, тарелка, балясина, ножка стола,


Проект 3. Страница профиля

Из книги Графология XXI века автора Щеголев Илья Владимирович

Проект 3. Страница профиля Следующей по порядку идет разработка страницы профиля пользователя для сайта Designery.us. По эскизу видно, что она во многом схожа с информационной страницей – на ней представлено множество разнородной информации, а не материалы одного конкретного


Построение сечений

Из книги Социальные сети. ВКонтакте, Facebook и другие… автора Леонтьев Виталий Петрович

Построение сечений Команда SECTION осуществляет построение поперечного сечения тела в виде области или неименованного блока. Поперечное сечение – это пересечение плоскости и выбранного тела (рис. 17.2). Рис. 17.2. Изображение сеченияЗапросы команды SECTION: Select objects: – выбрать


Построение кадра

Из книги автора

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


Шаг третий – формирование графометрического профиля

Из книги автора

Шаг третий – формирование графометрического профиля На сегодняшний день авторы, в принципе, сходятся в признаках почерка, включенных в круг графологического анализа. Какие-то признаки могут игнорироваться отдельными графологами и приниматься другими, но


Шаг 2. Формирование графометрического профиля

Из книги автора

Шаг 2. Формирование графометрического профиля Формирование графометрического профиля – это выбор 14 признаков, характерных для анализируемого почерка.Каждый из признаков выбирается из соответствующей группы.При нажатии кнопки выбора открывается дополнительное окно, в


Настройка профиля

Из книги автора

Настройка профиля После выбора типа аккаунта вы попадаете на следующий экран… Где вам нужно будет определиться с дизайном вашего будущего блога. Для бесплатного аккаунта выбор невелик – всего-то десяток графических шаблонов. Но главное ведь не форма, а содержание, так