zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SPECJVM2008的简单结果

2023-04-18 15:45:21 时间

SPECJVM2008的简单结果


摘要

前面两天学习了SPECJVM2008简单使用. 
今天进行一下简单的数据采集.
需要说明一下SPECJVM2008貌似仅兼容JDK1.8
更新的LTS版本都不兼容,比如JDK11和JDK17

背景

我这边先测试使用 startup 的测试脚本
startup 主要是单线程进行测试的. 
其他脚本后续进行
感觉这个工具更多的是在验证 单核心JVM的处理能力. 
并且 我增加了 -Xms和-Xmx的变量参数几乎有没有发生变化
所以计划还是用一个命令查看集中不同CPU的结果

另外发现虽然会形成 html的结果, 但是在最后也会暴露一个合计分值
感觉这个分值可以作为一定的测试结论得出. 
也可以单独跑某个具体的结果进行验证. 

结果信息

CPU型号 测试结果 ops/m 值越大越好
Intel 8369HB 3.30GHz 59.1
Intel 6150 2.70GHz 49.1
Intel E5-2682v4 2.50GHz 36.57
Kunpeng 920 2.6Ghz 32.34
飞腾2500 2.1Ghz 21.87

相同架构下不同JDK版本的验证

注意 需要先切换JDK的版本 具体方法可以如下:
然后 which java
如果是 usr 目录下的可以先改下名
mv /usr/bin/java /usr/bin/java2
然后执行
export JAVA_HOME=/javahome/Openjdk_adopt/
export PATH=$PATH:/javahome/Openjdk_adopt/bin/

确认 java版本
java -version

注意 本次采用 鲲鹏, 使用 毕昇和adopt相关进行验证

Jdk的版本 测试结果
OpenJDK 1.8.181 系统自带 32.64
AdoptOpenJDK 1.8.222 32.34
BishengJDK 1.8.352 33.87
BishengJDK 11.0.18 测试失败
BishengJDK 17.0.5 测试失败

并行测试验证

鲲鹏上面部分并行测试失败了
按照单核跑的方法谁失败就把谁移除了
这里选择时间进行跑. 
-wt 指定预热的时间 10秒
-it 指定预热的时间 10秒

java -jar SPECjvm2008.jar -ikv -wt 10 -it 10 scimark.fft.small compress scimark.sor.small crypto.aes scimark.sparse.small crypto.rsa scimark.monte_carlo crypto.signverify serial mpegaudio xml.transform scimark.fft.large xml.validation scimark.lu.large scimark.sor.large scimark.sparse.large

可以根据CPU的信息数进行对比 看看并发的测试的提升比率
比如我这边鲲鹏920的测试部分结果显示:
--- --- --- --- --- --- --- --- ---

  Benchmark:   crypto.aes
  Run mode:    timed run
  Test type:   multi
  Threads:     128
  Warmup:      10s
  Iterations:  1
  Run length:  10s

Warmup (10s) begins: Tue Mar 14 14:50:49 CST 2023
Warmup (10s) ends:   Tue Mar 14 14:51:15 CST 2023
Warmup (10s) result: 1108.99 ops/m
Iteration 1 (10s) begins: Tue Mar 14 14:51:15 CST 2023
Iteration 1 (10s) ends:   Tue Mar 14 14:51:42 CST 2023
Iteration 1 (10s) result: 1070.09 ops/m

Valid run!
Score on crypto.aes: 1070.09 ops/m

对应的 我单跑的测试结果为:
  Benchmark:   startup.crypto.aes
  Run mode:    static run
  Test type:   single
  Threads:     1
  Iterations:  1
  Run length:  1 operation

Iteration 1 (1 operation) begins: Tue Mar 14 14:52:15 CST 2023
Iteration 1 (1 operation) ends:   Tue Mar 14 14:52:21 CST 2023
Iteration 1 (1 operation) result: 10.94 ops/m

比率为: 1108.99/10.94 = 101倍左右
多核心时对单核心的单核算力比率为: 101/128 = 79% 左右

Intel 6150的部分验证

java -jar SPECjvm2008.jar -ikv -wt 10 -it 10 startup.crypto.aes
单核心的测试值为: 21.57 ops/m
多核心的测试值为: 1281.46 ops/m
比率为: 1281.46/21.57 = 59.4
按照物理核心的比率  59.4/72 = 82.5%
按照虚拟线程的比率  59.4/144 = 41.25%
感觉虚拟线程提升有限. 

不同测试指标的内容

startup.helloworld 测试helloworld程序从运行开始到结束所需的时间
startup.compiler.compiler 普通java编译所需要的时间
startup.compiler.sunflow 编译sunflow图像渲染引擎所需要的时间
startup.compress 测试压缩程序,单次压缩所需的时间
startup.crypto.aes 测试AES/DES加密算法,单次加解密所需的时间输入数据长度为 100 bytes , 713KB
startup.crypto.rsa测试RSA加密算法,单次加解密需要的时间输入数据长度为 100 bytes, 16KB
startup.crypto.signverify 测试单次使用MD5withRSA, SHA1withRSA, SHA1withDSA, SHA256withRSA来签名,识别所需要的时间。输入数据长度为 1KB, 65KB, 1MB
startup.mpegaudio 单次mpeg音频解码所需的时间
startup.scimark.fft 单次快速傅立叶变换所需的时间
startup.scimark.lu 单次LU分解所需的时间
startup.scimark.monte_carlo 单次运行蒙特卡罗算法所需的时间
startup.scimark.sor 单次运行jacobi逐次超松弛迭代法所需的时间
startup.scimark.sparse 单次稀疏矩阵乘积所需的时间
startup.serial 单次通过socket传输java序列化对象到对端反序列化完成所需的时间(基于jboss serialization benchmark)
startup.sunflow 单次图片渲染处理所需的时间
startup.xml.transform 单次xml转换所需的时间,转换包括dom,sax,stream方式
startup.xml.validation 单次xml schema校验所需的时间

compiler.compiler 在规定时间内,多线程迭代测试普通java编译,得出 ops/m
compiler.sunflow 在规定时间内,多线程迭代测试sunflow图像渲染,得出 ops/m
compress 在规定时间内,多线程迭代测试压缩,得出 ops/m
crypto.aes 在规定时间内,多线程迭代测试AES/DES加解密算法,得出 ops/m
crypto.rsa 在规定时间内,多线程迭代测试RSA加解密算法,得出 ops/m
crypto.signverify 在规定时间内,多线程迭代测试使用MD5withRSA, SHA1withRSA, SHA1withDSA, SHA256withRSA来签名,识别,得出 ops/m
derby 在规定时间内,迭代测试数据库相关逻辑,包括数据库锁,BigDecimal计算等,最后得出 ops/m
mpegaudio 在规定时间内,多线程迭代mpeg音频解码,得出 ops/m
scimark.fft.large 在规定时间内,多线程迭代测试快速傅立叶变换,使用32M大数据集,最后得出 ops/m
scimark.lu.large 在规定时间内,多线程迭代测试LU分解,使用32M大数据集,最后得出 ops/m
scimark.sor.large 在规定时间内,多线程迭代测试jacobi逐次超松弛迭代法,使用32M大数据集,最后得出 ops/m
scimark.sparse.large 在规定时间内,多线程迭代测试稀疏矩阵乘积,使用32M大数据集,最后得出 ops/m
scimark.fft.small 在规定时间内,多线程迭代测试快速傅立叶变换,使用512K小数据集,最后得出 ops/m
scimark.lu.small 在规定时间内,多线程迭代测试LU分解,使用512KB小数据集,最后得出 ops/m
scimark.sor.small 在规定时间内,多线程迭代测试jacobi逐次超松弛迭代法,使用512KB小数据集,最后得出 ops/m
scimark.sparse.small 在规定时间内,多线程迭代测试稀疏矩阵乘积,使用512KB小数据集,最后得出 ops/m
scimark.monte_carlo 在规定时间内,多线程迭代测试蒙特卡罗算法,得出 ops/m
serial 在规定时间内,多线程迭代测试通过socket传输java序列化对象到对端反序列化(基于jboss serialization benchmark),得出 ops/m
sunflow 在规定时间内,利用sunflow多线程迭代测试图片渲染,得出 ops/m
xml.transform 在规定时间内,多线程迭代测试xml转换,得出 ops/m
xml.validation 在规定时间内,多线程迭代测试xml schema验证,得出 ops/m