问题 用于对机器的CPU,内存,磁盘和网络I / O性能进行基准测试的Java实用程序是什么?


我需要解释为什么我的应用程序在远程位置表现不佳。安装探查器对我来说不方便。我怀疑机器配置不佳,但我需要一些简单的方法来显示标准应用程序在他们的机器上受到影响,从而使我的应用程序无效并将焦点转移到他们的系统管理员身上。

理想情况下,我建议他们安装一个简单的Java应用程序来测试主机环境的性能。如果它可以返回CPU,磁盘,网络等的一些规范,它们将是完美的。

我希望在网上找到这样的东西,但到目前为止我在搜索中都没有成功。


10254
2017-09-13 12:27


起源

你认为可能导致什么问题?您的应用程序有很多数据?它有花哨的图形?连接数据库?您可能只想测试您认为导致问题的原因 - Michael Laffargue
什么表现不佳?它是否在慢慢地访问数据库,是否需要很长时间才能启动,在屏幕上绘图。它总是表现不好还是性能不一致? - Peter Lawrey
您可以随时使用,作为穷人的探查器进行一些线程转储 jstack 要么 kill -3。 - Frank Pavageau
IMO这将是一个更好的计划,看看什么运行缓慢 你的申请。使用一些随机程序来证明系统管理员无能的最佳案例是,他们说“这没有任何证据”。最糟糕的情况是你选择的应用程序实际运行良好,你看起来像一个无能的人。谁知道,您的应用可能确实存在问题。 - parsifal
我认为问题在于目标平台是Sun T5240架构,而我的应用程序更喜欢较少的快速“处理器”而不是那么多慢速处理器。不过,你们都会提出好点。日志似乎表明一切都很慢,但是,也许有一个共同的根本原因。 - Paul Jackson


答案:


至于一个“简单的Java应用程序”,我之前做过类似的事情。我的工作重点是分析Java VM(虚拟机 - “JVM”),而不是测试特定Java应用程序的性能。重点是测试托管操作系统的功能 - 行使:

  • 中央处理器
  • 记忆
  • 操作系统
  • 如果虚拟化,则服务器VM(不是JVM)本身 - 包括上述所有虚拟化和物理组件。
  • 很大程度上忽略了外部因素,例如磁盘和网络。

我看到的解决方案包括:

SciMark是一个复合Java基准测试,用于测量科学和工程应用中出现的数字代码的性能。   它由五个计算内核组成:FFT,Gauss-Seidel   松弛,稀疏矩阵乘法,蒙特卡罗积分和密集   LU分解。

选择这些内核以指示底层JVM / JIT在使用这些类型的应用程序上的执行情况   算法。问题规模有目的地选择为小   为了隔离内存层次结构的影响并专注于内部   JVM / JIT和CPU问题。更大版本的基准测试(SciMark 2.0   LARGE)解决了带有超出缓存的内存子系统的性能问题   问题规模。

它测量了几个计算内核并报告了大约Mflops的综合得​​分(每个数百万的浮点运算)   第二)。

虽然有点过时(2004年),但SciMark看起来仍然非常有效。

每次测试运行大约需要30秒才能执行。

SPECjvm2008(Java虚拟机基准测试)是一个基准测试套件   测量Java运行时环境(JRE)的性能,   包含几个现实生活中的应用程序和基准   核心java功能。套房侧重于表演   JRE执行单个应用程序;它反映了它的表现   硬件处理器和内存子系统,但依赖性较低   文件I / O并且不包括跨机器的网络I / O. SPECjvm2008   工作量模仿各种常见的通用应用程序   计算。这些特征反映了这一意图   基准测试将适用于测量基本Java性能   各种客户端和服务器系统。

SPEC还发现Java重要的用户体验和套件   因此包括启动基准并具有所需的运行类别   称为base,必须在没有任何JVM调优的情况下运行   提高开箱即用的性能。

SPECjvm2008基准亮点

  • 利用现实生活中的应用程序(如德比,sunflow和javac)和   以区域为中心的基准测试(如xml,序列化,加密和   scimark)。
  • 还可以测量操作系统的性能   执行JRE的上下文中的硬件。

与SciMark不同,SPECjvm2008需要更长时间才能完全执行套件 - 只花了2个多小时


为了测试网络,我会使用类似的东西 的iperf,适用于Linux / Windows /等。

为了测试磁盘性能,有一个完整的科学背后,并且不知道你正在使用什么操作系统,我不能给你一个具体的答案。但是,如果您正在使用Linux,我会审核 这个


14
2017-09-13 12:37