sysbench的CPU,文件I/O,OLTP三种基准测试

sysbench是一款多线程系统压测工具,可以执行多种类型的基准测试,它不仅设计用来测试数据的性能,也可以测试运行数据库的服武器的性能

一,CPU基准测试

最典型的子系统测试

该测试使用64位整数,测试计算素数直到某个最大值所需要的时间

GNU/Linux服务器:

查看CPU配置:cat /proc/cpuinfo

分别在不同CPU配置的服务器中运行测试

sysbench --test=cpu --cpu-max-prime=20000 run

查看各自计算出素数的时间,进行比较

 

二,sysbench的文件I/O基准测试

fileio基准测试可以测试系统在不同I/O负载下的性能。这对于比较不同的硬盘驱动器,不同的RAID卡,不同的RAID模式,都很有帮助。

可以根据测试结果来调整I/O子系统。文件I/O基准测试模拟了很多InnoDB的I/O特性

测试的第一步是准备(prepare)阶段,生成测试用到的数据文件,生成的数据文件至少要比内存大。如果文件中的数据能完全放入内存中,则操作系统缓存大部分的数据,导致测试结果无法体现I/O密集型的工作负载。

通过下面的命令创建一个数据集:

sysbench --test=fileio --file-total-size=150G prepare

这个命令会在当前的工作目录下创建测试文件,后续的运行(run)阶段将通过读写这些文件进行测试。

第二部就是运行(run)阶段,针对不同的I/O类型有不同的测试选项:

seqwr 顺序写入

seqrewr 顺序重写

seqrd 顺序读取

rndrd 随机读取

rndwr 随机写入

rndrw 混合随机读/写

下面的命令运行文件I/O混合随机读/写基准测试

sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

结果:。。。

输出结果中包含了大量的信息。和I/O子系统密切相关的包括每秒请求数和总吞吐量。

时间信息也非常有用,尤其是大约95%的时间分布。这些数据对于评估磁盘性能十分有用。

测试完成后,运行清楚(cleanup) 操作删除第一步生成的测试文件:

sysbench --test=fileio --file-total-size=150G cleanup

三,sysbench的OLTP基准测试

OLTP基准测试模拟了一个简单的事务处理系统的工作负载

下面的例子使用的是一张超过百万行记录的表,第一步是先生成这张表:

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root prepare

生成测试数据只需要上面这条简单的命令即可。接下来可以运行测试,这个例子采用了8个并发线程,只读模式,测试时长60秒:

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-db=test --mysql-user=root --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run

结果:。。。

结果中包含了相当多的信息。其中最有价值的信息:

总的事务数

每秒事务数

时间统计信息()

线程公平性统计信息,用于表示模拟负载的公平性

----------------

sysbench还有一些其他的基准测试,但和数据库性能没有直接关系

内存(memory)

测试内存的连续读写性能

线程(thread)

测试线程调度器的性能。对于高负载情况下测试线程调度器的行为非常有用

互斥锁(mutex)

测试互斥锁的性能,方式是模拟所有线程在同一时刻并发运行,并都短暂请求互斥锁(互斥锁是一种数据结构,用来对某些资源进行排他性访问控制,防止因并发访问导致问题)

顺序写(seqwr)

测试顺序写的性能。这对于测试系统的实际性能瓶颈很重要。可以用来测试RAID控制器的告诉缓存的性能状况,如果测试结果异常则需要引起重视。例如,如果RAID控制器写缓存没有电池保护,而磁盘的压力达到了3000次请求/秒,就是一个问题,数据可能是不安全的。

你可能感兴趣的:(入门,初级)