База полезных знаний

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

На системах, поддерживающих 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, превышающий обычно назначаемый уровень
Exit mobile version