常见公有云机器的unixbench跑分对比
          ([华为云](https://l.gushuji.site/huawei),[腾讯云](https://l.gushuji.site/tencent),[阿里云](https://l.gushuji.site/aliyun):配置1核1G)

1.UnixBench简单介绍
UnixBench 是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试VPS性能的工具。
UnixBench会执行一系列的测试,包括2D和3D图形系统的性能衡量,测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器.
测试系统各个方面一系列的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值.
UnixBench一键执行脚本 ,脚本会自动下载unixbench最新版本,并自动运行.根据机器性能,测试执行完大约需要10-30分钟.

Unixbench做了哪些性能测试
Dhrystone 2 using register variables
这里有比较详细的dhrystone介绍,这个主要是测整数性能,对应的浮点数测试是:Double-Precision Whetstone。
恕我眼拙,那一坨运算实在不知所云,于是上网搜了一堆文章,大意是可以通过编译优化提高性能,不能真实反映CPU性能。这篇文章比较有典型意义:Benchmarking in context: Dhrystone。
那绕开里面一坨计算,说下输出:默认就是在10秒内,那一坨计算能计算次数,算出分数后,参考前面篇UnixBench算分介绍,算出Index分数。
Double-Precision Whetstone
既然有整数运算的CPU性能,那么浮点数运算性能也希望有,于是就有了:whets.c 它的代码质量就高多了,我终于读懂了。
它需要得到一个合适的参数. 怎么得出这个运算呢:有坨运算,随着传入参数(xtra)变大,耗时会逐渐增减,当耗时增加到超过2秒时,参数停止变大。
image.png
如果跑10秒大概的参数会是怎样呢:625*10/1.238352=5047
根据输入参数,去计算结果,之前一直没有说,那一坨计算是什么,总共分为8步,英文解释还是比较清楚的,采纳了其中的浮点数分数,不过它的时间怎么把其他计算的时间也算在里面了,既然只关心浮点数运算,为什么还要加入N3,N4,N5,N7,N8这几步,后续计算参考前面算法规则UnixBench算分介绍。
image.png
Execl Throughput
除了前面介绍的那两个比较复杂,UnixBench其他的运算都比较简单,Execl它的实际就是递归调用,它主要利用的是execl函数。本身execl.c编译出来后的执行文件是execl的二进制文件,execl函数执行的时候记录参数:开始时间,执行次数,耗时(一般都是10秒)。当本次总执行时间耗时超过10秒时,输出执行次数,然后根据算分规则算分,这个思想还是很巧妙的。

File Copy
这个主要是测试的write和read两个函数,测试30秒。实现很简单,先写入一个文件2秒(循环写入),再读2秒,然后从刚刚写入的文件读取数据,写入到另一个文件,循环写入,在30秒的读写次数。 不同的参数测试测的是不同块大小,不同块数的性能,如果测试磁盘建议用FIO测试。
Pipe Throughput
打开一个管道,往管道写入512个bytes,再读出来,测试10秒,总共读写次数
Pipe-based Context Switching
打开两个管道,开启两个进程,其中一个进程往管道1写,往管道2读,另一个进程往管道2写,往管道2读,一个进程完成一次读写,计数+1。其中一个很有意思的事情:如果这两个进程在同一个CPU和不同的CPU有完全不同的性能,在同一个CPU下性能会好很多。这里有篇很细致的分析,值得大家评阅:Unixbench 测试套件缺陷深度分析
Process Creation
就是不停调用fork函数,创建进程,并立马退出,成功一次计数+1。
Shell Scripts
通过fork函数,创建进程,不停地执行一个脚本, 执行成功一次+1. 所谓Shell Scripts (1 concurrent) 一个并发是指传递给脚本:pgms/multi.sh 参数是1,同样Shell Scripts (8 concurrent) ,传递给脚本的参数是8,同时8个子任务并发执行。
System Call Overhead
本意是想计算进入离开操作系统的开销,进入离开一次计数+1,在10秒内的执行次数. 实际执行的效果是fork子进程,waitpid函数后退出,计数+1

2.下载软件包,编译脚本
[root@ouxionghu UnixBench]# wget http://soft.laozuo.org/scripts/UnixBench5.1.3.tgz(不一定要这个URL,只要)
[root@ouxionghu UnixBench]# tar -zxvf UnixBench5.1.3.tgz
[root@ouxionghu UnixBench]# cd UnixBench/
[root@ouxionghu UnixBench]# sed -i “s/GRAPHIC_TESTS = defined/#GRAPHIC_TESTS = defined/g” ./Makefile (修改配置文件,将Makefile中的 GRAPHIC_TESTS = defined 整行注释掉,这样可以不进行图形界面的测试)
[root@ouxionghu UnixBench]# make
[root@ouxionghu UnixBench]# ./Run

3.unixbench输出信息简介
常见公有云机器的unixbench跑分对比-LMLPHP常见公有云机器的unixbench跑分对比-LMLPHP

4.各公有云1核1G的云主机跑分对比

常见公有云机器的unixbench跑分对比-LMLPHP常见公有云机器的unixbench跑分对比-LMLPHP常见公有云机器的unixbench跑分对比-LMLPHP

04-16 11:29