业务需求:应公司需求 现在对Centos7、Centos8、Ubuntu、Openeuler、银河麒麟等操作系统及系统中间件redis,MySQL,RabbitMQ等进行性能评估及兼容性测试。
1.选择测试工具,我选择的是UnixBench
UnixBench是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试性能,Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。
UnixBench测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器,测试系统各个方面一系列的性能,然后将每个 测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分值。
Dhrystone测试
测试聚焦在字符串处理,没有浮点运算操作。这个测试用于测试链接器编译、代码优化、内存缓存、等待状态、整数数据类型等,硬件和软件设计都会非常大的影响测试结果。
Whetstone 测试
这项测试项目用于测试浮点运算效率和速度。这项测试项目包含若干个科学计算的典型性能模块,包含大量的C语言函数,sin cos sqrt exp和日志以及使用整数和浮点的数学操作。包含数组访问、条件分支和过程调用。
Execl Throughput测试
(execl 吞吐,这里的execl是类unix系统非常重要的函数,非办公软件的excel)
这项测试测试每秒execl函数调用次数。execl是 exec函数家族的一部分,使用新的图形处理代替当前的图形处理。有许多命令和前端的execve()函数命令非常相似。
File Copy测试
这项测试衡量文件数据从一个文件被传输到另外一个,使用大量的缓存。包括文件的读、写、复制测试,测试指标是一定时间内(默认是10秒)被重写、读、复制的字符数量。
Pipe Throughput(管道吞吐)测试
pipe是简单的进程之间的通讯。管道吞吐测试是测试在一秒钟一个进程写512比特到一个管道中并且读回来的次数。管道吞吐测试和实际编程有差距。
Pipe-based Context Switching (基于管道的上下文交互)测试
这项测试衡量两个进程通过管道交换和整数倍的增加吞吐的次数。基于管道的上下文切换和真实程序很类似。测试程序产生一个双向管道通讯的子线程。
脚本名称:run.sh
chmod +x run.sh
sh run.sh
2.部署测试环境
Centos 7测试环境
跑分评测 Centos7 1703.3分
Centos8测试环境
Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误“错误:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist”
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all && yum makecache
跑分结果 2275.0
Ubuntu22.04测试环境
跑分结果 2688.7
Openeuler20.03 测试环境
跑分结果 2259.3
银河麒麟 测试环境
跑分结果 2445.0
评估 Centos 7 (1703) Centos 8 (2275) Ubuntu (2688) Openeuler (2259) Kylin (2445)
以上的测试给出的分数,我们可以作为评估的依据,但实际决策中,还需要考虑其他的情况。如操作系统的兼容性、稳定性以及一些其他的功能,比如openeuler操作系统支持Oracle或MySQL等。如果单从运算性能看,可能Ubuntu或Kylin操作系统更好,但如兼容及稳定等情况,那么就需要考虑其他的处理方案。