正文
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