【问题标题】:Massive performance loss when using IBM JVM on AIX 7在 AIX 7 上使用 IBM JVM 时会出现巨大的性能损失
【发布时间】:2015-01-06 17:36:03
【问题描述】:

我有以下代码:

        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);
            }
        }

当我在本地机器(JRE 1.7_0_71、Win 7 64 位、4 核、8GB RAM)上编译并在 Oracle JVM 下运行它时,我的运行时间约为 3.5 秒。

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)上运行它时,每次运行我得到的结果几乎是 9 秒。

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

知道哪里可以抓到吗?

【问题讨论】:

  • 你在不同的机器上试过了吗?你在隔离模式下试过了吗?
  • 我在几台aix机器上试了一下,结果都很差。我也对用 C 编写的代码进行了类似的测试,并且在 AIX 上速度更快。也许一些JVM选项?还是一些 AIX 设置?你到底是什么意思隔离模式?执行时几乎所有其他东西都在服务器上运行。
  • 你能把它发布到developers.ibm.com 和他们的buglist 上吗?也许他们可能已经解决了这个问题,或者存在一些相同的设置。因为我们正在为我们正在开发的产品使用 IBM JVM java7。所以我想在将来避免这个问题。在此先感谢:)
  • 我已将此问题提交到 developerworks 论坛:ibm.com/developerworks/community/forums/html/…。当我得不到答案时,我会把它作为一个 bug 提出来。
  • 根据您在问题中提供的数据,很难说“Java 在我的 AIX 机器上运行缓慢”的说法是合理的。 x86 上的软件堆栈是不同的。为什么不尝试在 x86 上比较相同版本的 J9?此外,您在 AIX 机器上拥有多少 CPU 能力也是值得怀疑的。 AIX 用户通常具有限制 CPU 时间的管理策略。即使您拥有完整的 CPU 访问权限,POWER7 的时钟范围也从 2.4 GHz 到 4.25 GHz。

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


【解决方案1】:

您有 3 个问题。

  1. 您的处理器架构
  2. 您的操作系统选择
  3. 您的 JVM 提供商

其中,在这种情况下影响最大的是 IBM JRE,它的循环性能非常差。如果你在做文件工作,你会发现由于操作系统的原因它很慢。这种组合速度慢的原因有很多,最好的选择是迁移到 x86、Linux 和 Oracle。

【讨论】:

    【解决方案2】:

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

    • 在一些实际测试中达到 20-30%
    • 50-100% 其他人
    • 在某些基准测试中为 5-6 倍

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

    花费的时间似乎是实际的 CPU 时间。 AIX 上的 IBM JDK 似乎只是更加努力地完成相同数量的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2012-10-10
      • 1970-01-01
      相关资源
      最近更新 更多