1、IOPS和吞吐量介绍
-
IOPS(每秒输入/输出操作数):是衡量存储设备每秒能够执行的输入/输出操作的数量。对于数据库等需要频繁读写的应用程序而言,IOPS 是一个关键的性能指标。更高的 IOPS 意味着存储设备能够处理更多的读写请求,因此能够更快地响应应用程序的需求。
-
吞吐量:指存储系统在一定时间内能够传输的数据量。它通常以每秒传输的数据量(比特/字节)来衡量。吞吐量取决于存储系统的带宽和响应时间。较高的吞吐量表示存储系统能够以更快的速度传输数据。
在数据库系统中,IOPS 和吞吐量都是非常关键的性能指标。数据库的读写操作会对存储系统的 IOPS 和吞吐量产生影响,因此优化存储性能对于提升数据库性能至关重要。
2、Sysbench工具简介
Sysbench 是一个可编写脚本的多线程基准测试工具,基于 LuaJIT的。它最常用于数据库基准测试,但也用于创建不涉及数据库服务器。它可以测试 CPU、内存、文件系统和数据库等方面的性能,并提供了多种测试模式和参数配置选项。
sysbench 的一些常见用途包括:
-
数据库性能测试:sysbench 可以模拟多个用户同时访问数据库,并测量数据库处理能力、响应时间等指标。
-
CPU 和内存性能测试:sysbench 可以执行计算密集型任务和内存操作,并评估系统的计算和内存性能。
-
文件系统性能测试:sysbench 可以模拟文件读写操作,测试文件系统的性能和吞吐量。
-
线程调度性能测试:sysbench 可以模拟多线程并发执行,评估系统的线程调度性能。
3、Sysbench安装
下载地址:
Release Release 1.0.20 · akopytov/sysbench · GitHub
bash
[root@dt1 sysbench]# tar -xzvf sysbench-1.0.20.tar.gz
[root@dt1 sysbench]# cd sysbench-1.0.20
[root@dt1 sysbench-1.0.20]# yum install m4 autoconf automake libtool mysql-devel -y
[root@dt1 sysbench-1.0.20]# ./autogen.sh
[root@dt1 sysbench-1.0.20]# ./configure
[root@dt1 sysbench-1.0.20]# make && make install
[root@dt1 sysbench-1.0.20]# sysbench --version
4、磁盘压测
bash
#创建一个测试目录
[root@dt1 sysbench-1.0.20]# mkdir ../test
[root@dt1 sysbench-1.0.20]# cd ../test/
#创建4个文件,总共大小4G,一个块大小为16k
[root@dt1 test]# sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4g prepare
#用于运行文件 I/O 的基准测试
[root@dt1 test]# sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4G --file-test-mode=rndrw --file-extra-flags=direct --max-time=10 --max-requests=0 --file-fsync-freq=1 --num-threads=128 --report-interval=1 run
#清理创建的文件
[root@dt1 test]# sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4g cleanup
命令参数解释
1、sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4g prepare
- --test=fileio:指定进行文件 I/O 方面的基准测试。
- --file-num=4:设置要使用的文件数量为 4 个。
- --file-block-size=16384:设置每个文件的块大小为 16KB。
- --file-total-size=4g:设置所有文件的总大小为 4GB。
- prepare:执行准备阶段,创建并初始化测试所需的文件
2、sysbench --test=fileio --file-num=4 --file-block-size=16384 --file-total-size=4G --file-test-mode=rndrw --file-extra-flags=direct --max-time=10 --max-requests=0 --file-fsync-freq=1 --num-threads=128 --report-interval=1 run
- --test=fileio:指定进行文件 I/O 方面的基准测试。
- --file-num=4:设置要使用的文件数量为 4 个。
- --file-block-size=16384:设置每个文件的块大小为 16KB。
- --file-total-size=4G:设置所有文件的总大小为 4GB。
- --file-test-mode=rndrw:设置文件操作的模式为随机读写(random read-write)。
- --file-extra-flags=direct:使用直接 I/O 操作而不是缓存。
- --max-time=10:设置最长运行时间为 10 秒。
- --max-requests=0:设置每个线程执行的请求数目,0 表示无限制。
- --file-fsync-freq=1:设置 fsync 操作的频率为每次操作都执行。
- --num-threads=128:设置线程数为 128。
- --report-interval=1:设置报告输出的时间间隔为 1 秒
--file-test-mode 指定 sysbench 运行的工作负载类型,类型如下:
seqwr:顺序写入
seqrewr:顺序重写
seqrd:顺序读取
rndrd:随机读取
rndwr:随机写入
rndrw:随机读取/写入
MySQL 是一种数据库管理系统,它通常涉及随机读写而不是顺序读写,所以采用随机的类型
结果如下:
跟其他机器对比