在AIX 7上使用IBM JVM时出现大量性能损失

时间:2014-11-10 12:02:49

标签: performance java-7 aix j9 ibm-jvm

我有以下代码:

        List<Long> array = new ArrayList<>();
        for (int i = 0; i < 30000; i++)
        {
            array.add(Long.valueOf(i));
        }
        for (int j = 0; j < 30000; j++)
        {
            for (int i = 0; i < 30000 - j; i++)
            {
                array.set(i, array.get(i) + j);
            }
        }

当我编译它并在我的本地机器上的Oracle JVM下运行它(JRE 1.7_0_71,Win 7 64bit,4 Core,8GB RAM)时,运行时间大约为3,5s。

1.run: 3446ms
2.run: 3485ms
3.run: 3546ms
4.run: 3721ms
5.run: 3573ms

当我在带有IBM JVM(j9,java 7,build pap6470_27sr2-20141101_01(SR2))的AIX机器(POWER7 +,16内核,64GB RAM)上运行它时,每次运行时得到的结果几乎是9s。

1.run: 8518ms
2.run: 8548ms
3.run: 8499ms
4.run: 8486ms
5.run: 9235ms

知道哪里可以抓到?

2 个答案:

答案 0 :(得分:1)

你有3个问题。

  1. 您的处理器架构
  2. 您的操作系统选择
  3. 您的JVM提供商
  4. 其中,在这种情况下最大的影响将是IBM JRE,它的循环性能非常差。如果你正在进行文件工作,你会发现它因操作系统而变慢。这种组合有许多缓慢的原因,最好的办法是转向x86,Linux和Oracle。

答案 1 :(得分:0)

我们使用Dynatrace进行了非常详细的分析,我们发现Windows上的IBM JDK大大优于AIX上的相同IBM JDK版本。

  • 20-30%的一些现实世界的测试
  • 其他人50-100%
  • 5-6x on some benchmarkmarks

通过从JDK 1.6迁移到1.7,我们确实在AIX上获得了显着的改进。研究似乎表明V8再次有所放缓。

花费的时间似乎是实际的CPU时间。 AIX上的IBM JDK似乎正在更加努力地完成同样的工作。