服务器PoC测试工具集合(一)
- 系统运维
- 2024-05-24
- 259热度
- 0评论
简介
手册主要介绍服务器POC测试过程中所用测试工具,主要包括CPU,内存、磁盘性能和网络几方面测试。本文主要介绍CPU和内存测试工具使用和调试,所有的bios参数调优,以联想SR650为例
CPU测试工具
BIOS设置
bios设置 ,确保要求服务器处于超频稳定状态下进行,除非用户有特殊要求.
BIOS Setting
禁止selinux和防火墙
systemctl stop firewalld
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
cpupower 设置
cpupower frequency-set -g performance
tune模式设置
tuned-adm profile throughput-performance
重启系统
reboot
unixbench
安装步骤
1、yum install perl gcc
2、tar -xzvf byte-unixbench-5.1.3.tar.gz
3、cd Unixbench-5.1.2 执./Run
使用方法
./Run -q -c 1 -c 32
对于多cpu系统的性能测试策略,需要统计单任务,多任务及其并行的性能增强。以32核cpu的PC为例,需要测试两次,32核CPU就是要并行执行32个copies
c后的参数表示参与测试的CPU核数 表示执行两次,第一次单个copies, 第二次32个copies的测试任务
显示结果分析及相关项说明
8 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 33444509.7 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2702.2 MWIPS (10.0 s, 7 samples)
Execl Throughput 4647.2 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1131210.2 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 306139.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 3477545.6 KBps (30.0 s, 2 samples)
Pipe Throughput 2197189.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 159896.2 lps (10.0 s, 7 samples)
Process Creation 11912.9 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 12619.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 5086.8 lpm (60.0 s, 2 samples)
System Call Overhead 3928781.6 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 33444509.7 2865.9
Double-Precision Whetstone 55.0 2702.2 491.3
Execl Throughput 43.0 4647.2 1080.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 1131210.2 2856.6
File Copy 256 bufsize 500 maxblocks 1655.0 306139.4 1849.8
File Copy 4096 bufsize 8000 maxblocks 5800.0 3477545.6 5995.8
Pipe Throughput 12440.0 2197189.4 1766.2
Pipe-based Context Switching 4000.0 159896.2 399.7
Process Creation 126.0 11912.9 945.5
Shell Scripts (1 concurrent) 42.4 12619.4 2976.3
Shell Scripts (8 concurrent) 6.0 5086.8 8478.1
System Call Overhead 15000.0 3928781.6 2619.2
System Benchmarks Index Score 1893.7
Benchmark Run: Mon Apr 16 2018 11:55:17 - 12:23:39
8 CPUs in system; running 8 parallel copies of tests
Dhrystone 2 using register variables 263391605.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 21623.4 MWIPS (10.0 s, 7 samples)
Execl Throughput 32726.1 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1117467.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 304340.2 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 3570594.5 KBps (30.0 s, 2 samples)
Pipe Throughput 17497194.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 1783119.9 lps (10.0 s, 7 samples)
Process Creation 58313.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 60188.9 lpm (60.2 s, 2 samples)
Shell Scripts (8 concurrent) 8246.3 lpm (60.2 s, 2 samples)
System Call Overhead 6898602.7 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 263391605.6 22570.0
Double-Precision Whetstone 55.0 21623.4 3931.5
Execl Throughput 43.0 32726.1 7610.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 1117467.1 2821.9
File Copy 256 bufsize 500 maxblocks 1655.0 304340.2 1838.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 3570594.5 6156.2
Pipe Throughput 12440.0 17497194.7 14065.3
Pipe-based Context Switching 4000.0 1783119.9 4457.8
Process Creation 126.0 58313.8 4628.1
Shell Scripts (1 concurrent) 42.4 60188.9 14195.5
Shell Scripts (8 concurrent) 6.0 8246.3 13743.8
System Call Overhead 15000.0 6898602.7 4599.1
System Benchmarks Index Score 6493.2
Dhrystone测试
测试聚焦在字符串处理,没有浮点运算操作。这个测试用于测试链接器编译、代码优化、内存缓存、等待状态、整数数据类型等,硬件和软件设计都会非常大的影响测试结果。
Whetstone 测试
这项测试项目用于测试浮点运算效率和速度。这项测试项目包含若干个科学计算的典型性能模块,包含大量的C语言函数,sin cos sqrt exp和日志以及使用整数和浮点的数学操作。包含数组访问、条件分支和过程调用。
Execl Throughput(execl 吞吐,这里的execl是类unix系统非常重要的函数,非办公软件的execl)测试
这项测试测试每秒execl函数调用次数。execl是 exec函数家族的一部分,使用新的图形处理代替当前的图形处理。有许多命令和前端的execve()函数命令非常相似。
File Copy测试
这项测试衡量文件数据从一个文件被传输到另外一个,使用大量的缓存。包括文件的读、写、复制测试,测试指标是一定时间内(默认是10秒)被重写、读、复制的字符数量。
Pipe Throughput(管道吞吐)测试
pipe是简单的进程之间的通讯。管道吞吐测试是测试在一秒钟一个进程写512比特到一个管道中并且读回来的次数。管道吞吐测试和实际编程有差距。
Pipe-based Context Switching (基于管道的上下文交互)测试
这项测试衡量两个进程通过管道交换和整数倍的增加吞吐的次数。基于管道的上下文切换和真实程序很类似。测试程序产生一个双向管道通讯的子线程。
Process Creation(进程创建)测试
这项测试衡量一个进程能产生子线程并且立即退出的次数。新进程真的创建进程阻塞和内存占用,所以测试程序直接使用内存带宽。这项测试用于典型的比较大量的操作系统进程创建操作。
Shell Scripts测试
shell脚本测试用于衡量在一分钟内,一个进程可以启动并停止shell脚本的次数,通常会测试1,2, 3, 4, 8 个shell脚本的共同拷贝,shell脚本是一套转化数据文件的脚本。
System Call Overhead (系统调用消耗)测试
这项测试衡量进入和离开系统内核的消耗,例如,系统调用的消耗。程序简单重复的执行getpid调用(返回调用的进程id)。消耗的指标是调用进入和离开内核的执行时间。
Graphical Tests(图形)测试
由”ubgears”程序组成,测试非常粗的2D和3D图形性能,尤其是3D测试非常有限。测试结果和硬件
SpecCPU
安装步骤
挂载cpu2006-1.2.iso
mount -o loop cpu2006.iso /mnt
运行安装脚步进行安装
本次测试是把/mnt 内容拷贝到/root/tools/jdtool/spec\_cpu2006-avx-jd\_test/source\_tools 目录下
cp /mnt/speccpu2006-1.2 /root/tools/jdtool/spec\_cpu2006-avx-jd\_test/source\_tools
cd /root/tools/jdtool/spec\_cpu2006-avx-jd\_test/source\_tools/speccpu2006-1.2
./install.sh
提示安装完成
请输入图片描述验证是否安装完成:
image.png找出shrc文件位置
image.pngsource /root/tools/jdtool/spec_cpu2006-avx-jd_test/source_tools/speccpu2006-1.2/shrc
runspec –help
如果有选项的提示,则表示安装完成。
Config编辑更改
cp /root/tools/jdtool/spec\_cpu2006-avx-jd\_test/source\_tools/speccpu2006-1.2/config/Example-linux64-
amd64-gcc43+.cfg /root/tools/jdtool/spec\_cpu2006-avx-jd\_test/source\_tools/speccpu2006-1.2/config
/myspec.cfg
lscpu 查看CPU 信息
Cpu信息在config文件配置中需要用到
image.png编辑myspec.cfg
ignore\_errors = yes
tune = base
ext = loongson.3a2000
output\_format = asc, Screen, html
reportable = 0
teeout = yes
teerunout = yes
hw\_avail = Feb-2015
sw\_avail = Feb-2015
license\_num =
company\_name = Loongson
prepared\_by = Loongson
tester\_name = isoft
test\_date = July-2016
verbose = 9
default=default=default=default:
Compiler selection
makeflags = -j 4
CC = mips64el-loongson-linux-gcc
CXX = mips64el-loongson-linux-g++
FC = mips64el-loongson-linux-gfortran
HW config
hw\_cpu\_name = Loongson
hw\_model = 3A2000
hw\_cpu\_mhz = 1000
hw\_fpu = Integrated
hw\_nchips = 1
hw\_ncores = 4
hw\_ncoresperchip= 4
hw\_nthreads = 4
hw\_ncpuorder = 1
hw\_parallel = yes
hw\_pcache = 64KB I + 64KB D
hw\_scache = 4096KB(I + D)
hw\_memory = 2 x 4GB DDR1066
hw\_vendor = Loongson
SW config
sw\_os = iSoft
sw\_file = ext4
sw\_state = runlevel 3
sw\_compiler = gcc , g++ & gfortran 4.8
Optimization
Base is low opt
default=default=default=default:
For this data model, -m32 needs to be here, as one of the lines below
OPTIMIZE = -static -march=loongson3a
PORTABILITY =
COPTIMIZE = -flto -Ofast
CXXOPTIMIZE = -flto -Ofast
FOPTIMIZE = -flto -Ofast
notes0100= C/C++ base flags: -flto -Ofast
notes0110= Fortran base flags: -flto -Ofast
32/64 bit Portability Flags - all
default=base=default=default:
notes25=
default=peak=default=default:
notes25=
Portability Flags - INT
400.perlbench=default=default=default:
notes35 = 400.perlbench: -DSPEC\_CPU\_LINUX\_IA32
CPORTABILITY= -DSPEC\_CPU\_LINUX\_IA32 -fno-strict-aliasing
\#notes35 = 400.perlbench: -DSPEC\_CPU\_LINUX
\#CPORTABILITY= -DSPEC\_CPU\_LINUX -DSPEC\_CPU\_LITTLEENDIAN
\#COPTIMIZE = -O2
使用方法
./runspec -c myspec.cfg -i ref -n 3 -I -r cpu\_cores all
启动过程中报错
image.png解决办法:安装gcc-gfortran.x86_64和gcc-c++ 依赖包
[root@centos1 speccpu]# yum install gcc-gfortran.x86\_64
[root@centos1 speccpu]# yum install gcc-c++
报错
ERROR: Run for 416.gamess test base gcc43-64bit default FAILED (exit code 1)
解决办法:更改配置myspec.cfg
COPTIMIZE = -O2 -fno-strict-aliasing
CXXOPTIMIZE = -O2 -fno-strict-aliasing
FOPTIMIZE = -O2 -fno-strict-aliasing
改为:
COPTIMIZE = -O0 -fno-strict-aliasing
CXXOPTIMIZE = -O0 -fno-strict-aliasing
FOPTIMIZE = -O0 -fno-strict-aliasing
image.png解决办法
Yum install numactl
参数说明:
runspec: 表示执行SPEC CPU2000基准程序开始进行测试;
-c:读取测试配置文件;
myspec.cfg: 位于SPEC CPU2000安装目录的config目录下;
-i:输入测试数据集的大小,ref代表最大测试数据集,test代表最小测试数据集;
-n:运行的次数,如果需要SPEC CPU2000自动计算测试分值,需要指定运行次数等于或大于3,即n>=3;
-I:测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例,如果不加该参数,程序运行过程出现错误时,SPEC CPU2000将停止测试;
-r:测试rate,rate数据指多核CPU情况下运行多个相同进程的分值;
all:表示SPEC CPU2000将运行基准测试程序中的所有测试项目;
int:表示SPEC CPU2000将运行基准测试程序中的12个定点测试项目;
fp: 表示SPEC CPU2000将运行基准测试程序中的14个浮点测试项目;
164:表示SPEC CPU2000将运行基准测试程序中164.gzip这个程序;
举例说明SPEC CPU2000常用测试命令组合
1.runspec -c test.cfg -i test -I all
基于最小测试数据集快速执行所有的测试,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。
2.runspec -c test.cfg -i ref -n 3 -I all
基于最大测试数据集全面执行所有的测试,用于测试单核CPU,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。
3.runspec -c test.cfg -i ref -n 3 -r 4 -I all
基于最大测试数据集全面执行所有的测试,用于测试4核CPU,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。
4.runspec -c test.cfg -i ref -n 3 -r 8 -I all
基于最大测试数据集全面执行所有的测试,用于测试8核CPU,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。
5.runspec -c test.cfg -i ref -n 3 -r 8 -I int
基于最大测试数据集执行12个定点的测试,用于测试8核CPU,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。
6.runspec -c test.cfg -i ref -n 3 -r 8 -I 164
基于最大测试数据集只执行164单个测试,用于测试8核CPU,测试过程中如果某个用例发生错误,则跳过错误用例,继续执行其他用例。
结果分析
测试结束后在result目录下,查看测试结果,测试结果一般以测试类型和测试次序进行区别,并且会按照整点和浮点进行划分。如果是按照正式reportable的模式进行测试的话,会出一份网页版的正式测试结果,参见下图: 非正式结果可以去asc或txt文档查看,格式例如下文:
Benchmarks Ref. Run Time Ratio Ref. Run Time Ratio
400.perlbench 9770 430 22.7 S 9770 339 28.8 S
400.perlbench 9770 429 22.8 * 9770 338 28.9 S
400.perlbench 9770 429 22.8 S 9770 339 28.8 *
401.bzip2 9650 559 17.3 * 9650 552 17.5 *
401.bzip2 9650 559 17.3 S 9650 553 17.5 S
401.bzip2 9650 560 17.2 S 9650 552 17.5 S
……
400.perlbench 9770 429 22.8 * 9770 339 28.8 *
401.bzip2 9650 559 17.3 * 9650 552 17.5 *
403.gcc 8050 367 22.0 * 8050 337 23.9 *
429.mcf 9120 188 48.6 * 9120 188 48.6 *
445.gobmk 10490 559 18.8 * 10490 542 19.4 *
456.hmmer 9330 214 43.5 * 9330 213 43.7 *
458.sjeng 12100 616 19.6 * 12100 574 21.1 *
462.libquantum 20720 14.2 1460 * 20720 14.2 1460 *
464.h264ref 22130 578 38.3 * 22130 526 42.0 *
471.omnetpp 6250 348 17.9 * 6250 288 21.7 *
473.astar 7020 311 22.6 * 7020 311 22.6 *
483.xalancbmk 6900 174 39.7 * 6900 170 40.6 *
SPECint(R)\_base2006 36.7
SPECint2006 39.1
结果显示为int运算的12个实例,其实每个实例运行3次的测试结果,最终结果取SPECint(R)\_base2006和SPECint2006,其值是所有base Ratio和peak Ratio的结果的几何平均值。
SPECint(R)\_base2006 36.7
SPECint2006 39.1
Sysbench
安装步骤
yum -y install make automake libtool pkgconfig libaio-devel vim-common
进入到sysbench源码目录
cd /home/sysbench-master
执行autogen.sh来生成configure文件
./autogen.sh
执行configure && make && make install 完成sysbench安装
./configure --prefix=/usr/local/sysbench/ --with-mysql --with-mysql-includes=/usr/local/mysql
/include --with-mysql-libs=/usr/local/mysql/lib
其中--with-mysql-includes= 需要为mysql的安装目录
make
make install
测试安装是否成功
usr/local/sysbench/bin/sysbench --version
使用方法
sysbench 中的测试类型大致可以分成内置的,lua脚本自定义的测试
内置测试:
fileio 、cpu 、memory 、threads 、 mutex
使用lua脚本自定义型测试:
sysbench 自身内涵了一些测试脚本放在了安装目录下share/sysbench下
ll share/sysbench
-rwxr-xr-x. 1 root root 1452 10月 17 15:18 bulk\_insert.lua
-rw-r--r--. 1 root root 13918 10月 17 15:18 oltp\_common.lua
-rwxr-xr-x. 1 root root 1290 10月 17 15:18 oltp\_delete.lua
-rwxr-xr-x. 1 root root 2415 10月 17 15:18 oltp\_insert.lua
-rwxr-xr-x. 1 root root 1265 10月 17 15:18 oltp\_point\_select.lua
-rwxr-xr-x. 1 root root 1649 10月 17 15:18 oltp\_read\_only.lua
-rwxr-xr-x. 1 root root 1824 10月 17 15:18 oltp\_read\_write.lua
-rwxr-xr-x. 1 root root 1118 10月 17 15:18 oltp\_update\_index.lua
-rwxr-xr-x. 1 root root 1127 10月 17 15:18 oltp\_update\_non\_index.lua
-rwxr-xr-x. 1 root root 1440 10月 17 15:18 oltp\_write\_only.lua
-rwxr-xr-x. 1 root root 1919 10月 17 15:18 select\_random\_points.lua
-rwxr-xr-x. 1 root root 2118 10月 17 15:18 select\_random\_ranges.lua
drwxr-xr-x. 4 root root 46 10月 17 15:18 tests
通过sysbench进行cpu性能测试
sysbench的cpu测试是在指定时间内,循环进行素数计算
默认参数,素数上限10000,时间10秒,单线程
\#sysbench cpu run
--cpu-max-prime: 素数生成数量的上限
--threads: 线程数
--time: 运行时长,单位秒
--events: event上限次数
举例说明:
素数上限2万,默认10秒,2个线程
sysbench cpu --cpu-max-prime=20000 --threads=2 run
sysbench 1.0.9 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 2 // 指定线程数为2
Initializing random number generator from current time
Prime numbers limit: 20000 // 每个线程产生的素数上限均为2万个
Initializing worker threads...
Threads started! CPU speed:
events per second: 650.74 // 所有线程每秒完成了650.74次event
General statistics:
total time: 10.0017s // 共耗时10秒
total number of events: 6510 // 10秒内所有线程一共完成了6510次event
Latency (ms):
min: 3.03 // 完成1次event的最少耗时3.03秒
avg: 3.07 // 所有event的平均耗时3.07毫秒
max: 3.27 // 完成1次event的最多耗时3.27毫秒
95th percentile: 3.13 // 95%次event在3.13秒毫秒内完成
sum: 19999.91 // 每个线程耗时10秒,2个线程叠加耗时就是20秒
Threads fairness:
events (avg/stddev): 3255.0000/44.00 // 平均每个线程完成3255次event,标准差为44
execution time (avg/stddev): 10.0000/0.00 // 每个线程平均耗时10秒,标准差为0
event:表示完成了几轮的素数计算
stddev(标准差): 在相同时间内,多个线程分别完成的素数计算次数是否稳定,如果数值越低,则表示多个线程的结果越接近(即越稳定)。该参数对于单线程无意义
结果分析
如果有2台服务器进行CPU性能对比,当素数上限和线程数一致时:
相同时间,比较event
相同event,比较时间
时间和event都相同,比较stddev(标准差)
通过sysbench自带的lua脚本对mysql进行测试:
第一步 prepare
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sbtest \
--mysql-password=123456 --mysql-db=tempdb oltp\_insert prepare
第二步 run
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sbtest --mysql-password=123456 --mysql-db=tempdb oltp\_insert run
第三步 cleanup
sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sbtest --mysql-password=123456 --mysql-db=tempdb oltp\_insert cleanup
Linkpack
软件安装
i 安装mpi
tar -xvzf l\_mpi\_2018*.tgz
cd l\_mpi\_2018*
./install.sh
ii 安装配置MKL
tar –xvzf l\_mklb\_p\_2019.4.003.tgz
配置优化
BIOS和操作系统配置
Bios (max performance)保持cpu超频锁屏配置
Disable HT
禁止不必要的系统守护进程去掉 将系统启动到init3,不要进入图形模式
systemctl disable selinux
systemctl disable firewalld
init 3
调整hpl和mkl配置文件
进入mkl的解压目录
cd l\_mklb\_p\_2019.4.003/benchmarks\_2019/linux/mkl/benchmarks/mp\_linpack
ll
total 32344
-rwxr-xr-x 1 root root 1233 Apr 12 2019 build.sh
-rw-r--r-- 1 root root 3178 Apr 12 2019 COPYRIGHT
-rw-r--r-- 1 root root 1125 Apr 14 09:07 HPL.dat
-rw-r--r-- 1 root root 4171 Apr 12 2019 HPL\_main.c
-rw-r--r-- 1 root root 924300 Apr 12 2019 libhpl\_intel64.a
-rw-r--r-- 1 root root 7502 Apr 12 2019 readme.txt
-rwxr-xr-x 1 root root 3105 Apr 12 2019 runme\_intel64\_dynamic
-rwxr-xr-x 1 root root 1064 Apr 12 2019 runme\_intel64\_prv
-rwxr-xr-x 1 root root 3107 Apr 13 18:50 runme\_intel64\_static
-rwxr-xr-x 1 root root 12833177 Apr 12 2019 xhpl\_intel64\_dynamic
-rwxr-xr-x 1 root root 19207340 Apr 12 2019 xhpl\_intel64\_static
-rw-r--r-- 1 root root 84023 Apr 13 18:56 xhpl\_intel64\_static\_outputs.txt
编辑HPL.dat
N : 126336 //根据memory大小计算 大概=开方(内存*0.9/8)
NB : 384 //这个值可以更改以获取最好的测试 结果,但是针对cascade cpu来说384应该是比较优化的值
PMAP : Column-major process mapping
P : 1 # for 2S P==1, for 4S P==2, for 8S P==2 2路,4路,8路,服务器的配置
Q : 2 # for 2S Q==2, for 4S Q==2, for 8S Q==4 2路,4路,8路,服务器的配置
PFACT : Right
NBMIN : 2
NDIV : 2
RFACT : Crout
BCAST : 1ring
DEPTH : 0
SWAP : Binary-exchange
L1 : no-transposed form
U : no-transposed form
EQUIL : no
ALIGN : 8 double precision words
编辑runme\_intel64\_dynamic文件
Vi runme\_intel64\_dynamic
//4路服务器每节点MPI=4
export MPI\_PROC\_NUM=4
export MPI\_PER\_NODE=4
//2路服务器,每节点MPI=2
export MPI\_PROC\_NUM=2
export MPI\_PER\_NODE=2
//2路和4路通用
export MKL\_ENABLE\_INSTRUCTIONS=AVX2 //测试结果最好avx2 指令集 运行在avx2 指令集情况下应该可以达到基频,AVX512 指令集情况下 cpu要低于基频
\#export MKL\_ENABLE\_INSTRUCTIONS=AVX512
\#export MKL\_ENABLE\_INSTRUCTIONS=AVX
\#export MKL\_ENABLE\_INSTRUCTIONS=SSE4\_2
export HPL\_HOST\_ARCH=9
export OMP\_NUM\_THREADS=64 // 服务器总core数目
使用方法
./ runme\_intel64\_dynamic
SPECPOWER
Java安装
Specpower 2008 测试,在SUT侧,可以使用linux也可以使用windows环境,但是在CCS侧一般情况下均使用windows环境,SUT侧和CCS侧JAVA版本也可以不一致,因此JAVA的安装分别为在linux环境下安装和windows环境下安装
SUT(linux)安装
LINUX: 安装java jdk-11.0.3
下载jdk-11.0.3
https://download.oracle.com/otn/java/jdk/11.0.3+12/37f5e150db5247ab9333b11c1dddcd30/jdk-11.0.3\_linux-x64\_bin.tar.gz?AuthParam=1593588015\_5f197119d7ae5f2820c5cbc602418a89
tar xvzf jdk-11.0.3\_linux-x64\_bin.tar.gz
[root@localhost SPECpower\_ssj2008-1.12]# cd jdk-11.0.3/
image.pngmkdir -p /usr/local/java/jdk1103
image.pngcd jdk-11.0.3
cp -rf * /usr/local/java/jdk1103
image.png编辑/etc/profile
image.png添加java 环境变量
JAVA\_HOME=/usr/local/java/jdk1103
JRE\_HOME=$JAVA\_HOME/lib
PATH=$JAVA\_HOME/bin:$PATH
export JAVA\_HOME JRE\_HOME PATH
image.png使环境变量生效
source /etc/profile
image.png检查java 版本
image.png安装IBM JAVA(这部分略)
CCS安装
安装java(jdk-7u80-windows-x64)
1、下载链接(需要先注册oracle用户)
https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html#license-lightbox
IBM JAVA下载(如果运行IBM java做测试建议参与IBM java 测试结果更好)
https://developer.ibm.com/javasdk/downloads/sdk8/(需要先注册IBM账号)
2、直接点击exe文件安装
测试过程中发现安装jdk-7u80-windows-x64,会出现error miss temp1 错误,不能生产最终报告,换成jdk-11.0.7\_windows-x64\_bin,问题解决
请输入图片描述CCS要用server,不用使用笔记本。
CCS端需要启动的脚本有runpower.bat、runtemp.bat、rundirector.bat、runccs.bat.
SUT端只需要启动runssj.bat或者runssj.sh(因操作系统而定)
如只想测试性能或者缺失功率仪的情况下,可以把CCS端runpower.bat脚本中“set DEVICE=”设置为“0”,即dummy模式。
CCS端没有连接温度计时,把CCS端runtemp.bat脚本中“set DEVICE=”设置为“1000”,即dummy模式。
Bios和操作系统优化设置
Bios 调整
l Operating Mode: Custom Mode
l Memory Power Management: Automatic
l Page Policy: Adaptive
l Intel VT for Directed I/O(VT-d): Disable
l Memory Data Scrambling: Disable
l Turbo Mode: Disable
l Intel Virtualization Technology: Disable
l Hardware Prefetcher: Disable
l Adjacent Cache Prefetch: Disable
l DCU Streamer Prefetcher: Disable
l Patrol Scrub: Disable
l Ethernet over USB interface: Disable
操作系统调整
l Benchmark started via ssh
l Each JVM instance was affinitized to two threads on a single socket
l echo 960000 > /proc/sys/kernel/sched\_rt\_runtime\_us
l echo 16000000 > /proc/sys/kernel/sched\_latency\_ns
l echo 9000000 > /proc/sys/kernel/sched\_min\_granularity\_ns
配置SUT(需要测specpower 的服务器)
注:获取specpower2008 软件包,windows和linux都使用一个包,其中CCS端都采用windows环境,SUT侧可以是linux,也可以是windows,其中区别是:linux更改并使用runssj.sh脚本,windows环境更改并使用runssj.bat
Windows(2016)
编辑runssj.bat
编辑 SPECpower\_ssj.props
仅仅添加:input.load\_level.number\_warehouses=xxx
注释:warehouse就是每个jvm起到warehouse数量,值一般等于logic process或者logic process*2,如果查看测试结果发现cpu 不能压到100%,就提高warehouse数量
Centos 7.6
编辑runssj.sh(主要调优更改地方)
需要更改部分红色注释
[root@localhost ssj]# vi runssj.sh
\#!/bin/sh
This is an example of what a run script might look like
JVMS=48
Set to TRUE if jvm Director is on this host
LOCAL\_DIRECTOR=FALSE
DIRECTOR\_HOST=10.111.79.192
SETID=sut
DIRECTOR\_PROPFILE=SPECpower\_ssj.props
JAVAOPTIONS\_DIRECTOR="-Djava.awt.headless=true -Xms64m -Xmx256m"
JAVAOPTIONS\_SSJ="-server -Xmx1024m -Xms1024m -Xmn900m -XX:SurvivorRatio=1 -XX:ParallelGCThreads=2 -XX:AllocatePrefetchDistance=256 -XX:AllocatePrefetchLines=4 -XX:LoopUnrollLimit=45 -XX:InitialTenuringThreshold=12 -XX:MaxTenuringThreshold=15 -XX:InlineSmallCode=3900 -XX:MaxInlineSize=270 -XX:FreqInlineSize=2500 -XX:+UseLargePages -XX:+UseParallelOldGC -XX:+UseBiasedLocking -XX:+UseHugeTLBFS -XX:+UseTransparentHugePages"
\#JAVAOPTIONS\_DIRECTOR="-Xms64m -Xmx64m"
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
\#echo Starting instance $x
\#$JAVA -cp \$ $JAVAOPTIONS\_SSJ org.spec.power.ssj.SpecPowerSsj -jvmid $x -numJvms $JVMS -director $DIRECTOR\_HOST -seti
d $SETID > ssjOutput.$x &
\#x=\`expr $x + 1\`
\#done
\#if [ "$LOCAL\_DIRECTOR" = "TRUE" ]; then
\#echo Starting Director
\#$JAVA -cp \$ $JAVAOPTIONS\_DIRECTOR org.spec.power.ssj.Director -propfile $DIRECTOR\_PROPFILE
\#else
\#wait
\#fi
\#date
x=1
numactl --physcpubind=0,48 --membind=0 $JAVA -cp ${CP} $JAVAOPTIONS\_SSJ org.spec.power.ssj.SpecPowerSsj -jvmid $x -numJvms $
JVMS -director $DIRECTOR\_HOST -setid $SETID > ssjOutput.$x &
…………………………………………………………….
x=\`expr $x + 1\`
numactl --physcpubind=47,95 --membind=1 $JAVA -cp ${CP} $JAVAOPTIONS\_SSJ org.spec.power.ssj.SpecPowerSsj -jvmid $x -numJvms
$JVMS -director $DIRECTOR\_HOST -setid $SETID > ssjOutput.$x &
优化要点需要更改部分:
1、JVMS=xxx
指定jvm的数量,一般是2个或者4个logic processor 对应1个jvm
2、DIRECTOR\_HOST=10.111.79.192
指定CCS的ip地址
3、JAVAOPTIONS_DIRECTOR="-Djava.awt.headless=true -Xms64m -Xmx256m"
一般情况下不需要更改
JAVAOPTIONS\_SSJ="-server -Xmx1024m -Xms1024m -Xmn900m -XX:SurvivorRatio=1 -XX:TargetSurvivorRatio=99 -XX:ParallelGCThreads=2 -XX:AllocatePrefetchDistance=256 -XX:AllocatePrefetchLines=4 -XX:LoopUnrollLimit=45 -XX:InitialTenuringThreshold=12 -XX:MaxTenuringThreshold=15 -XX:InlineSmallCode=3900 -XX:MaxInlineSize=270 -XX:FreqInlineSize=2500 -XX:+UseLargePages -XX:+UseParallelOldGC -XX:+UseBiasedLocking -XX:+UseHugeTLBFS -XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2m"
JAVAOPTIONS\_DIRECTOR="-Xms64m -Xmx64m"设置启动JVM的相关参数,这个值会根据具体服务器配置有更改,还有可能在运行脚本中报错,需要做微调,主要是-Xmx1024m -Xms1024m -Xmn900m 这几个值,可以参考spec.org测试参数,例如
http://spec.org/power\_ssj2008/results/res2019q2/power\_ssj2008-20190313-00934.html,在spec.org 中有参数 -XX:+AggressiveOpts,在runjss.sh中报错,需要删除掉
4、设置java的启动路径,如果已经加入了/etc/profile,这里就直接等于java就ok
JAVA=java
5、通过numactl 做jvm和core的绑定,只需要更改 --physcpubind=0,48 --membind=0 两个参数,一般情况1个JVM instance was affinitized to two threads on a single socket
编辑SPECpower\_ssj.props
仅仅添加
input.load\_level.number\_warehouses=xxx
注释同windows 环境一样
配置CCS(压力服务器)
进入目录cd \SPECpower\_ssj2008-1.12\PTDaemon
编辑runpower.bat
[root@localhost PTDaemon]# more runpower.bat
set NETWORK\_PORT=8888
:: Set DEVICE to the power analyzer device you will use (0=dummy device)
:: use the numeric value found in the help output of the ptd executable
set DEVICE=0
:: Set DEVICE\_PORT to the serial port you will connect your power analyzer to
set DEVICE\_PORT=COM1
可以设置三种功耗仪COM接口功耗仪,USB接口功耗仪和IP接口功耗仪,以及没有功耗仪,输出功耗固定在20W
1)针对COM口功耗仪更改
2)针对USB口功耗仪更改
set DEVICE=49
set DEVICE\_PORT=C2QF19039V
3)针对IP地址的功耗仪更改
set DEVICE=47
set DEVICE\_PORT=xxx.xxx.xxx.xxx 功耗仪IP
编辑runtemp.bat (没有温度要求此文件不需要更改)
进入目录cd \SPECpower\_ssj2008-1.12\ssj
编辑rundirector.bat
:: Number of hosts
set NUM\_HOSTS=1
设置需要测试SUT数量, 比如刀片测试,16把刀片插满测试,NUM-\_HOST=16
:: Set java options for director
set JAVAOPTIONS\_DIRECTOR=-Xms64m -Xmx1024m
设置director内存大小,当接入HOSTs比较多的时候,需要扩大这个值,否则会出现链接不成功,曾经在移动测试时候针对多个HOSTS测试,只能使用oracle JAVA,因为IBM J9VM 对内存支持很低,不能增加。移动测试使用oracle 7u79,使用java版本要慎重,曾经使用oracle JDK 8u60,但是在生产报告时候,在runccs.bat,会报 error miss temp1 错误,导致不能生产报告。更换oracle JDK 7u79,测试正常。本次测试使用oracle JDK 7u80,再生成报告时候也报error miss temp1错误,更换为jdk 11.0.7测试正常
移动测试设置为:
image.png:: Properties file to be passed to Director
set PROPFILE=SPECpower\_ssj.props
:: Set JAVA to Java.exe path.
set JAVA=java
设置java路径环境变量,如果在cmd或者linux环境 能够直接执行java -version,那此处就不用更改
编辑runccs.bat
编辑SPECpower\_ssj\_config\_sut.props
更改报告中显示数据
测试启动步骤
1、 CCS端启动runpower.bat
2、 CCS端启动runtemp.bat
3、 CCS端启动rundirector.bat
4、 在SUT端启动 runjss.sh(linux)/runjss.bat(windows)
5、 CCS端启动runccs.bat
运行完成后,通过显示信息查看测试结果SPECpowerZ主目录下Resultes下
C:\Users\Administrator\Desktop\SPECpower\_ssj2008-1.12\ccs\..\Results\ssj.0016\ssj.0016-main.html
请输入图片描述查看结果中,100%时候,cpu的实际利用率是不是接近100%,截图中发现实际load 才86.9%,测试结果肯定不会很好
内存测试
内存性能测试POC,有打开xx和不打开xx的测试结果,用户没有特殊要求,取结果更好的值:
BIOS设置
bios设置 ,确保要求服务器处于超频稳定状态下进行,除非用户有特殊要求.
BIOS Setting
image.png禁止selinux和防火墙
systemctl stop firewalld
\#vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
cpupower 设置
cpupower frequency-set -g performance
tune模式设置
tuned-adm profile throughput-performance
Stream
gcc -O -fopenmp -DSTREAM\_ARRAY\_SIZE=100000000 -DNTIME=20 stream.c -o stream.o
其它更多参数详细见:http://www.cs.virginia.edu/stream/ref.html
1.STREAM\_ARRAY\_SIZE :调节array大小,设置方法100M(注意设置合适的大小,也许你只要10M)的方法:
gcc -O -DSTREAM\_ARRAY\_SIZE=100000000 stream.c -o stream.100M
2.NTIMES :调节stream在每个kernel的运行次数,输出最好的一次。设置7次的方法。
可通过-DNTIMES=7调节。
3.-DOFFSET设置
4.多核情况下,通过 -O -fopenmp 增加多核OpenMP支持
指令编译文件stream benchmark,运行命令./ stream.o。出现内存测试的程序的结果:
If you want to run STREAM on multiple processors, then the situation is not quite so easy.
??? ??gcc -fopenmp -D_OPENMP stream.c -o stream
??????export OMP_NUM_THREADS=2
???? ./stream
Sysbench
安装步骤
参照CPU测试中sysbench安装过程
使用方法
Sysbench --test =memory 进行内存测试
参数说明:
--memory-total-size 指定测试内存中传输的数据量大小
--memory-oper 指定内存测试方法,包括read、write和rw
--memory-access-mode 指定内存的访问模式,包括顺序(seq)和随机(rnd)
--memory-block-size 指定测试内存的block大小
--num-threads 指定测试线程数
举例如下:
测试顺序读:
sysbench --test=memory --memory-total-size=10G --memory-oper=read --memory-access-mode=seq run
测试随机读:
sysbench --test=memory --memory-total-size=10G --memory-oper=read --memory-access-mode=rnd run
\#结论:顺序读比随机读快很多
测试顺序写:
sysbench --test=memory --memory-total-size=10G --memory-oper=write --memory-access-mode=seq run
测试随机写
sysbench --test=memory --memory-total-size=10G --memory-oper=write --memory-access-mode=rnd run
\#结论:随机写比有序写速度快,原因为:内存排序需要时间
转载申明
转载请注明出处:365文档