Sign inSign up

basefly/fio

By basefly

Updated 6 months ago

fio 镜像

Image
0

899

basefly/fio repository overview

一种自动化的: https://github.com/openebs/performance-benchmark/blob/master/fio-benchmarks/fio-deploy.yaml

quick start

随机写IOPS:
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
随机读IOPS:
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing
顺序写吞吐量:
fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
顺序读吞吐量:
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing
随机写时延:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=iotest -name=Rand_Write_Latency_Testing
随机读时延:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=iotest -name=Rand_Read_Latency_Testing
本地盘性能测试命令
以下测试命令适用于NVMe SSD本地盘和SATA HDD本地盘。

说明 本示例中,使用的设备名为/dev/your_device,请您根据实际情况替换。例如需要测试的本地盘为/dev/vdb,则将以下示例命令中的/dev/your_device替换为/dev/vdb。
随机写IOPS:
fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
随机读IOPS:
fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
顺序写吞吐量:
fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
顺序读吞吐量:
fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
随机写延迟:
fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
随机读延迟:
fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
顺序写延迟:
fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
顺序读延迟:
fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test

 
参数解释

-direct=1	表示测试时忽略I/O缓存,数据直写。
-iodepth=128	表示使用异步I/O(AIO)时,同时发出I/O数的上限为128。
-rw=randwrite	表示测试时的读写策略为随机写(random writes)。其它测试可以设置为:
randread(随机读random reads)
read(顺序读sequential reads)
write(顺序写sequential writes)
randrw(混合随机读写mixed random reads and writes)
-ioengine=libaio	表示测试方式为libaio(Linux AIO,异步I/O)。应用程序使用I/O通常有两种方式:
同步
同步的I/O一次只能发出一个I/O请求,等待内核完成才返回。这样对于单个线程iodepth总是小于1,但是可以透过多个线程并发执行来解决。通常会用16~32根线程同时工作将iodepth塞满。

异步
异步的I/O通常使用libaio这样的方式一次提交一批I/O请求,然后等待一批的完成,减少交互的次数,会更有效率。

-bs=4k	表示单次I/O的块文件大小为4 KiB。默认值也是4 KiB。
测试IOPS时,建议将bs设置为一个较小的值,如4k。
测试吞吐量时,建议将bs设置为一个较大的值,如1024k。
-size=1G	表示测试文件大小为1 GiB。
-numjobs=1	表示测试线程数为1。
-runtime=1000	表示测试时间为1000秒。如果未配置,则持续将前述-size指定大小的文件,以每次-bs值为分块大小写完。
-group_reporting	表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。
-filename=iotest	指定测试文件的名称,例如iotest。
-name=Rand_Write_Testing	表示测试任务名称为Rand_Write_Testing,可以随意设定。

Dockerfile
FROM rockylinux/rockylinux:9
RUN dnf install fio -y && dnf clean all; \
    rm -rf /var/cache/dnf/* /tmp/* /var/tmp/*
CMD tail -f /dev/null

Tag summary

Content type

Image

Digest

sha256:a27f03351

Size

98.8 MB

Last updated

6 months ago

docker pull basefly/fio