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

时间:2012-09-13 12:27:48

标签: java performance jvm benchmarking utilities

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

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

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

1 个答案:

答案 0 :(得分:14)

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

  • CPU
  • 内存
  • 操作系统
  • 如果虚拟化,则服务器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基准亮点

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

与SciMark不同,SPECjvm2008需要更长时间才能完全执行套件 - taking just over 2 hours


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

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