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

39

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

Имеет ли 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 вместо несбалансированности в таких системах?

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

espenfjo
источник

Ответы:

27

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

Опыт (особенно в отношении VMware) будет принята с благодарностью.

Это верно "потому что" современных серверов. Имейте в виду, что Multi-CPU / Muli-Core - это не то же самое, что NUMA. Существует много систем с несколькими процессорами и ядрами, которые не имеют NUMA.

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

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

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

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

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

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

Вы должны использовать irqbalance, если:

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

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

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

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

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

espenfjo
источник
5
Кстати, некоторые руководства по 10GbE рекомендуют отключать несбалансированность для повышения пропускной способности ...
rogerdpack
8
Чтобы получить абсолютный максимум, соответствующий их количественным показателям, да, вам нужно определенным образом соединить все вместе, но эти контрольные показатели, как правило, не соответствуют реальной рабочей нагрузке. Если на сервере запущено ОДНО приложение с чрезвычайно чувствительным к задержке требованием при очень предсказуемой схеме использования, хорошо, продолжайте и вручную настраивайте привязку процессора к вещам. Но если приложение больше похоже на реальный случай использования, когда вещи могут варьироваться в зависимости от широкого спектра процессов и нагрузок, я согласен с технологией Red Hat. Балансировка Linux NUMA идет хорошо.
GeorgeB