【问题标题】:Comparison tests of OpenJ9 and HostSpot G1 for elastic vertical scaling [closed]OpenJ9 和 HostSpot G1 的弹性垂直缩放比较测试 [关闭]
【发布时间】:2019-04-17 08:41:52
【问题描述】:

在容器化环境中,我们在使用 java 时会产生巨大的资源浪费。在垂直扩展方面,我们需要一个优化的 JVM。 OpenJ9和HotSpot G1的垂直缩放和内存使用是否有任何公开的比较测试

【问题讨论】:

  • Jelastic 发起并赞助了 OpenJDK 补丁的开发,该补丁提高了弹性并支持依赖 G1 垃圾收集器的 Java 应用程序的全自动垂直扩展。这项工作为堆大小引入了新的命令行选项,允许 JVM 垂直扩展其内存资源。特别是,建议的解决方案是及时将未使用的已提交内存返回给操作系统。提供的解决方案已在 OpenJDK 12 中实现。
  • 这项改进将允许 Java 用户节省大量资源和金钱,并帮助云提供商更好地利用他们的基础设施并引入更灵活的基于实际使用量的计费模型,而不是在 VM 上限制。在此处阅读更多信息jelastic.com/blog/elastic-jvm-vertical-scaling
  • 为什么不两者都试一下,看看哪一个在性能、稳定性、安全性、支持等方面最适合你们?后者通常比单纯的性能更重要。
  • Eclipse OpenJ9 是一个低内存占用的 JVM,所以我希望它比 Hotspot 更好地垂直扩展。供参考:eclipse.org/openj9/oj9_performance.htmlblog.openj9.org/2018/06/15/…medium.com/criciumadev/…

标签: java kubernetes jelastic


【解决方案1】:

OpenJDK 12 在垂直扩展方面是否优于 J9?

在这个阶段很难回答,因为没有公开的比较测试。现在两个 JVM 在弹性方面看起来都不错。

存在一个与已提交 RAM 的监控机制相关的已知问题。

使用 OpenJ9 you have to do it on OS level

To test vertical scaling with respect to memory in OpenJ9 I recommend to monitor the resident-set-size (RSS) of a Java process with a script like this:

while true; do
   sleep 1
   ps -orss --no-headers --pid $1
done

虽然 OpenJDK 允许 monitor the committed RAM inside a code running in JVM,但您也可以使用 VisualVM 或其他标准工具。

【讨论】:

  • OpenJ9 也支持ManagementFactory.getMemoryMXBean()。需要注意的是,RSS 是进程的总提交内存,并且报告的数字与 MXBean 非常不同,因为 bean 只报告与 GC 堆相关的内存
  • @DanHeidinga,据我所知,根据提到的 github 对话,我们从 getMemoryMXBean() 获得的已提交 RAM 将高于实际值。我错了吗?
  • 已提交到 gc 堆的地址空间量由 MXBean 报告。这与正在使用的物理内存 (RSS) 量不同。我希望 RSS 对于所有 JVM 都比 MXBean 更准确
猜你喜欢
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多