【硬件相关】SPECpower能效评估工具
一、前言
1、软件说明
官网:
SERT®套件用户指南2.0.5
SPECpower介绍
SPEC基准及工具
SPECpower_ssj2008测试结果
SPECpower_ssj2008-Design_ccs
- SPEC
SPEC(the Standard Performance Evaluation Corporation)是一个由计算机硬件厂商、软件公司、大学、研究机构、系统集成商、出版发型及咨询机构组成的非营利性组织,致力于创建、维护并引导一个计算机系统及业界公认的系统指标。
- SPECpower
SPECpower是由SPEC组织开发的一种性能/功耗比基准测试工具,用于评估基于Java应用程序的服务器功耗情况
SPECpower_ssj2008利用标准Java的JDK计算整体服务器性能,并根据其11个不同的工作负载区域段的功耗得出服务器的工作负载/能耗比的测试方式。它应用specjbb作为工作负载,先实时满负荷的运行3次,求得平均值得到系统的最高性能值,然后系统以此为参照,按100%、90%、80%...10%、0%(idle)运行工作负载,其系统的利用率也依次下降,性能运行结果会以ssj_ops方式记录;同时连接系统电源的功率仪(Yokogawa WT210)会实时记录系统的功率状况(Average Active Power(W)),最后系统会把性能和功率做一个累加并相除得到性能功耗比(∑ssj_ops / ∑power =Performance to Power Ratio)
2、软件应用
SPECpower_ssj2008目前是一个比较客观的服务器能耗标准,常用于中国电信、中国移动等运营商服务器集采选型测试中,它可以很好地检测服务器产品能耗,评估后期运行电费,为IDC机房规划建设、能耗分析与控制提供科学依据
3、系统组成
常见SPECpower最小组网包括以下组件:
3.1、SUT(被测系统)
即被测服务器
3.2、CCS(数据收集和控制系统)
即控制台,用于功率数据收集及相关指令下发
3.3、Power Analyzer(功率仪)
用于统计服务器在不同运行负载下的功率数据
4、组网拓扑
- 被测系统通过电源线与功率仪连接接入外部电源,用于实时获取功率数据
- 数据收集和控制系统通过网线与被测系统连接至同一网络环境下,用于下发相关控制指令
- 数据收集和控制系统通过串口线与功率仪连接,用于获取功率仪生成的功率统计数据
2、测试配置
2.1、硬件配置
序号 | 设备类型 | 主机名 | 硬件配置 | 网络信息 | 操作系统 |
---|---|---|---|---|---|
1 | SUT(被测机) | node131 | CPU: Phytium S5000C/64 * 2 内存:256GB 系统盘:Samsung 500GB m.2 SSD * 1 数据盘:Seagate 8TB SATA HDD * 12 缓存盘:MEMBLAZE 3.2TB PCIE SSD * 2 |
172.16.5.131 | Kylin v10 |
2 | CCS(压力机) | node135 | CPU:Intel E5-2620 v2 * 2 内存:64GB 系统盘:Samsung 480GB SATA SSD * 2 |
172.16.5.135 | windows server 2012 |
3 | 功率计 | - | 横河电机WT310E | - | - |
2.2、测试工具
软件名称 | 软件版本 | 软件用途 |
---|---|---|
SPECpower | ssj2008 v1.10 | 服务器能耗测试 |
二、测试过程
1、准备阶段
1.1、SUT配置
- 安装依赖包:java-11-openjdk、numactl
yum install java-11-openjdk.aarch64 numactl -y
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
- 关闭selinux,修改
/etc/selinux/config
为SELINUX=disabled
[root@node131 ~]# cat /etc/selinux/config | grep SELINUX=
SELINUX=disabled
- 配置JAVA环境变量
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.7-0.ky10h.aarch64/
CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib.dt.jar
PATH=${JAVA_HOME}/bin:$PATH
export JAVA_HOME CLASSPATH PATH
unset _JAVA_OPTIONS
- 配置
ssj/runssj.sh
脚本
上传ssj/runssj.sh
脚本到ssj目录下,修改DIRECTOR_HOST
为压力机IP地址
#!/bin/sh
## This is an example of what a run script might look like
##
JVMS=128
## Set to TRUE if jvm Director is on this host
LOCAL_DIRECTOR=FALSE
DIRECTOR_HOST=172.16.5.135
## The SETID is used to identify the descriptive configuration properties
## that will be used for the system under test. For example, with a SETID
## of "sut", the descriptive configuration properties will be read from the
## file SPECpower_ssj_config_sut.props from the Director system.
SETID=sut
DIRECTOR_PROPFILE=SPECpower_ssj.props
## Benchmark run rules require a list of active OS services be retained for publishable runs.
## For Solaris, this can be accomplished by uncommenting the following line.
## svcs -a > services.txt
## For Red Hat Linux, this can be accomplished by uncommenting the following line.
## /sbin/runlevel > services.txt ; /sbin/chkconfig -list >> services.txt
## Other operating systems will require similar commands.
## Set java options for ssj and director
JAVAOPTIONS_SSJ="-Djava.awt.headless=true -Xms10440m -Xmx10440m"
JAVAOPTIONS_DIRECTOR="-Djava.awt.headless=true -Xms10440m -Xmx10440m"
JAVA=java
CP="ssj.jar:check.jar:lib/jcommon-1.0.16.jar:lib/jfreechart-1.0.13.jar"
date
$JAVA -version
x=1
while [ "$x" -le "$JVMS" ]; do
a=`expr $x - 1`
echo Starting instance $x
numactl -C $a -l $JAVA -cp ${CP} $JAVAOPTIONS_SSJ -XX:+UnlockExperimentalVMOptions -XX:+UseFastSerializer -DfastSerializerEscapeMode=true -XX:+UseParallelGC -XX:+AggressiveUnboxing -XX:+LazyBox -XX:+TieredCompilation org.spec.power.ssj.SpecPowerSsj -jvmid $x -numJvms $JVMS -director $DIRECTOR_HOST -setid $SETID > ssjOutput.$x &
# numactl -N $a -l $JAVA -cp ${CP} $JAVAOPTIONS_SSJ -XX:+UnlockExperimentalVMOptions -XX:CompileCommand=blackhole -XX:+UnlockDiagnosticVMOptions -XX:-UseVtableBasedCHA org.spec.power.ssj.SpecPowerSsj -jvmid $x -numJvms $JVMS -director $DIRECTOR_HOST -setid $SETID > ssjOutput.$x &
x=`expr $x + 1`
done
if [ "$LOCAL_DIRECTOR" = "TRUE" ]; then
echo Starting Director
$JAVA -cp ${CP} $JAVAOPTIONS_DIRECTOR -XX:+UnlockExperimentalVMOptions -XX:+UseFastSerializer -DfastSerializerEscapeMode=true org.spec.power.ssj.Director -propfile $DIRECTOR_PROPFILE
else
wait
fi
date
1.2、CCS配置
- 下载安装openjdk-11
镜像下载:https://mirrors.tuna.tsinghua.edu.cn/Adoptium/11/jdk/x64/windows/OpenJDK11U-jdk_x64_windows_hotspot_11.0.21_9.msi
- 修改
ssj/SPECpower_ssj.props
文件
修改input.load_level.number_warehouses
为被测机线程数
input.load_level.number_warehouses=128
- 修改
ccs/ccs.props
文件
修改ptd.pwr1.config.analyzer.model
为功率计型号
修改ptd.pwr1.config.analyzer.serial
为功率计序列号
修改ptd.pwr1.config.analyzer.connectivity
为与功率计的连接方式(串口为RS-232)
ptd.pwr1.config.analyzer.model=WT310E
ptd.pwr1.config.analyzer.serial=C3ZD04018E
ptd.pwr1.config.analyzer.connectivity=RS-232
- 修改
ptd/runpower.bat
文件
修改PTD
为配置实际使用的ptd文件
修改DEVICE
为功率计设备号(横河WT210为8 ,WT310为49)
注:当不知道设备号时,可以改为8,会自动匹配
修改DEVICE_PORT
为连接端口(查看功率计连接在哪个com口上,根据实际情况配置)
set PTD=ptd-windows-x86.exe
set DEVICE=49
set DEVICE_PORT=COM3
- 修改
ccs/ccs.prop
文件
ccs.ptd.pwr1.current_range_settings=4
- 修改
ssj/rundirector.bat
文件
set JAVAOPTIONS_DIRECTOR=-Xms4096m -Xmx4096m
2、测试阶段
2.1、环境检查
- 检查被测机上电模式,是否为负载均衡
- 检查被测机散热模式,是否对风扇转速有限制
- 被测机配置检查,检查CPU、内存、硬盘、PCIe卡状态是否正常
- 检查java版本信息
- 检查压力机与被测机网络连接正常
- 检查压力机与功率仪连接正常
- 检查功率仪状态(确保能正确显示服务器电压、电流和功率运行状况)
2.2、启动测试
安装以下测试顺序,依次启动运行程序
1、CCS端运行
- CCS端运行
ptd/runpower.bat
- CCS端运行
ptd/runtemp.bat
- CCS端运行
ssj/rundirector.bat
2、SUT端运行
- SUT端运行
ssj/runssj_ft_s5000c.sh
3、CSS端运行
- CCS端运行
ccs/runCCS.bat
2.3、查看结果
测试执行完成后,会在压力机生成Results\ssj.0180\ssj.0180-main.html
文件,重点关注每个阶段ssj_ops
和∑ssj_ops / ∑power
结果
三、Q&A
1、性能调试
不同BIOS配置、系统参数、测试脚本下,对应的能耗表现有所不同,通常情况下,为了快速验证性能调试手段,我们可以修改运行脚本,使其只跑其中1个阶段即可(默认情况下会跑完所有11个阶段阶段,耗时较长)
修改ssj/SPECpower_ssj.props
文件,增加参数input.load_level.count=1
,使其只运行第一个阶段
input.load_level.count=1
2、功率仪连接说明
由于测试机电源需与功率仪连接以此获取测试机电压、电流、功率运行状况,故功率仪连接部分需要用到插排
、电源盒
、功率仪
三部分,之后测试机电源插入插排即可
注:各线缆连接完成后,电源盒需按下常规测量
按钮
- 功率仪产品铭牌
- 电源盒产品铭牌
- 电源线接线定义
- 功率仪和电源盒接线说明
- 连接路径为
测试机-插排-电源盒-功率仪
,各线缆连接完成后,按下电源盒常规测量
按钮,此时功率仪可正常检测测试机电压、电流、功率运行状况,之后功率仪通过串口或者网络将状况数据传输至压力机