一、前言#
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=sutDIRECTOR_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=javaCP="ssj.jar:check.jar:lib/jcommon-1.0.16.jar:lib/jfreechart-1.0.13.jar"date$JAVA -versionx=1
while [ "$x" -le "$JVMS" ]; doa=`expr $x - 1` echo Starting instance $xnumactl -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`
doneif [ "$LOCAL_DIRECTOR" = "TRUE" ]; thenecho Starting Director $JAVA -cp ${CP} $JAVAOPTIONS_DIRECTOR -XX:+UnlockExperimentalVMOptions -XX:+UseFastSerializer -DfastSerializerEscapeMode=true org.spec.power.ssj.Director -propfile $DIRECTOR_PROPFILE
elsewait
fidate
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、功率儀連接說明#
由于測試機電源需與功率儀連接以此獲取測試機電壓、電流、功率運行狀況,故功率儀連接部分需要用到插排
、電源盒
、功率儀
三部分,之后測試機電源插入插排即可
注:各線纜連接完成后,電源盒需按下常規測量
按鈕
- 功率儀產品銘牌
- 電源盒產品銘牌
- 電源線接線定義
- 功率儀和電源盒接線說明
- 連接路徑為
測試機-插排-電源盒-功率儀
,各線纜連接完成后,按下電源盒常規測量
按鈕,此時功率儀可正常檢測測試機電壓、電流、功率運行狀況,之后功率儀通過串口或者網絡將狀況數據傳輸至壓力機