Unixbench 是一款用于 linux 零碎的零碎性能测试工具。本文次要剖析了 Unixbench 运行的入口脚本 Run。
一、执行调用关系
二、单测试项后果剖析(后果解决为 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 变量。