【硬件相关】SPECpower能效评估工具

发布时间 2023-11-25 11:14:22作者: Luxf0

一、前言

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/configSELINUX=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、功率仪连接说明

由于测试机电源需与功率仪连接以此获取测试机电压、电流、功率运行状况,故功率仪连接部分需要用到插排电源盒功率仪三部分,之后测试机电源插入插排即可
注:各线缆连接完成后,电源盒需按下常规测量按钮

  • 功率仪产品铭牌

  • 电源盒产品铭牌

  • 电源线接线定义

  • 功率仪电源盒接线说明

  • 连接路径为测试机-插排-电源盒-功率仪,各线缆连接完成后,按下电源盒常规测量按钮,此时功率仪可正常检测测试机电压、电流、功率运行状况,之后功率仪通过串口或者网络将状况数据传输至压力机