Настройка производительности 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-систем; на однопроцессорных системах они не используются.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Стили счетчиков
Стили счетчиков По умолчанию браузер отображает значение счетчика как число в десятичном формате, но вы можете использовать и другие стили отображения счетчика, доступные через свойство list-style-type. Тогда описание счетчика будет выглядеть так:counter(«название счетчика»,
Настройка спин-счетчика
Настройка спин-счетчика Обычно, если в результате выполнения функции EnterCriticalSection поток обнаруживает, что объект CS уже принадлежит другому потоку, он входит в ядро и остается блокированным до тех пор, пока не освободится объект CRITICAL_SECTION, что требует определенного времени.
Установка значений спин-счетчиков
Установка значений спин-счетчиков Спин-счетчики CS могут устанавливаться на стадии инициализации объектов CS или динамическим путем. В первом случае функция InitializeCriticalSection заменяется функцией InitializeCriticalSectionAndSpinCount, в которой добавлен параметр счетчика. В то же время,
11.3. Установка нескольких операционных систем с помощью виртуальной машины
11.3. Установка нескольких операционных систем с помощью виртуальной машины Общие сведения о виртуальных машинахДля запуска нескольких операционных систем на одном компьютере все чаще используются виртуальные машины. Виртуальная машина – это программа, которая
Поиск с помощью языка операторов запросов поисковых систем как инструмент раскрутки блога
Поиск с помощью языка операторов запросов поисковых систем как инструмент раскрутки блога Чтобы блог пользовался успехом у читателей, он должен содержать полезные для них материалы – об этом мы уже говорили. Если вы выбрали в качестве контента не художественные
Добавление счетчиков
Добавление счетчиков Для примера попробуем добавить счетчики производительности. Для начала удалите все используемые в данный момент счетчики. Для этого нужно выделить счетчик в области счетчиков и нажать клавишу Delete. После этого вызовите контекстное меню в любой из
Журналы счетчиков
Журналы счетчиков Именно с помощью журналов счетчиков решается проблема просмотра счетчиков в реальном времени. С помощью данных журналов можно определить время, начиная с которого компьютер будет записывать показания счетчиков в журнал, а также время, после которого
Уйма счетчиков
Уйма счетчиков Пользователи плохо воспринимают большое количество счетчиков статистики и разных систем баннеров. Это давным-давно не работает, более того – негативно сказывается на мнении о вашем интернет-магазине. Сегодня существует много способов получать
Настройка Web-приложения ASP.NET с помощью Web.config
Настройка Web-приложения ASP.NET с помощью Web.config При изучении компоновочных блоков .NET мы с вами выяснили, что приложения клиента могут использовать XML-файл конфигурации, содержащий инструкции CLR о том, как обрабатывать связанные запросы, где искать необходимые компоновочные
8.3.1. Настройка с помощью Network Manager
8.3.1. Настройка с помощью Network Manager Для настройки соединения с использованием Network Manager выберите команду меню Система | Параметры | Сетевые соединения, перейдите на вкладку DSL и нажмите кнопку Добавить. В открывшемся окне (рис. 8.2) введите имя пользователя и его пароль. Если у
8.3.2. Настройка с помощью конфигуратора pppoeconf
8.3.2. Настройка с помощью конфигуратора pppoeconf Чуть ранее я упомянул, что для настройки DSL-соединения применяется также конфигуратор pppoeconf. Этот конфигуратор работает в терминале, что позволяет использовать его, даже если графический интерфейс недоступен (или отключен,
Глава 2 Кодирование информации с помощью систем счисления
Глава 2 Кодирование информации с помощью систем счисления 2.1. Системы счисления Для записи информации о количестве объектов материального мира используются числа, которые разделяются по определенным признакам. На рис. 2.1 представлена классификация чисел по групповому