【问题标题】:How does NUMA architecture affect the performance of ActivePivot?NUMA 架构如何影响 ActivePivot 的性能?
【发布时间】:2012-10-21 01:25:33
【问题描述】:

我们正在将 ActivePivot 应用程序迁移到新服务器(4 插槽 Intel Xeon,512GB 内存)。部署后,我们启动了我们的应用程序基准测试(这是大型 OLAP 查询与实时事务并发的混合)。测得的性能几乎比我们以前的服务器慢了两倍,以前的服务器具有相似的处理器,但内核数量减少了两倍,内存减少了两倍。

我们调查了两台服务器之间的差异,似乎大的一台具有 NUMA 架构(非统一内存访问)。每个 CPU 插槽在物理上接近内存的 1/4,但距离其余部分更远......运行我们的应用程序的 JVM 分配了一个大的全局堆,每个 NUMA 节点上都有该堆的随机部分。我们的分析是内存访问模式非常随机,CPU 内核经常浪费时间访问远程内存。

我们正在收集有关在 NUMA 服务器上利用 ActivePivot 的更多反馈。我们可以配置 ActivePivot 多维数据集或线程池、更改查询、配置操作系统吗?

【问题讨论】:

    标签: java olap numa activepivot


    【解决方案1】:

    Peter 描述了当今可用于降低 NUMA 架构对性能影响的通用 JVM 选项。为了简短起见,支持 NUMA 的 JVM 将相对于 NUMA 节点对堆进行分区,并且当线程创建新对象时,该对象被分配到运行该线程的核心的 NUMA 节点中(如果同一线程稍后使用它,对象将在本地内存中)。此外,在压缩堆时,支持 NUMA 的 JVM 会避免在节点之间移动大数据块(并减少 stop-the-world 事件的长度)。

    因此,对于任何 NUMA 硬件和任何 Java 应用程序,-XX:+UseNUMA 选项可能应该被启用。

    但是对于 ActivePivot 并没有多大帮助:ActivePivot 是一个内存数据库。有实时更新,但大部分数据在应用程序的生命周期内驻留在主内存中。无论 JVM 选项如何,数据都将在 NUMA 节点之间拆分,执行查询的线程将随机访问内存。知道 ActivePivot 查询引擎的大多数部分的运行速度与可以获取内存的速度一样快,NUMA 的影响尤其明显。

    那么,如何在 NUMA 硬件上充分利用 ActivePivot 解决方案?

    当 ActivePivot 应用程序只使用一小部分资源时,有一个简单的解决方案(我们发现在同一台服务器上运行多个 ActivePivot 解决方案时经常出现这种情况)。例如,一个 ActivePivot 解决方案仅使用 64 个内核中的 16 个内核,以及一个 TeraByte 中的 256GB。在这种情况下,您可以将 JVM 进程本身限制为 NUMA 节点。

    在 Linux 上,您可以在 JVM 启动前加上以下选项 (http://linux.die.net/man/8/numactl):

    numactl --cpunodebind=xxx
    

    如果整个服务器专用于一个 ActivePivot 解决方案,您可以利用 ActivePivot 分布式架构对数据进行分区。如果有 4 个 NUMA 节点,则启动 4 个 JVM,托管 4 个 ActivePivot 节点,每个节点都绑定到其 NUMA 节点。通过这种部署,查询分布在节点之间,每个节点将在正确的 NUMA 节点内以最大性能执行其工作份额。

    【讨论】:

    • 使用 numactl 时,我建议在 --cpunodebind=nodes, -N nodes 之外使用开关 --membind=nodes, -m nodes 以限制该节点的内存。否则,通常会在外部节点上分配一小部分内存(即使使用-XX:+UseNUMA
    【解决方案2】:

    您可以尝试使用-XX:+UseNUMA

    http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

    如果这没有产生您期望的结果,您可能必须使用taskset 将 JVM 锁定到特定套接字,并有效地将服务器分成四台机器,每台机器有一个 JVM。

    我观察到具有更多套接字的机器对其内存(甚至是本地内存)的访问速度较慢,因此始终可以为您提供所需的性能提升。

    【讨论】:

    • 可以澄清一下:>> 我观察到具有更多套接字的机器对其内存(甚至是本地内存)的访问速度较慢,并且始终为您提供所需的性能提升。访问速度较慢如何提高性能?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多