Объединение прерываний
Для снижения количества прерываний пакеты собираются в группу, для которых генерируется только одно прерывание. Такая процедура называется слиянием прерываний.
Прерывания при получении данных, как правило, уведомляют центральный процессор о том, что пакеты помещены в очередь ввода устройства. В случае, если применяется стандартный алгоритм обработки прерываний адаптера, это может привести к отправке прерываний для каждого входящего пакета. При увеличении скорости приема пакетов перед завершением работы и освобождением прерывания драйвер завершает в прерывании обработку пакета и проверяет, пуста ли очередь входящих пакетов. Если она содержит пакеты, драйвер начинает обрабатывать несколько пакетов с помощью одного прерывания, что позволяет повысить эффективность работы системы в условиях возросшей нагрузки.
Тем не менее, некоторые адаптеры обладают дополнительными функциями, позволяющими расширить возможности управления при создании прерываний. Это часто называют объединением прерываний или изменением логики обработки прерываний, что позволяет одновременно принимать несколько пакетов и создавать одно прерывание для обработки нескольких пакетов. При получении первого пакета запускается таймер, и прерывание будет сформировано только после через n микросекунд или после получения m пакетов. Конкретные методы определяются моделью адаптера и функциями, которые драйвер предоставляет пользователю.
При малой загрузке применение функции объединения прерываний приводит к появлению задержки при приеме пакетов. Пакет будет находиться в памяти узла, но узел уведомляется об этом лишь через некоторое время. Тем не менее, при обработке большого числа пакетов эффективность работы системы остается высокой благодаря тому, что для нескольких пакетов создается одно прерывание, что позволяет снизить нагрузку на центральный процессор.
Для адаптеров AIX, поддерживающих изменение логики обработки прерываний, необходимо установить значения, соответствующие среднему уровню, чтобы снизить нагрузку, вызванную прерываниями, без значительного увеличения задержек. Если в системе запущены приложения, для работы которых необходима минимальная задержка, эти параметры необходимо отключить, либо присвоить им значения, позволяющие создавать большее количество прерываний в секунду.
Адаптеры Gigabit Ethernet поддерживают изменение логики обработки прерываний. Адаптеры Gigabit Ethernet FC 2969 и FC 2975 позволяют задавать значения задержки и счетчика буферов. При получении первого пакета адаптер запускает таймер, и прерывание создается либо после истечения заданного значения времени, либо после того, как будут задействованы n буферов хоста.
В адаптерах Gigabit EthernetFC 5700, FC 5701, FC 5706 и FC 5707 применяется метод ограничения количества прерываний. При этом прерывания создаются с определенной частотой, что позволяет объединять пакеты в зависимости от времени их получения. По умолчанию в секунду создается 10000 прерываний. Для того чтобы снизить нагрузку по обработке прерываний, можно установить минимальное значение, равное 2000. Если необходимо обеспечить малое время задержки и ответа системы, скорость создания прерываний можно установить равной 20000 в секунду. Если присвоить этому параметру значение 0, данная функция будет отключена.
Адаптеры 10 Gigabit Ethernet PCI-X (FC 5718 и 5719) поддерживают опцию слияния прерываний (rx_int_delay) с дискретностью 0.82 микросекунды. Фактическая задержка определяется умножением 0.82 на значение, заданное в параметре rx_int_delay. Эта опция выключена по умолчанию (rx_int_delay=0), потому что в тестах было обнаружено, что при больших входных скоростях слияние прерываний не увеличивает производительность.
| Тип адаптера | Код продукта | Атрибут ODM | Значение по умолчанию | Диапазон |
|---|---|---|---|---|
| 10 Gigabit Ethernet PCI-X (LR или SR) | 5718, 5719 | rx_int_delay | 0 | 0-512 |