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


39

之前已经问过这个问题,但是我相信世界已经发生了足够的变化,可以再次被问到。

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)

在这种情况下,irqbalance将检测到它正在NUMA系统上运行并退出。这与我们的过程监控相混淆。

我们应该考虑在此类系统上运行numad而不是irqbalance吗?

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

Answers:


27

这是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。


5
FWIW,一些10GbE手册建议禁用irqbalance以获得更好的吞吐量...
rogerdpack 2013年

8
是的,为了获得绝对最大值以匹配其基准数字,您需要以某种方式将它们固定在一起,但是这些基准通常与现实生活中的工作负荷不匹配。如果您有一个应用程序在服务器上运行,并且对延迟非常敏感,并且使用模式非常可预测,那就很好,请继续并手动配置处理器相关性。但是,如果该应用程序更多是真实世界的用例,其中情况可能会在很大范围的流程和负载中发生变化,那么我同意Red Hat技术。Linux NUMA平衡进展顺利。
GeorgeB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.