Pages Menu
Categories Menu

Опубликовано | Нет комментариев

Родственность и приоритетность прерываний

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

Более того, он позволяет использовать примитивный механизм приоритетности прерываний на основе выбора IRQL. Политика родственности (affinity policy) определяется в соответствии с данными, показанными в таблице, и настраивается с помощью значения реестра под названием InterruptPolicyValueв подразделе InterruptManagement\AffinityPolicy раздела реестра, представляющего устройство.

Благодаря этому для настройки не требуется никакого кода — администратор, чтобы повлиять на поведение устройства, может добавить это значение к разделу этого устройства. Для всего этого Microsoft предоставляет средство под названием Interrupt Affinity policy Tool, которое может быть загружено с адреса http://www.microsoft.com/whdc/system/sysperf/intpolicy.mspx.

Политика родственности IRQ.

ПолитикаЗначение
IrqPolicyMachineDefaultУстройству не требуется какая-то особая политика родственности. Windows использует политику, имеющуюся на машине по умолчанию, которая (на машинах с менее чем восемью логическими процессорами) заключается в выборе любого доступного на машине процессора
IrqPolicyAllCloseProcessorsНа NUMA-машине диспетчер устройств Plug and Play
назначает прерывание всем процессорам, близким к устройству (на том же узле). На машинах, не имеющих NUMA-доступа, эта политика аналогична политике
IrqPolicyAllProcessorsInMachine
IrqPolicyOneCloseProcessorНа NUMA-машине диспетчер устройств Plug and Play
назначает прерывание одному процессору, который ближе всех к устройству (на том же узле). На машинах, не имеющих NUMA-доступа, выбирается любой, доступный в системе процессор
IrqPolicyAllProcessorsInMachineПрерывание обрабатывается любым доступным на машине процессором
IrqPolicySpecifiedProcessorsПрерывание обрабатывается только одним из процессоров, указанных в маске родственности в значении реестра AssignmentSetOverride
IrqPolicySpreadMessagesAcrossAllProcessorsРазличные прерывания, инициируемые сообщениями,
распределяются по оптимальному набору подходящих процессоров, сообразуясь, по возможности, с топологией NUMA. Для этого требуется поддержка MSI-X
на устройстве и на платформе

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

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

Приоритеты IRQ.

ПриоритетЗначение
IrqPriorityUndefinedУстройству никакая особая приоритетность не требуется.
Оно принимает приоритеты, установленные по умолчанию (IrqPriorityNormal)
IrqPriorityLowДля устройства вполне приемлемы большие задержки, и оно должно получить более низкий уровень IRQL, чем обычно
IrqPriorityNormalУстройство ожидает среднее время задержки. Оно получает IRQL-уровень, устанавливаемый по умолчанию и связанный с его вектором прерывания
IrqPriorityHighУстройство требует как можно меньшего времени задержки. Оно получает повышенный уровень IRQL, превышающий обычно назначаемый уровень

Оставить комментарий

Ваш адрес email не будет опубликован.

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

↓