java numa_NUMA架构下的Java应用小探

在基于最新的英特尔 至强 5500 系列处理器的服务器中, NUMA架构被引入了到了服务器系统中。它对Java应用有什么影响呢?这就是本文讨论的内容。

对于用C/C++等开发的程序来说,因为程序直接决定了内存的访问模式,对编程者而言,就需要对对NUMA架构有所了解,以最大的利用NUMA带来的优势,避免反被它伤害。但对Java应用来说,因为代码不会直接执行,一定是通过JVM进行,所以很大程度上Java应用的性能就取决于JVM了。这里就对针对JVM在NUMA下的性能表现作了一些测试。

在基于最新的英特尔 至强 5500 系列处理器的服务器中,对SUN和ORACLE的JVM分别做了测试。采用了一个标准的Java应用,测试了性能表现、Heap size、GC等。因为本文无意对SUN和ORACLE的JVM的性能进行比较,故下面没有标出具体使用的JVM。

先是对不同内存大小的Heapsize scale情况下,测试Java性能:

总的说,发现NUMA的打开与否,对Java应用的性能关联不大。从某种程度上,这可以认为反映出JVM还没有对NUMA特性进行充分的利用。后面就查了资料,发现的确如此:最新的JVM中有针对NUMA的优化,但我用的版本中没有。限于精力,我也没有使用最新的JVM进行重新测试。建议大家如果在最新的5500上运行Java应用,采用最新的JVM版本性能会比较好。

接着测试了不同的GC策略与NUMA的关系:

这里也是发现不同的GC的策略下,NUMA对Java性能影响不大,与我们的预期相同。

最后测试了大页面(Large Page)优化条件下NUMA的影响:

发现Large Page下,对于我们测试的Java应用来说,打开NUMA开关可以提升性能。

小结一下,在支持NUMA的5500及后续平台上,强烈建议大家使用最新的JVM!我有时间也会多做测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值