长城S2500服务器性能测试最佳实践

长城S2500服务器性能测试最佳实践

配置清单

操作系统:

​ Kylin V10 SP3 2303 服务器版

​ 镜像名:Kylin-Server-V10-SP3-General-Release-2303-ARM64.iso

[root@localhost ~]# cat /etc/.kyinfo 
[dist]
name=Kylin
milestone=Server-V10-SP3-General-Release-2303
arch=arm64
beta=False
time=2023-03-24 14:51:29
dist_id=Kylin-Server-V10-SP3-General-Release-2303-arm64-2023-03-24 14:51:29

[servicekey]
key=0239033

[os]
to=
term=2024-07-01

硬盘:

网卡:

0000:03:00.0 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)
0000:03:00.1 Ethernet controller: Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02)

测试服务器软件配置清单

软件项 版本 备注
LmBench lmbench3.tar.gz
SPEC CPU2006 1.2

1、Lmbench测试(约1个半小时)

解压源码包:

tar -vxf lmbench3.tar.gz

解决报错问题

# 解决1:缺少SCCS报错
cd lmbench3
mkdir SCCS
touch SCCS/s.ChangeSet

# 解决2:未找到llseek
vim src/disk.c 
# 将测试工具的disk.c源码文件中的llseek接口函数全部替换成lseek64

# 解决3: 未找到rpc.h报错
sudo yum -y install libtirpc libtirpc-devel
cp -rf /usr/include/tirpc/rpc/* /usr/include/rpc/

# 解决4:未找到netconfig.h问题
ln -s /usr/include/tirpc/netconfig.h /usr/include

# 解决5:行30: ../../results//localhost.localdomain.0: 没有那个文件或目录
原因:
	scripts/gnu-os脚本中未将aarch64架构的系统作为识别选项。
解决办法:
	将aarch64架构系统添加到识别选项中,修改scripts/gnu-os,添加下面内容
	第928行后添加
aarch64:Linux:*:*)
        echo aarch64-unknown-linux-gnu
        exit 0 ;;

调优方法:

修改 Makefile 文件第 114、115 和 139 行,将 O 修改成 O2,使用 O2 编译可使性能优化。  
cd lmbench-3.0-a9/src/ 
vim Makefile

执行测试

cd lmbench3
make results LDFLAGS=-ltirpc
(1)MULTIPLE COPIES,选择默认
(2)Job placement selection 选1
(3)MB:建议不超过1G
(4)其余选项选择默认
(5)Mail results ,选择no
注:服务器内存大小指定为16384,桌面采用默认大小即可。
make see查看结果,results目录下。
make rerun再次运行,不需要重新配置。(注:测试多次时执行)

2、Unixbench测试

使用麒麟提供的Unixbench测试包

和终端机测试的通用

使用GCC9.3.1

# gcc931-phytium.tgz
# 解压到/opt文件夹中

#!/bin/bash
export PATH=/opt/gcc931/bin:$PATH
export CPATH=/opt/gcc931/include:$CPATH
export LD_LIBRARY_PATH=/opt/gcc931/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/opt/gcc931/LIB64:$LIBRARY_PATH

调优方法

# 1、将Unixbench文件夹放到/dev/shm
# 2、修改源码文件bufsize为8192

编译

make clean && make -j 8

开始测试

./Run -c 1 -c 128

S2500测试分数

单核 多核
1594.3 13421.9

3、SPECJVM测试

下载软件包:

https://www.spec.org/jvm2008/

安装依赖:

yum install java-1.8.0* -y

安装工具:

java -jar SPECjvm2008_1_01_setup.jar -i console

回车即可

设置JDK环境变量

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:/lib.dt.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

优化操作

JAVA_OPTS="-Xms8192M -Xmx131072M -XX:PermSize=512M -XX:MaxPermSize=1g -Dspecjvm.benchmark.threads.scimark.fft.large=1"
export JAVA_OPTS

开始测试

cd /SPECjvm2008
sudo java -jar SPECjvm2008.jar --base -ikv
sudo java -Xms1024m -Xmx349525m -jar SPECjvm2008.jar --peak -ikv

测试分数

测试次数 base peak
第一次 846.59 ops/m 851.89 ops/m

4、stream测试

使用飞腾提供的GCC10.3.1

#!/bin/bash
export PATH=/opt/gcc1031/bin:$PATH
export CPATH=/opt/gcc1031/include:$CPATH
export LD_LIBRARY_PATH=/opt/gcc1031/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/opt/gcc1031/LIB64:$LIBRARY_PATH

编辑stream的ArraySize,设置2000万

#ifndef STREAM_ARRAY_SIZE
#   define STREAM_ARRAY_SIZE    2000000
#endif

优化操作:

将stream文件夹放到/dev/shm中执行

多线程编译测试

export OMP_NUM_THREADS=128
export GOMP_CPU_AFFINITY=0-127
echo 3 > /proc/sys/vm/drop_caches 
gcc -O3 -fopenmp -mcmodel=large -DNTIME=10 stream.c -o stream.duo
./stream.duo

单线程编译测试

gcc -O3 -mcmodel=large -DNTIME=10 stream.c -o stream.dan
./stream.dan

S2500测试分数

单核 多核
Copy: 7037.7918
Scale: 7187.7967
Add: 6741.4476
Triad: 6792.1660
Copy: 164785.4
Scale: 173542.4
Add: 151658.4
Triad: 148328.7

5、IOZone测试

解压工具包

tar -vxf iozone3_489.tar

编译

make linux-arm

开始测试

#!/bin/bash
echo 3 > /proc/sys/vm/drop_caches
# 块大小16M,文件大小为物理内存1倍(测试机器内存为512G的情况下)
./iozone -i 0 -i 1 -i 2 -s 512g -r 16m -f /iotest/iozone.tmpfile -Rb ./report/iotest_512G_0.xls

sleep 20
echo 3 > /proc/sys/vm/drop_caches
# 块大小16M,文件大小为物理内存0.5倍(测试机器内存为512G的情况下)
./iozone -i 0 -i 1 -i 2 -s 256g -r 16m -f /iotest/iozone.tmpfile -Rb ./report/iotest_256G_0.xls

sleep 20
echo 3 > /proc/sys/vm/drop_caches
# 块大小16M,文件大小为物理内存2倍(测试机器内存为512G的情况下)
./iozone -i 0 -i 1 -i 2 -s 800g -r 16m -f /iotest/iozone.tmpfile -Rb ./report/iotest_800G_0.xls

6、SPEC CPU2006测试(单核多核三遍约40小时)

使用工具:

# 研发提供的2006测试包
benchmark_tools.tar.gz

测试方法:

1、解压文件
2、执行./00_stopsrv.sh
3、将ISO文件放到root目录下,注意修改文件名或脚本保持文件名与脚本对应:/root/Kylin-Server-10-SP1-aarch64-Release-Build01-2500-20200727.iso
4、执行./install_rpm.sh
5、执行./06_install_speccpu2006.sh
6、执行./07_build_speccpu2006_tools.sh
7、执行./08_build_speccpu2006_test.sh
8、执行./11_run_spec.sh

测试结果:

测试项 测试分数
单核整型 15.1
128核整型 1070
单核浮点 13
128核浮点 885

7、SPEC CPU2017测试

挂载ISO镜像文件

mkdir /mnt/spec2017
mount cpu2017-1_0_5.iso /mnt/cpu2017/

安装SPEC 2017,指定安装到/spec2017

[root@localhost cpu2017]# cd /mnt/cpu2017
[root@localhost cpu2017]# ./install.sh 
SPEC CPU2017 Installation

Top of the CPU2017 tree is '/mnt/cpu2017'
Enter the directory you wish to install to (e.g. /usr/cpu2017)
/spec2017	

Installing FROM /mnt/cpu2017
Installing TO /spec2017

Is this correct? (Please enter 'yes' or 'no') 
yes
....

设置gcc环境变量,使用GCC9.3.1

[root@localhost mnt]# source /opt/gcc931/env.sh 
[root@localhost mnt]# cat /opt/gcc931/env.sh 
#!/bin/bash

export PATH=/opt/gcc931/bin:$PATH
export CPATH=/opt/gcc931/include:$CPATH
export LD_LIBRARY_PATH=/opt/gcc931/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/opt/gcc931/LIB64:$LIBRARY_PATH

将配置文件,拷贝到config文件夹中

cd /spec2017
mv phytium2017.cfg config/

修改配置文件GCC路径

# vim config/phytium2017.cfg

128 #      WARNING: See section
129 #      "Known Limitations with GCC 4"
130 #
131 %ifndef %{gcc_dir}
132 %   define  gcc_dir        /opt/gcc931  # EDIT (see above)
133 
134 %endif
135 
136 # EDIT if needed: the preENV line adds library directories to the runtime

测试前的准备

source shrc
echo 3 > /proc/sys/vm/drop_caches
ulimit -s unlimited

开始测试

# 128核测试(三遍,生成不加水印的报告)
runcpu -c phytium2017.cfg -T base -s -C 128 -n 3 -i ref intrate fprate

# 单核测试
runcpu -c phytium2017.cfg -T base -s -C 1 -n 3 -i ref intspeed fpspeed

测试数据

测试项 测试分数 备注
128核整型 179
128核浮点
单核整型
单核浮点

8、netperf测试

准备两台机器,如机器A(192.168.0.1),机器B(192.168.0.2)

A、B都编译安装netperf

./configure --build=arm
make -j 8

机器A开启服务端

cd /src
./netserver

优化操作

# 设置网卡mtu为9000
ifconfig enP1p4s0f1 mtu 9000

机器B开启客户端,开始测试

./netperf -H 192.168.0.1 -l 60 -t TCP_STREAM 
./netperf -H 192.168.0.1 -l 60 -t UDP_STREAM 
./netperf -H 192.168.0.1 -l 120 -t TCP_RR 
./netperf -H 192.168.0.1 -l 120 -t UDP_RR

记录测试结果


长城S2500服务器性能测试最佳实践
http://gsproj.github.io/2023/11/20/02_测试/06_S2500服务器性能测试最佳实践/
作者
GongSheng
发布于
2023年11月20日
许可协议