不同的sysbench参数可能对测试结果有一定的影响,如果不注意的话,可能会影响我们对于测试结果的分析,甚至可能会得出错误的测试结论。本文较为详细的介绍sysbench中的--rand-type
参数。
--rand-type
是sysbench中控制随机数据分布的参数,主要的选项包括了uniform,gaussian,special,pareto
,在最新的版本,新增了zipfian
。具体的各个随机分布类似介绍如下:
uniform
是均匀分布gaussian
是正态分布,也叫高斯分布(常见的标准正态分布是其特殊形式)pareto
是帕累托分布,“二八分布”是其特殊形态。该分布在经济学中使用较多,最为常见的例子是认为20%的人拥有80%的财富,即财富在人群中的分布情况。zipfian
分布与该分布有一些类似。special
这个是一个奇怪的分布,并不是某个标准分布。应该是Sysbench作者自己定义的某个分布,该分布下取值几乎完全落在中间值附近。关于这些分布的讨论可以参考Sysbench在GitHub Issue上的讨论(Use the uniform distribution by default @GitHub Issue),也可以参考Percona相关的讨论文章(Sysbench and the Random Distribution Effect@Percona)。这里使用GitHub Issue中提到的方法,来对这些分布做一个测试,从而大家可以非常好的从可视化的角度去理解这些分布:
上述的数据和图形,是使用如下的lua脚本生成:
# cat r.lua
function thread_init()
h = sysbench.histogram.new(1000, 1, 100)
end
function event()
h:update(sysbench.rand.default(1, 100))
end
function thread_done()
h:print()
end
执行命令:
sysbench r.lua --time=1 --rand-type=special --verbosity=0 run
在yum仓库中默认安装的版本主要为1.0.20版:
$ /usr/bin/sysbench --version
sysbench 1.0.20
$ /usr/bin/sysbench --help
...
Pseudo-Random Numbers Generator options:
--rand-type=STRING random numbers distribution {uniform,gaussian,special,pareto} [special]
--rand-spec-iter=N number of iterations used for numbers generation [12]
--rand-spec-pct=N percentage of values to be treated as 'special' (for special distribution) [1]
--rand-spec-res=N percentage of 'special' values to use (for special distribution) [75]
--rand-seed=N seed for random number generator. When 0, the current time is used as a RNG seed. [0]
--rand-pareto-h=N parameter h for pareto distribution [0.2]
...
根据最新的仓库代码编译的版本为1.1.0版本:
$ sysbench --version
sysbench 1.1.0
$ sysbench --help
...
Pseudo-Random Numbers Generator options:
--rand-type=STRING random numbers distribution {uniform, gaussian, pareto, zipfian} to use by default [uniform]
--rand-seed=N seed for random number generator. When 0, the current time is used as an RNG seed. [0]
--rand-pareto-h=N shape parameter for the Pareto distribution [0.2]
--rand-zipfian-exp=N shape parameter (exponent, theta) for the Zipfian distribution [0.8]
...
可以看到这两个版本默认的--rand-type
分别是special
和uniform
。并且,在最新的版本中,已经不再支持special分布。
special
和uniform
对性能的影响这里依旧采取了,在压测”标准MySQL”时的测试模型,以AWS m6i.xlarge的实例进行对比测试。
主要sysbench参数:
--skip_trx=on --db-ps-mode=disable --rand-type=uniform
--skip_trx=on --db-ps-mode=disable --rand-type=special
性能详细数据:
2024-05@Benchmark for sysbench parameter --rand-type:uniform
host : stdbench
sub_dir : stdbench001.cjzowaj9vqpd.ap-northeast-1.rds.amazonaws.com
rand_type : uniform
region : ap-northeast-1
rds_instance_type : db.m6i.xlarge
engine : mysql
engine_version : 8.0
multi_az : 1
storage_type : io1
allocated_storage : 100
iops : 3000
sysbench for host :stdbench001.cjzowaj9vqpd.ap-northeast-1.rds.amazonaws.com
threads|transactions| queries| time |avg/Latency|95%/Latency
4| 28389| 511002|300.02| 42.27| 44.98
8| 56623| 1019214|300.04| 42.39| 45.79
16| 109908| 1978344|300.04| 43.67| 49.21
32| 211982| 3815676|300.04| 45.29| 53.85
48| 279987| 5039766|300.04| 51.43| 63.32
64| 318627| 5735303|300.03| 60.26| 74.46
96| 371719| 6690942|300.09| 77.49| 95.81
128| 395151| 7112735|300.05| 97.18| 125.52
192| 401868| 7233675|300.09| 143.34| 207.82
256| 400550| 7209951|300.18| 191.76| 272.27
384| 394248| 7096515|300.52| 292.43| 404.61
512| 385417| 6937540|300.29| 398.64| 539.71
2024-05@Benchmark for sysbench parameter --rand-type:special
host : stdbench
sub_dir : stdbench001.cjzowaj9vqpd.ap-northeast-1.rds.amazonaws.com
rand_type : special
region : ap-northeast-1
rds_instance_type : db.m6i.xlarge
engine : mysql
engine_version : 8.0
multi_az : 1
storage_type : io1
allocated_storage : 100
iops : 3000
sysbench for host :stdbench001.cjzowaj9vqpd.ap-northeast-1.rds.amazonaws.com
threads|transactions| queries| time |avg/Latency|95%/Latency
4| 28460| 512280|300.04| 42.17| 45.79
8| 56169| 1011042|300.04| 42.73| 45.79
16| 109255| 1966607|300.04| 43.93| 48.34
32| 212598| 3826934|300.04| 45.16| 52.89
48| 283140| 5096996|300.03| 50.86| 62.19
64| 317501| 5715919|300.05| 60.48| 73.13
96| 372169| 6701456|300.08| 77.40| 92.42
128| 395665| 7124690|300.07| 97.06| 127.81
192| 398775| 7181316|300.11| 144.46| 207.82
256| 391037| 7042576|300.17| 196.45| 277.21
384| 385273| 6940779|300.31| 299.15| 411.96
512| 386829| 6970181|300.74| 397.25| 549.52
可以看到,在当前的测试场景下,两者并没有表现出明显的性能差异。