Есть ли еще возможность использовать 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 вместо несбалансированности в таких системах?
Это в основном интересно для виртуализированных серверов VMware.
1 ответ
Вот один ответ от техника из 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.