FIO使用总结

FIO使用总结FIO FlexibleI OTester 是一个功能强大的开源工具 用于测试和评估存储系统的性能

大家好,欢迎来到IT知识分享网。

概论

FIO(Flexible I/O Tester)是一个功能强大的开源工具,用于测试和评估存储系统的性能。它可以测试各种类型的存储设备,并提供丰富的配置选项,使用户能够模拟不同的负载场景。

FIO 可以在以下方面测试存储性能范围:

  1. 顺序读/写:测试存储设备对连续数据的读取和写入性能。这通常用于评估存储设备的吞吐量。
  2. 随机读/写:测试存储设备对随机数据访问的读取和写入性能。这通常用于评估存储设备的IOPS(每秒输入/输出操作数)。
  3. 混合读/写:测试存储设备在同时进行读取和写入操作时的性能。这可以模拟实际工作负载中的混合操作。
  4. 块大小:通过改变读写操作的块大小,可以测试存储设备在不同块大小下的性能。这有助于确定最佳的块大小设置。
  5. 并发连接:通过同时发起多个并行连接,可以测试存储设备在高并发负载下的性能。这有助于评估存储设备在多用户或多线程环境中的表现。6. 队列深度:通过调整请求队列的深度,可以测试存储设备在不同负载下的性能。这有助于评估存储设备在高负载情况下的响应能力。

FIO 还提供了许多其他配置选项,例如数据验证、文件系统类型、线程数、运行时间等,以满足不同测试需求。

需要注意的是,存储设备的性能受到多个因素的影响,包括硬件规格、驱动程序、操作系统配置等。因此,在进行性能测试时,建议根据实际需求和系统环境进行适当的配置和调优。请记住,存储性能测试可能对设备产生较大的负载,请小心操作,并确保备份重要数据。在进行任何性能测试之前,请详细阅读 FIO 的文档并了解其使用方法和注意事项。

环境准备

fio源码下载

  1. 代码地址:https://github.com/axboe/fio
git clone https://github.com/axboe/fio 

git clone git://git.kernel.dk/fio.git 
  1. 版本选择:当前使用3.9版本
ken@ken-work:/mnt/hgfs/03-vmware/fio$ git checkout fio-3.9 正在更新文件: 100% (248/248), 完成. 之前的 HEAD 位置是 e3ccbdd5 Fio 3.3 HEAD 目前位于 bb661c40 Fio 3.9 ken@ken-work:/mnt/hgfs/03-vmware/fio$ 

交叉编译

根据需要使用工具的平台,配置不同的交叉编译工具链,当前测试平台是NXP 的imx6,以下以此为例:

  1. 安装 Poky 交叉编译工具链(临时,重启不保存)
    执行工具链安装脚本:
./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 

新使能环境变量

source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi 
  1. 配置使用工具链:
./configure –cc=arm-poky-linux-gnueabi-gcc 

如果是直接加编译工具链到环境变量:

./configure –cc=arm-linux-gnueabihf-gcc 
  1. 编译:
    根目录下直接make即可,编译完成同目录会生成fio可执行文件,直接放到开发板上即可执行。

测试方法

测试前提

开始测试前,必须先初始化磁盘,可以按照以下步骤:

  1. trim
    blkdiscard

fio option

fio其中一种使用方式是直接传参,demo:

 #连续读 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=120 -group_reporting -name=mytest #随机读 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=120 -group_reporting -name=mytest #顺序写 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=60 -group_reporting -name=mytest #随机写 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=20G -numjobs=10 -runtime=60 -group_reporting -name=mytest #混合读写 fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=20G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop 

fio jobfile

如job file命名为“test”,则使用方式:fio test
fio jobfile demo:

cat fio.conf [global] ioengine=libaio iodepth=4 direct=1 runtime=60 time_based=1 size=1G group_reporting=1 thread=1 numjobs=2 bs=4k name='test' allow_mounted_write=1 nrfiles=1 #filename=/data/total.txt [seqread] rw=read filename=/data/fio_read_test.txt [seqwrite] rw=write filename=/data/fio_write_test.txt 

上面的job file转为option为:

#read 顺序读 fio -ioengine=libaio -direct=1 -bs=4k -nrfiles=1 -thread -rw=read -size=1G -filename=/data/fio_read_test.txt -name='test' -iodepth=4 -runtime=30 -numjobs=2 -time_based=1 -allow_mounted_write=1 -group_reporting #write 顺序写 fio -ioengine=libaio -direct=1 -bs=4k -nrfiles=1 -thread -rw=write -size=1G -filename=/data/fio_write_test.txt -name='test' -iodepth=4 -runtime=30 -numjobs=2 -time_based=1 -allow_mounted_write=1 -group_reporting 

基础参数详解

常见测试参数

 filename=/dev/sdc 支持文件系统或者裸设备,压测多个磁盘 --filename=/dev/sda:/dev/sdbdirect=1 测试过程绕过机器自带的buffer,使测试结果更真实rw=randwread 测试随机读的I/Orw=randwrite 测试随机写的I/Orw=randrw 测试随机混合写和读的I/Orw=read 测试顺序读的I/Orw=write 测试顺序写的I/Orw=rw 测试顺序混合写和读的I/Obs=4k 单次io的块文件大小为4kbsrange=512-2048 同上,指定定数据块的大小范围size=50g 本次的测试文件大小为50g,以每次4k的io进行测试numjobs=30 本次的测试线程为30runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止ioengine=psync io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包rwmixwrite=30 在混合读写的模式下,写占30%group_reporting 关于显示结果的,汇总每个进程的信息此外其他参数lockmem=1g 只使用1g内存进行测试zero_buffers 用0初始化系统buffernrfiles=8 每个进程生成文件的数量 
filename

在进行 FIO 测试时,需要注意以下几点:

  1. 数据安全:在测试时,请确保不会丢失重要的数据。建议在测试之前备份数据,并使用空白的测试文件或专门的测试设备进行测试。
  2. 文件大小:测试文件的大小应该足够大,以便准确评估存储系统的性能表现。一般来说,测试文件的大小应该超过存储设备缓存大小,同时也要考虑到测试时间和存储空间的限制。
  3. 权限设置:进行 FIO 测试时,需要足够的权限才能访问指定的文件或设备。请确保你有足够的权限来读取和写入指定的文件或设备。
  4. 测试环境:在进行 FIO 测试时,请保证测试环境的稳定性和可靠性。关闭可能会干扰测试结果的后台进程,如防病毒软件、备份软件等。

总之,在使用 FIO 进行性能测试时,要根据实际情况正确设置 filename 参数,并考虑到数据安全、文件大小、权限设置和测试环境等因素,以便获取准确和可靠的测试结果。

bs 单次io的块文件大小
  1. 吞吐量(Throughput):通常情况下,较大的单次 IO 块大小会导致更高的吞吐量。这是因为较大的块大小可以使操作系统和存储设备更有效地利用预读和预写等机制,从而提高数据传输速度。但是,当单次 IO 块大小超过一定值后,吞吐量可能会开始下降,这是因为存储设备处理大块数据时会占用更长的时间。
  2. 延迟(Latency):较小的单次 IO 块大小通常会导致更低的延迟,因为每个 I/O 操作读取或写入的数据量更少,操作系统和存储设备可以更快地处理这些操作。但是,较小的块大小也可能会导致更频繁的 I/O 操作和更高的 CPU 开销,从而影响整体性能。
  3. 工作负载(Workload):单次 IO 块大小的设置也会影响测试所模拟的工作负载类型。较小的块大小通常适用于随机访问的工作负载,而较大的块大小则适用于顺序访问的工作负载。因此,在进行测试时需要根据实际需求选择合适的块大小。
  4. 稳定性(Stability):单次 IO 块大小还会影响测试的稳定性。一些存储设备可能对较小或较大的块大小有特定的限制,如果超过了这个限制,测试结果可能会出现异常。因此,在进行测试前需要先了解存储设备的规格和限制。
ioengine io引擎

ioengine参数用于指定用于执行 I/O 操作的方法和引擎,不同的引擎对于不同类型的负载和存储设备具有不同的适应性,因此在选择合适的ioengine参数时需要考虑以下几个方面:

  1. 同步/异步操作:不同的ioengine可以使用不同的 I/O 操作模式,比如同步 I/O 或异步 I/O。同步 I/O 会在发出 I/O 请求后一直等待直到 I/O 操作完成,而异步 I/O 则允许应用程序在等待 I/O 完成的同时执行其他操作。这会对测试结果产生显著影响,特别是在高并发负载下。
  2. 性能特征:不同的ioengine可能对性能有着不同的影响。例如,某些引擎可能在随机读取和写入方面表现更好,而另一些则可能在顺序读取和写入方面更有优势。在选择ioengine时需要结合实际的应用场景和负载特征进行评估。
  3. 支持的特性:某些ioengine可能支持特定的特性,比如支持 TRIM 命令的 SSD 优化引擎,或者支持 O_DIRECT 标志的绕过文件系统缓存的引擎。根据存储设备和测试需求,选择合适的ioengine可以充分发挥存储设备的性能优势。
  4. 兼容性:不同的ioengine可能对不同的操作系统、文件系统和存储设备具有不同的兼容性,需要确保所选择的引擎能够正常工作并产生可靠的测试结果。

综上所述,ioengine参数对于 FIO 测试结果具有重要的影响,需要根据实际的测试需求和环境特征来选择合适的引擎。在进行测试时,可以尝试不同的ioengine参数,并根据实际的性能表现来做出最佳选择。

以下是一些常见的 ioengine:

  1. sync:这是最基本的引擎,执行同步 I/O 操作。它对于简单的性能测试很有用,但在高并发和高负载下可能表现不佳。
  2. libaio:这是 Linux 下的一个异步 I/O 引擎,可以实现较高的并发性能。它适合于评估异步 I/O 的性能,并且在高并发情况下通常表现比较出色。
  3. posixaio:这也是一个异步 I/O 引擎,但是使用了 POSIX 接口。与 libaio 相比,posixaio 可能在某些环境下表现更好,因为它使用了系统标准的 POSIX 接口。
  4. mmap:这个引擎使用了内存映射文件进行 I/O 操作,可以用于测试对内存映射 I/O 性能的评估。
  5. psync:这是一个用于测试 O_SYNC 语义(即强制数据到达磁盘)的引擎,适用于需要强一致性的场景。
  6. sg:这个引擎通过 SCSI generic 设备进行 I/O 操作,适用于测试硬件 RAID 卡等特殊设备的性能。
  7. rbd:这个引擎用于测试 Ceph 分布式存储集群中的 Rados 块设备(RBD)的性能。
  8. spdk_bdev:这是针对 SPDK(Storage Performance Development Kit)的块设备引擎,用于测试 SPDK 所支持的存储后端。
iodepth I/O 请求深度

iodepth 参数是 FIO 中一个非常重要的参数,它用于指定在进行 I/O 操作时并发的 I/O 请求深度。换句话说,iodepth 定义了同时发出的 I/O 请求数量,它对测试结果有着重要的影响。

以下是 iodepth 参数对测试结果的一些影响:

  1. 性能评估:iodepth 参数可以影响测试中的并发度,从而影响存储系统的性能表现。较大的 iodepth 可以模拟更高的并发负载,有助于评估存储设备在高并发情况下的性能表现。
  2. 延迟和吞吐量:通过调整 iodepth 参数,可以观察到不同并发度下的 I/O 请求延迟和吞吐量的变化。通常情况下,较大的 iodepth 值会导致更低的平均延迟,但同时也可能会影响到系统整体的吞吐量。
  3. 对存储设备的影响:不同类型的存储设备对 iodepth 的响应可能不同。例如,对于某些 SSD 设备,较大的 iodepth 可能有助于充分发挥其并行处理能力,从而提高性能。
  4. 应用场景匹配:根据实际的应用场景和负载特征,选择合适的 iodepth 值对于准确评估存储设备的性能非常重要。例如,对于高并发的数据库工作负载,使用较大的 iodepth 可能更贴近实际需求。
size

size 参数用于指定测试数据的大小。它是一个关键参数,对于测试的准确性和可重复性非常重要。

size 参数有多种不同的用法和单位,具体取决于你想要测试的类型和需求。

下面是一些常见的 size 参数使用情况及其含义:

  1. 总数据量:你可以使用 size 参数来指定要测试的总数据量。它通常用于顺序读写测试和随机读写测试中。例如,size=1G 表示测试数据的总量为 1 GB。
  2. 块数:你还可以使用 size 参数来指定测试数据的块数。这在顺序读写测试和随机读写测试中比较常见。例如,size=100k 表示测试数据由 100,000 个块组成。
  3. 文件大小:当你需要创建一个指定大小的文件进行测试时,可以使用 size 参数来指定文件的大小。例如,size=10G 表示创建一个大小为 10 GB 的文件。
  4. 每个作业的数据量:在并发测试中,你可以使用 size 参数来指定每个作业(job)的数据量。这对于模拟多个并发请求或多个客户端同时操作的场景很有用。例如,size=500M 表示每个作业使用的数据量为 500 MB。
  5. 块设备大小:在测试块设备(如硬盘、SSD)时,你可以使用 size 参数来指定测试数据的大小以匹配块设备的大小。这样可以确保测试数据覆盖整个设备。例如,size=100% 表示使用整个块设备进行测试。

需要注意的是,size 参数的单位包括字节(B)、千字节(K、KB)、兆字节(M、MB)、吉字节(G、GB)等。你可以根据需要选择适当的单位。

总之,size 参数用于定义测试数据的大小,可以根据具体的测试需求和场景来设置。确保在进行测试之前,仔细选择和设置合适的 size 参数,以获得准确可靠的测试结果。

direct 使用内核缓存

direct 参数用于控制测试数据是否通过内核缓存进行读写。当 direct=1 时,测试数据将直接从磁盘读取或写入磁盘,不经过内核缓存;当 direct=0 时,则会使用内核缓存。

使用 direct=1 可以避免内核缓存对测试结果的干扰,这对于测试硬件性能和应用程序的实际性能非常重要。但是,由于绕过了内核缓存,读写性能可能会受到一些影响,因此需要在使用时进行权衡。

下面是一些关于 direct 参数的详细说明:

  1. 直接 I/O:当 direct=1 时,FIO 将使用直接 I/O 访问测试数据,即读写数据时不经过内核缓存,而是直接与磁盘交互。这样可以确保测试结果不会被内核缓存影响,但也可能会降低性能。直接 I/O 对于测试文件系统、RAID、LVM 和其他高级存储技术非常有用。
  2. 缓存 I/O:当 direct=0 时,FIO 将使用缓存 I/O 访问测试数据,即读写数据时先将其读入内核缓存中,然后再与磁盘交互。这样可以提高性能,但可能会受到内核缓存大小和其他因素的限制。缓存 I/O 对于测试应用程序的实际性能非常有用。
  3. 默认值:如果未指定 direct 参数,则默认值为 0,即使用缓存 I/O 访问测试数据。
  4. 注意事项:使用 direct=1 时,你需要确保测试数据不会被修改或删除。如果在测试过程中发生了这种情况,可能会导致数据丢失或文件系统损坏。

总之,direct 参数用于控制测试数据是否经过内核缓存,可以根据具体的测试需求和场景来设置。对于测试硬件性能和应用程序的实际性能,建议使用 direct=1;对于测试文件系统、RAID、LVM 和其他高级存储技术,也建议使用 direct=1。对于测试内存和其他通用 I/O 操作,建议使用 direct=0。

runtime 运行时间

runtime 参数用于指定测试运行的时间。它是一个非常重要的参数,可以控制测试的执行时间和测试负载的持续性。 runtime 参数通常与其他参数一起使用,如 size、iodepth 和 numjobs 等。

下面是一些关于 runtime 参数的详细说明:

  1. 测试运行时间:runtime 参数指定测试运行的时间,可以使用秒(s)、分钟(m)或小时(h)作为单位。例如,runtime=10s 表示测试运行 10 秒。
  2. 默认值:如果未指定 runtime 参数,则默认值为 0,即运行测试直到完成或出现错误为止。3. 测试持续性:使用 runtime 参数可以控制测试负载的持续性,从而更好地模拟实际应用场景。通过设置适当的 runtime 值,可以确保测试负载在一定时间内持续进行,而不会过早终止或持续太长时间。
  3. 注意事项:需要注意的是,runtime 参数只控制测试的运行时间。如果测试负载在指定时间内未完成,则测试将被强制停止。如果测试负载已经完成,但仍有作业正在运行,则这些作业将被允许继续运行直到完成。

总之,runtime 参数用于控制测试运行的时间,可以根据具体的测试需求和场景来设置。建议根据预期的测试负载持续时间和性能要求,设置合适的 runtime 值。同时,需要注意在测试过程中及时检查测试输出,以确保测试结果的准确性和可靠性。

time_based

time_based 参数用于控制测试是否基于时间。它是一个布尔值(true 或 false),默认为 false。

当 time_based=true 时,FIO 将基于时间来运行测试并控制测试的持续时间,即使用 runtime 参数指定测试运行的时间;当 time_based=false 时,则使用 numjobs 和 size 参数来控制测试的持续时间。

总之,time_based 参数用于控制测试是否基于时间,可以根据具体的测试需求和场景来设置。建议对于需要测试不同负载情况下的性能,或者需要测试一段指定时间内的性能表现,可以使用基于时间的测试;对于需要测试一定负载下的性能表现,可以使用非基于时间的测试。同时,需要根据实际情况选择合适的参数组合来进行测试,以获得准确、可靠的测试结果。

numjobs 作业数量

numjobs 参数用于指定并行执行的作业数量。它是一个整数值,默认为 1。

下面是一些关于 numjobs 参数的详细说明:

  1. 并行作业:numjobs 参数用于控制同时执行的作业数量。每个作业都会创建一个线程或进程来执行 I/O 操作。通过增加 numjobs 的值,可以实现并行执行多个作业,并同时模拟多个客户端或线程的负载。
  2. 性能测试:通过增加 numjobs 参数的值,可以模拟并发请求,并测试系统在高负载情况下的性能表现。较高的 numjobs 值通常可以提供更高的吞吐量和更低的延迟。
  3. CPU 和内存要求:请注意,增加 numjobs 值将会增加系统的 CPU 和内存资源需求。确保系统具备足够的硬件资源来支持所配置的并发作业数量,以避免资源竞争或性能下降。
  4. 数据一致性:在使用 numjobs 参数时,需要确保测试环境和测试目标支持并行执行的一致性操作。如果测试目标是共享存储系统或分布式文件系统,可能需要进行额外的配置来确保数据的一致性。

总之,numjobs 参数用于指定并行执行的作业数量,可以根据测试需求和系统资源情况来进行设置。适当增加 numjobs 值可以模拟并发请求并测试系统性能,但需要注意确保系统具备足够的硬件资源来支持所配置的并发作业数量。

group

group_reporting 参数用于控制是否将测试结果按组进行报告。它是一个布尔值(true 或 false),默认为 false。

下面是一些关于 group_reporting 参数的详细说明:

  1. 单个作业报告:当 group_reporting=false 时,FIO 将为每个作业生成独立的报告。即每个作业都会生成自己的性能指标和结果。这种模式适用于需要对每个作业进行单独分析和比较的情况。
  2. 组合报告:当 group_reporting=true 时,FIO 将生成一个汇总的报告,将所有作业的性能指标和结果合并在一起。这种模式适用于需要对整个测试任务的总体性能进行分析和比较的情况。
  3. 结果显示:无论是单个作业报告还是组合报告,FIO 在运行过程中会实时输出结果。但是,如果 group_reporting=true,则只会在整个测试任务完成后生成一个包含所有作业的汇总报告。
  4. 分析和比较:通过使用 group_reporting 参数,可以根据实际需求选择性生成单个作业报告或组合报告。根据报告的内容,可以对作业的性能进行分析和比较,以评估不同配置或环境下的性能差异。

总之,group_reporting 参数用于控制 FIO 是否将测试结果按组进行报告。根据需要选择生成单个作业报告或组合报告,以便对作业的性能进行分析和比较。

thread

thread 参数用于指定每个作业使用的线程数量。它是一个整数值,默认为 1。

下面是一些关于 thread 参数的详细说明:

  1. 并发执行:thread 参数用于控制每个作业的并发执行。通过增加 thread 的值,可以让每个作业使用多个线程来同时执行 I/O 操作,从而实现并发负载。
  2. 性能测试:通过增加 thread 参数的值,可以模拟并发请求,并测试系统在高负载情况下的性能表现。较高的 thread 值通常可以提供更高的吞吐量和更低的延迟。
  3. CPU 和内存要求:请注意,增加 thread 值将会增加系统的 CPU 和内存资源需求。确保系统具备足够的硬件资源来支持所配置的并发线程数量,以避免资源竞争或性能下降。
  4. 数据一致性:在使用 thread 参数时,需要确保测试环境和测试目标支持并发执行的一致性操作。如果测试目标是共享存储系统或分布式文件系统,可能需要进行额外的配置来确保数据的一致性。

总之,thread 参数用于指定每个作业使用的线程数量,可以根据测试需求和系统资源情况来进行设置。适当增加 thread 值可以模拟并发请求并测试系统性能,但需要注意确保系统具备足够的硬件资源来支持所配置的并发线程数量。

allow_mounted_write

allow_mounted_write 参数用于控制是否允许在已挂载的文件系统上进行写入操作。它是一个布尔值(true 或 false),默认为 false。

下面是一些关于 allow_mounted_write 参数的详细说明:

  1. 写入操作:当 allow_mounted_write 设置为 true 时,FIO 允许在已挂载的文件系统上执行写入操作。这意味着可以在运行测试时向已挂载的文件系统写入数据。
  2. 风险和注意事项:在启用 allow_mounted_write 的情况下,需要注意潜在的风险和注意事项。写入操作可能会影响已挂载的文件系统上的数据完整性和一致性。请确保在测试过程中不会对重要数据产生负面影响。
  3. 测试场景:在某些测试场景下,可能需要在已挂载的文件系统上执行写入操作。例如,可以使用 FIO 在运行中的数据库服务器上模拟负载,以测试数据库系统的性能和稳定性。
  4. 安全性考虑:在生产环境中,强烈建议将 allow_mounted_write 设置为 false,以防止意外的写入操作对数据造成损坏或数据丢失的风险。在非生产环境中进行测试时,谨慎地评估和控制已挂载文件系统上的写入操作。

总之,allow_mounted_write 参数用于控制是否允许在已挂载的文件系统上执行写入操作。默认情况下,FIO 不允许对已挂载的文件系统进行写入操作。在启用该参数时,请注意潜在的风险和注意事项,并确保在合适的环境中进行测试。

nrfiles

nrfiles 参数用于指定每个作业使用的文件数量。它是一个整数值,没有默认值。

下面是一些关于 nrfiles 参数的详细说明:

  1. 文件数量:nrfiles 参数用于指定每个作业使用的文件数量。这意味着在测试期间,每个作业将打开和使用指定数量的文件。
  2. 性能影响:增加 nrfiles 可以提高测试的并发度和负载,从而进一步评估系统的性能和稳定性。然而,同时打开过多的文件可能会对系统性能产生不利影响,因此需要谨慎地选择适当的 nrfiles 值。
  3. 作业标识:在测试配置文件中定义多个作业时,可以通过为每个作业设置不同的 nrfiles 值来区分它们并对其进行管理。
  4. 文件大小:在设置 nrfiles 时,还需要考虑每个文件的大小。如果文件太小,则可能需要增加 nrfiles 来模拟更真实的负载。如果文件太大,则需要减少 nrfiles 以避免过多占用系统资源。

总之,nrfiles 参数用于指定每个作业使用的文件数量。通过适当的 nrfiles 值,可以提高测试的并发度和负载,从而更好地评估系统的性能和稳定性。

测试场景

SD/TF卡
顺序读写
[global] #filename=/data/total.txt rw=write ioengine=libaio iodepth=4 direct=1 runtime=60 time_based=1 size=1G group_reporting=1 thread=1 numjobs=2 bs=4k name='test' allow_mounted_write=1 nrfiles=1 
随机读写
混合读写

输出结果详解

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129739.html

(0)
上一篇 2025-08-22 13:15
下一篇 2025-08-22 13:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信