Unixbench是一款用于linux系统的系统性能测试工具。本文是对Unixbench入口脚本Run进行分析。
此处由于阿里云对markdown语法和latex语法支持的不全,所以附上segmentfault上的文章链接。
https://segmentfault.com/a/1190000023799317
一、执行调用关系
二、单测试项结果分析(结果处理为Run中的combinePassResults函数)
- 指定单测试项运行遍数(run pass num),通过变量testParams中的repeat参数指定:
| 命名 | 次数 | 说明 |
| ------ | ---- | ---- |
| short | 3 | 默认 |
| long | 10 | 最大 |
| single | 1 | 最小 |
- 先根据每一遍的结果进行排序,去掉最差的1/3的结果,可通过log文件查看:dump score为舍去的结果,Count score为参与算分的结果。
- 每一项原始结果,形如:
COUNT|x|y|z
其中x为分数,y为时间单位,若y为0则x代表比率,z为标签符号。 - 当y为时间单位时的计算公式:
$$ \LARGE{score=e^{(\sum\limits_{i=1}^{iterations}\log(\frac {count\cdot timebase}{time}))/iterations}} $$
- score: 单项分数
- iterations:剩余有效结果的个数
- count:每个有效结果的值
- timebase:时间基本单位
- time:运行的总时间
当y为0时的计算公式:
$$ \LARGE{score=e^{(\sum\limits_{i=1}^{iterations}\log(count))/iterations}} $$
三、总分结果分析(结果处理为Run中的indexResults函数)
- index值计算公式:
$$ \LARGE index=\frac{score * 10}{baseline} $$
- score:算出的单项分数
- baseline:记录在pgms/index.base中的基准值
- 总分计算公式:
$$ \Large SUM\_SCORE=e^{(\sum\limits_{i=1}^{tests\_num}log(\frac{score}{baseline}))/test\_num}*10 $$
- test_num:一个类型中的测试项的个数,可见Run中的testCats变量