Настройка производительности SMP-систем с помощью спин-счетчиков

Настройка производительности SMP-систем с помощью спин-счетчиков

Эффективность методики блокирования (вхождение в раздел) и разблокирования (выход из раздела) объекта CRITICAL_SECTION объясняется тем, что тестирование объекта CS выполняется в пользовательском пространстве без использования системных вызовов ядра, как это требуется в случае мьютексов. Снятие блокировки раздела также выполняется полностью в пространстве пользователя, в отличие от функции ReleaseMutex, которая требует использования системного вызова. Объекты CS работают следующим образом:

• Поток, выполняющий функцию EnterCriticalSection (ECS), непрерывно тестирует бит блокировки объекта CS. Если обнаруживается, что бит выключен (объект разблокирован), ECS автоматически устанавливает его, выполняя эту операцию как часть инструкций тестирования, и продолжает дальнейшее выполнение уже без какого-либо ожидания. Поэтому блокирование разблокированного объекта CS осуществляется чрезвычайно эффективным образом и требует, как правило, всего лишь одной или двух машинных команд. Идентификационные данные владеющего потока, а также рекурсивный счетчик поддерживаются структурой данных объекта CS.

• Если обнаруживается, что объект CS блокирован, ECS входит в жесткий цикл (tight loop) на SMP-системах и выполняет многократное тестирование бита блокировки, не уступая процессора (разумеется, поток может быть вытеснен). Количество повторений цикла, после выполнения которых ECS прекращает дальнейшее тестирование, определяется значением спин-счетчика CS. В однопроцессорных системах тестирование прекращается немедленно; спин-счетчики используются лишь в случае SMP-систем.

• Как только ECS прекращает тестирование бита блокировки (в случае однопроцессорных систем это происходит немедленно), она входит в ядро, и поток переводится в состояние ожидания. Следовательно, блокирование объектов CS оказывается эффективным лишь в условиях низкой состязательности между потоками или когда спин-счетчик предоставляет другому процессору время для разблокирования CS.

• Функция LeaveCriticalSectibn реализуется путем выключения бита блокировки после проверки того, что вызывающий поток действительно является владельцем CS. Кроме того, ядро должно быть также уведомлено о том, существуют ли еще другие ожидающие потоки, для чего используется функции ReleaseSemaphore.

Таким образом, в случае однопроцессорных систем объекты CS эффективны тогда, когда высока вероятность их разблокирования, что иллюстрирует вариант CS программы 9.1. Преимущества SMP-систем обусловлены тем фактом, что пока ожидающий поток выполняет цикл ожидания, управляемый спин-счетчиком, объект CS может оказаться разблокированным потоком, выполняющимся на другом процессоре.

Далее будет показано, как устанавливать значения спин-счетчиков и настраивать приложения путем выбора наиболее оптимальных значений. Еще раз подчеркнем, что спин-счетчики оказываются полезными лишь в случае SMP-систем; на однопроцессорных системах они не используются.

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

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

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

Поиск с помощью языка операторов запросов поисковых систем как инструмент раскрутки блога

Из книги Блог. Создать и раскрутить автора Ющук Евгений Владимирович

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


Накрутка счетчиков

Из книги Продвижение бизнеса в Интернет. Все о PR и рекламе в сети автора Гуров Филипп


Настройка Web-приложения ASP.NET с помощью Web.config

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Настройка Web-приложения ASP.NET с помощью Web.config При изучении компоновочных блоков .NET мы с вами выяснили, что приложения клиента могут использовать XML-файл конфигурации, содержащий инструкции CLR о том, как обрабатывать связанные запросы, где искать необходимые компоновочные


Настройка спин-счетчика

Из книги Информатика: аппаратные средства персонального компьютера автора Яшин Владимир Николаевич

Настройка спин-счетчика Обычно, если в результате выполнения функции EnterCriticalSection поток обнаруживает, что объект CS уже принадлежит другому потоку, он входит в ядро и остается блокированным до тех пор, пока не освободится объект CRITICAL_SECTION, что требует определенного времени.


Установка значений спин-счетчиков

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

Установка значений спин-счетчиков Спин-счетчики CS могут устанавливаться на стадии инициализации объектов CS или динамическим путем. В первом случае функция InitializeCriticalSection заменяется функцией InitializeCriticalSectionAndSpinCount, в которой добавлен параметр счетчика. В то же время,


Глава 2 Кодирование информации с помощью систем счисления

Из книги Windows Vista. Трюки и эффекты автора Зозуля Юрий

Глава 2 Кодирование информации с помощью систем счисления 2.1. Системы счисления Для записи информации о количестве объектов материального мира используются числа, которые разделяются по определенным признакам. На рис. 2.1 представлена классификация чисел по групповому


Уйма счетчиков

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Уйма счетчиков Пользователи плохо воспринимают большое количество счетчиков статистики и разных систем баннеров. Это давным-давно не работает, более того – негативно сказывается на мнении о вашем интернет-магазине. Сегодня существует много способов получать


11.3. Установка нескольких операционных систем с помощью виртуальной машины

Из книги Недокументированные и малоизвестные возможности Windows XP автора Клименко Роман Александрович

11.3. Установка нескольких операционных систем с помощью виртуальной машины Общие сведения о виртуальных машинахДля запуска нескольких операционных систем на одном компьютере все чаще используются виртуальные машины. Виртуальная машина – это программа, которая


8.3.1. Настройка с помощью Network Manager

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

8.3.1. Настройка с помощью Network Manager Для настройки соединения с использованием Network Manager выберите команду меню Система | Параметры | Сетевые соединения, перейдите на вкладку DSL и нажмите кнопку Добавить. В открывшемся окне (рис. 8.2) введите имя пользователя и его пароль. Если у


8.3.2. Настройка с помощью конфигуратора pppoeconf

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

8.3.2. Настройка с помощью конфигуратора pppoeconf Чуть ранее я упомянул, что для настройки DSL-соединения применяется также конфигуратор pppoeconf. Этот конфигуратор работает в терминале, что позволяет использовать его, даже если графический интерфейс недоступен (или отключен,


Добавление счетчиков

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

Добавление счетчиков Для примера попробуем добавить счетчики производительности. Для начала удалите все используемые в данный момент счетчики. Для этого нужно выделить счетчик в области счетчиков и нажать клавишу Delete. После этого вызовите контекстное меню в любой из


Журналы счетчиков

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

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


Стили счетчиков

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

Стили счетчиков По умолчанию браузер отображает значение счетчика как число в десятичном формате, но вы можете использовать и другие стили отображения счетчика, доступные через свойство list-style-type. Тогда описание счетчика будет выглядеть так:counter(«название счетчика»,