irqbalance 在现代硬件上还有用吗?

esp*_*fjo 43 linux performance redhat vmware-esxi numa

这个问题以前有人问过,但我相信世界已经改变了,足以再问一次。

irqbalance 在今天的系统上有什么用处,我们有支持 NUMA 的 CPU,在它们的核心之间共享内存?

运行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)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,irqbalance 将检测到它正在 NUMA 系统上运行,然后退出。这会干扰我们的进程监控。

我们应该考虑在这样的系统上运行numad而不是 irqbalance 吗?

这对于 VMware 虚拟化服务器来说最有趣。

esp*_*fjo 30

这是 RedHat 技术人员的一个回答。虽然我相信大多数企业硬件都支持 NUMA。据我所知,只要 CPU 配置适合,VMware 也会尝试将您的 VM 安装在同一个 NUMA 节点上。

经验(特别是关于 VMware)将不胜感激。

这是真实的“因为”现代服务器。请记住,多 CPU/多核与 NUMA 不同。有许多没有 NUMA 的多 CPU/核心系统。

在阅读我下面的解释之前,请阅读上面的 IRQ Affinity 文档,以及以下指南:

RHEL 6 性能调优指南

RHEL 6 的低延迟性能调优

都读了吗?太好了,你不需要再听到我的消息了!;-) 但以防万一你不耐烦,这就是你想要它们的原因......

IRQbalance 可防止所有 IRQ 请求在单个 CPU 上进行备份。我已经看到许多具有 4 个以上 CPU 内核的系统执行缓慢,因为各种 CPU 上的所有进程都在等待 CPU 0 来处理网络或存储 IRQ 请求。CPU 0 看起来非常非常忙,所有其他 CPU 都不忙,但应用程序非常慢。应用程序很慢,因为它们正在等待来自 CPU 0 的 IO 请求。

IRQbalance 尝试在所有 CPU 中以智能方式平衡这一点,并在可能的情况下将 IRQ 处理置于尽可能接近进程的位置。这可能是同一个内核、共享同一个缓存的同一个芯片上的一个内核,或者同一个 NUMA 区域中的一个内核。

您应该使用 irqbalance 除非:

您出于一个很好的理由(低延迟、实时要求等)手动将应用程序/IRQ 固定到特定内核

虚拟客人。这实际上没有意义,因为除非您将访客固定到特定的 CPU 和 IRQ 以及专用的网络/存储硬件,否则您可能看不到在裸机上的好处。但是您的 KVM/RHEV 主机应该使用 irqbalance 和numad调整过

其他非常重要的调整工具是调整配置文件和 numad。阅读有关它们的信息!使用它们!

Numad 与 irqbalance 的相似之处在于它试图确保进程及其内存在同一个 numa 区域中。有了许多内核,我们看到延迟显着减少,从而在负载下提供更流畅的可靠性能。

如果您熟练、勤奋并定期监控或有非常可预测的工作负载,则可以通过将进程/IRQ 手动固定到 CPU 来获得更好的性能。即使在这些情况下, irqbalance 和 numad 也非常接近匹配。但是如果你不确定或者你的工作量是不可预测的,你应该使用 irqbalance 和 numad。

  • 为了获得绝对最大值以匹配他们的基准数字,是的,您需要以某种方式将事物连接在一起,但这些基准通常与现实生活中的工作负载不匹配。如果您在服务器中运行 ONE 应用程序,并以非常可预测的使用模式对延迟非常敏感,那么可以继续手动配置处理器关联性。但是,如果该应用程序更像是一个真实世界的用例,其中事情可能会因各种流程和负载而异,那么我同意 Red Hat 技术。Linux NUMA 平衡进展顺利。 (9认同)
  • FWIW,一些 10GbE 手册建议禁用 irqbalance 以获得更好的吞吐量...... (5认同)