部署低延迟 Java 应用程序的最佳操作系统?

我们有一个用Java编写的低延迟交易系统(馈送处理程序,分析,订单输入)。它广泛使用TCP和UDP,它不使用Infiniband或其他非标准网络。

任何人都可以评论各种操作系统或操作系统配置的权衡来部署此系统吗?虽然吞吐量对于跟上现代价格反馈显然很重要,但延迟是我们的首要任务。

Solaris似乎是一个自然的候选者,因为他们创建了Java。我应该使用 Sparc 还是 x64 处理器?

我听说过RHEL和SLART的好东西,这些是正确的Linux版本,可以在我们的基准测试中使用。

有没有人针对上述操作系统测试过Windows?还是假设它跟不上?

我想把Java与C++争论留给另一个线程。


答案 1

供应商喜欢这种基准测试。你有代码,对吧?

IBM,Sun / Oracle,HP都希望在他们的装备上运行您的应用程序,以展示他们的优势。

让他们这样做。如果您有代码,请让供应商在他们的装备上运行演示,以显示哪种最适合您的需求。

它简单,无痛,免费且符合事实。最终决定将是简单而明显的。您将知道如何安装和调整以最大限度地提高性能。


我讨厌做的是在编写代码之前预测这种事情。在我们完成确定所有用例之前,太多的客户要求提供硬件和操作系统建议。要求这种认识是简单的疯狂。

但是你有代码。您可以生成执行代码的测试用例。太完美了。


答案 2

对于交易环境,除了低延迟之外,您可能还关心一致性和延迟,因此专注于尽可能减少GC暂停的影响可能会比不同的操作系统选择给您带来更多的好处。

  • 最近版本的 Suns Hotspot VM 中的 G1 垃圾回收器改进了停止世界停顿很多,类似于 JRockit VM
  • 但是,为了保证真正的性能,Azul Systems在其Java设备上的Hotspot编译器版本提供了最低的保证暂停 - 并且还可以扩展到巨大的大小 - 100个GB堆栈和100个内核。
  • 我会打折Java Realtime - 虽然你会得到响应保证,但你会牺牲吞吐量来获得这些保证。

但是,如果您计划在每一微秒都很重要的环境中使用您的交易系统,那么您真的将不得不忍受从当前一代VM中获得的缺乏一致性 - 它们(实时除外)都不能保证低微秒GC暂停。当然,在这个级别,您将遇到与操作系统活动相同的问题(进程抢占,中断处理,页面错误等)。在这种情况下,Linux的实时变体之一将为您提供帮助。


推荐