sysbench文件读写测试

https://blog.csdn.net/m0_61066945/article/details/140063438

sysbench fileio prepare
这里主要举例子,上面3个参数是必选,其他参数可使用默认值。sysbench1.1 文件数量默认128,文件大小默认2GB
sysbench fileio --file-total-size=5G --file-test-mode=rndrw --file-num=16 prepare
sysbench fileio --file-total-size=5G --file-test-mode=rndrw prepare

这里--file-total-size表示测试文件的总大小为5GB,--file-test-mode=rndrw表示测试模式是随机读写,--file-num=16表示创建16个测试文件。
以测试随机读写为例,由于生成的数据文件使用的默认值,所以这里可以不指定;如果生成文件数/大小是自定义的,那么测试时需要指定的文件数/大小与prepare一致。
sysbench fileio --file-total-size=5G --file-test-mode=rndrw --file-num=16 --time=60 run
sysbench fileio --file-total-size=5G --file-test-mode=rndrw --file-block-size=1k --time=60 run
--time=60表示测试时间为60秒。
清理数据文件根据指定的数量来清理,sysbench fileio cleanup
比如不指定文件数据,默认清理128个,超过128个文件不会被清理
测试结束后,通过sysbench fileio --file-num=16 cleanup来清理测试文件。
测试结果会显示磁盘的读写速度、I/O操作延迟等信息。

sysbench fileio --file-test-mode=rndrw --threads=10 --time=60 --report-interval=5 run
比如设置线程数10、测试时间5s、每隔1秒输出1次结果。

1.1. 命令语法
硬盘读写需要使用sysbench内置的文件来测试,所以在测试前需要先生成文件,再运行。所以命令语法分为3部分
生成数据文件语法
sysbench fileio [选项] prepare

运行测试语法
sysbench fileio [选项] run

清理文件语法
sysbench fileio [选项] cleanup

1.2. 常用参数
注释内容中花括号{ }表示选项,方括号[ ]表示默认值
文件准备参数
--file-num=N # 指定创建的文件总数量[128]
--file-total-size=SIZE # 指定创建的文件总大小[2G]
常用测试参数

--file-block-size=N # 指定IO测试中使用的块大小[16k]
--file-test-mode=STRING # 指定测试模式{seqrd, seqwr, seqrewr, rndrd, rndwr, rndrw}
--file-io-mode=STRING # 指定文件操作模式{sync,async,mmap} [sync]
--file-rw-ratio=N # 指定读写比例 [1.5]
--file-extra-flags=[LIST,...] # 指定在打开文件时使用的额外选项{sync,dsync,direct}
刷盘参数 [ fsync() 表示强制将文件系统缓冲区中的数据写入到磁盘中,避免数据丢失 ]

--file-fsync-freq=N # 指定在多少次文件写入操作后调用fsync() [100]
--file-fsync-all[=on|off] # 每次写操作后执行fsync() [off]
--file-fsync-end[=on|off] # 在测试结束时执行fsync() [on]
--file-fsync-mode=STRING # 指定同步方法{fsync, fdatasync} [fsync]
--file-merged-requests=N # 控制在文件 I/O 测试中最多合并的 I/O 请求数量 [0],0表示禁用
其他常用参数

--threads=N # 测试线程数 [1]
--time=N # 测试时间(单位:s) [10]
--report-interval=N # 定期报告统计信息间隔时间(单位:s), 0表示禁用 [0]
--verbosity=N # 详细日志级别(0~5), 0表示只输出重要信息, 5表示输出debug [3]
--histogram=[on|off] # 输出延迟直方图 [off]

1.3. 参数详解
--file-test-mode=STRING

说明:指定测试模式

seqrd:顺序读取
seqwr:顺序写入
seqrewr:顺序混合读写
rndrd:随机读取
rndwr:随机写入
rndrw:随机混合读写
--file-io-mode=STRING

说明:指定文件操作模式(默认同步)

sync:同步模式。文件操作将按顺序执行,每次操作会等待数据写入完成后再返回结果。适合需要确保数据完整性和稳定性的场景。
async:异步模式。文件操作会尽可能快地执行,不等待数据写入完成即返回结果。适合对性能要求较高、可以容忍少量数据丢失的应用场景。
mmap:内存映射模式。通过内存映射文件的方式进行文件 I/O 操作。
--file-extra-flags=[LIST,...]

说明:用于指定在打开文件时使用的额外选项

sync:文件操作使用同步 I/O。即每次读写操作都会等待数据完全写入到物理存储介质后才返回结果。这确保了数据写入的稳定性和一致性,适合对数据完整性要求高的应用场景。
dsync:强制每次写操作都等待数据以及元数据(如文件描述符)都已写入磁盘后才返回。相比于sync,dsync仅需等待数据提交而不需等待硬件设备将所有数据写入。
direct:使用直接 I/O,即绕过文件系统缓存直接读取或写入磁盘。这可以减少对系统缓存的依赖,适合大文件或需要避免文件系统缓存影响的应用。
--file-fsync-mode=STRING

说明:用于指定文件同步操作的方法(默认fsync)

fsync:使用 fsync() 系统调用进行同步操作。fsync() 强制将文件系统缓冲区中的数据及其相关的元数据(如文件描述符)写入到磁盘中,确保数据持久化存储。这种方式可以提供更强的数据保护,但通常比 fdatasync 操作更耗时。
fdatasync:使用 fdatasync() 系统调用进行同步操作。与 fsync() 不同的是,fdatasync() 只等待数据部分被写入到磁盘,而不等待相关的文件描述符或其他元数据。因此,相比于 fsync(),fdatasync() 可以提供更高的性能,但牺牲了一些数据保护的严格性。

 

posted @ 2025-04-11 16:31  忧伤恋上了快乐  阅读(51)  评论(0)    收藏  举报