Назад | Перейти на главную страницу

Есть ли еще применение irqbalance на современном оборудовании?

Этот вопрос задавали раньше, но я считаю, что мир достаточно изменился, чтобы его можно было задать снова.

Можно ли использовать irqbalance в современных системах, где у нас есть процессоры с поддержкой NUMA и разделением памяти между их ядрами?

Бег irqbalance --oneshot --debug показывает, что виртуальный гость в современной среде VMware ESXi разделяет узлы NUMA между ядрами.

# irqbalance --oneshot --debug 3
Package 0:  numa_node is 0 cpu mask is 0000000f (load 0)
    Cache domain 0:  numa_node is 0 cpu mask is 0000000f  (load 0)
            CPU number 0  numa_node is 0 (load 0)           
            CPU number 1  numa_node is 0 (load 0)
            CPU number 2  numa_node is 0 (load 0)
            CPU number 3  numa_node is 0 (load 0)

irqbalance в этом случае обнаружит, что он запущен в системе NUMA, и завершит работу. Это мешает нашему мониторингу процесса.

Стоит ли нам заняться бегом Numad вместо irqbalance на таких системах?

Это наиболее интересно для виртуализированных серверов VMware.

Вот один ответ от технического специалиста RedHat. Хотя я верю, что большинство корпоративного оборудования поддерживает NUMA. И, насколько мне известно, VMware также попытается разместить ваши виртуальные машины на одном узле NUMA, если подходит его конфигурация ЦП.

Мы будем очень признательны за опыт (особенно в отношении VMware).

Это правда «из-за» современных серверов. Имейте в виду, что Multi-CPU / Muli-Core - это не то же самое, что NUMA. Есть много многопроцессорных / ядерных систем, в которых нет NUMA.

Прежде чем читать мое объяснение ниже, прочтите документ IRQ Affinity выше, а также следующие руководства:

Руководство по настройке производительности RHEL 6

Настройка производительности с низкой задержкой для RHEL 6

Все прочитали? Отлично, тебе больше ничего не нужно от меня слышать! ;-) Но на всякий случай, вот почему они вам нужны ...

IRQbalance предотвращает резервное копирование всех запросов IRQ на одном процессоре. Я видел, как многие системы с 4+ ядрами ЦП работают медленно, потому что все процессы на разных ЦП ожидают ЦП 0 для обработки запросов IRQ сети или хранилища. ЦП 0 выглядит очень, очень загруженным, все остальные ЦП не заняты, но приложения работают очень медленно. Приложения работают медленно, потому что они ждут своих запросов ввода-вывода от ЦП 0.

IRQbalance пытается разумно сбалансировать это между всеми процессорами и, когда это возможно, приближает обработку IRQ к процессу, насколько это возможно. Это может быть одно и то же ядро, ядро ​​на одном кристалле с одним и тем же кешем или ядро ​​в одной зоне NUMA.

Вам следует использовать irqbalance, если:

Вы вручную привязываете свои приложения / IRQ к определенным ядрам по очень веской причине (низкая задержка, требования в реальном времени и т. Д.)

Виртуальные гости. На самом деле это не имеет смысла, потому что, если вы не привязываете гостя к определенным процессорам и IRQ, а также к выделенному сетевому / запоминающему оборудованию, вы, скорее всего, не увидите преимуществ, которые были бы на голом железе. Но ваш KVM / RHEV-хост ДОЛЖЕН использовать irqbalance и Numad и настроен.

Другие очень важные инструменты настройки - это настроенные профили и numad. Читайте о них! Используй их!

Numad похож на irqbalance в том, что он пытается убедиться, что процесс и его память находятся в одной зоне numa. При использовании многих ядер мы видим значительное сокращение задержек, что приводит к более плавной и надежной работе под нагрузкой.

Если вы опытны, прилежны и регулярно проводите мониторинг или имеете очень предсказуемую рабочую нагрузку, вы можете повысить производительность, вручную закрепив процессы / IRQ на процессорах. Даже в этих ситуациях irqbalance и numad очень близки к совпадению. Но если вы не уверены или ваша рабочая нагрузка непредсказуема, вам следует использовать irqbalance и numad.