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 文档,以及以下指南:
都读了吗?太好了,你不需要再听到我的消息了!;-) 但以防万一你不耐烦,这就是你想要它们的原因......
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。
| 归档时间: |
|
| 查看次数: |
57576 次 |
| 最近记录: |