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

Modified on: Wed, 30 Oct 2019 12:20:02 +0800

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

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虚拟化服务器来说非常有趣。

作者:TRiG,espenfjo

最佳答案

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

非常感谢经验(特别是关于VMware)。

  

这是真正的“因为”现代服务器。请记住,Multi-CPU / Muli-Core与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。


相关问答

添加新评论