探索fio参数如何选择以及全方位对比HDD和SSD性能

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

由于公司要部署一套Ceph环境,趁任务并不太着急,在部署之前先对HDD和SSD进行周密的测试,以便和部署之后的Ceph服务能力(RBD、CephFS、NFS的性能)进行对比。

本文的目的是解答如下几个问题:

  1. fio工具的参数到底该如何选择,比如:多长时间的runtime更经济?bs对测试结果有何影响?numjobsiodepth应该设置多少?
  2. 正儿八经了解一下HDD和SSD的性能。

本文有不少数据和图表,希望能够为有同样疑惑的朋友提供有益参考。(请阅读时注意BW的单位)

测试过程日志:https://github.com/get-set/fio-bench-disks-ceph/tree/master/disks

测试HDD性能

磁盘的配置如下:

  1. 磁盘为7200转3.5寸SAS机械硬盘;
  2. 根据部署Ceph的官方推荐配置,每块磁盘以RAID0单盘挂在RAID卡下,RAID卡为H730 mini(拥有1G缓存),具体配置:
    1. 开启预读(read-ahead);
    2. 开启写回(write-back),有电池;
    3. 关闭磁盘缓存(disk-cache)。

注:

  1. 为了加快测试速度,以下测试是在两台服务器上测试的,比如有可能随机写在第一台的/dev/sdd上测试,而随机读就是在另一台的/dev/sde上测试。但是确保针对所测试参数的同一类型的IO操作的所有参数变化都是在同一块硬盘上进行的,所以请只关注各参数内的纵向测试结果即可。
  2. RAID卡有缓存,由于是为后续部署和测试Ceph做前期测试,因此以下关于磁盘的测试结果是有RAID缓存加持的,请酌情参考

FIO参数对HDD测试的影响

1. runtime(测试时长)

一、测试目的

了解能够得到客观性能结果的最短时间,以便为后续的测试节省时间。

二、测试内容

测试4k随机读写64k顺序读写的过程中,不同的runtime所得到的测试结果,观察从多长时间开始就可以得到稳定的测试结果。

为了观察util值(磁盘利用率),将读写分别测试。

测试脚本fio.conf

[global]
ioengine=libaio      # 异步IO
direct=1             # 排除OS的IO缓存机制的影响
size=5g              # 每个fio进程/线程的最大读写
lockmem=1G           # 锁定所使用的内存大小
directory=/mnt/sdd   # XFS格式的磁盘,未直接用裸盘
iodepth=1            # 队列深度1(后续有关于参数的测试)
numjobs=1            # 同时开启的fio进程/线程数为1
rw=randread          # 每次测试修改该值:randread/read/randwrite/write
bs=4k                # 每次测试修改该值:rand对应4k,seq对应64k

[job]
runtime=10           # 本次测试runtime:10 20 30 40 50 60 90

测试命令:

mkdir -p logs/{runtime.4k_randread,runtime.4k_randwrite,runtime.64k_read,runtime.64k_write}
# 修改不同的rw和bs值,然后执行4次如下命令(注意修改tee输出的log目录)
for runtime in 10 20 30 40 50 60 90; do sed -i "/^runtime/c runtime=${runtime}" fio.conf && fio fio.conf | tee logs/runtime.4k_randread/${runtime}.log && sleep 10s; done

测试结果(IOPS和BW):

对于4k_randread64k_read64_writeIOPSBW值的观察可以基本看出,从30s之后,测试结果基本趋于稳定;而4k_randwrite看不到明显的稳定区间。

再观察磁盘利用率:

通过观察util的值,发现不同的测试方法大约都能够在30秒之后得到比较稳定的结果。对于随机读来说,似乎随着时间的延长而越来越乏力,与性能结果类似。

三、测试结论

对于随机读写和顺序读写的测试来说,runtime达到30-40秒即可得到相对客观的结果,保险起见也可以时间更长。

2. bs(块大小)

一、测试目的

观察不同的块大小对读写性能的影响。

二、测试内容

测试随机读写顺序读写的过程中,不同的bs所得到的测试结果。

为了观察util值(磁盘利用率),将读写分别测试。

测试脚本fio.conf

[global]
ioengine=libaio      # 异步IO
direct=1             # 排除OS的IO缓存机制的影响
size=5g              # 每个fio进程/线程的最大读写
lockmem=1G           # 锁定所使用的内存大小
runtime=30           # 根据上面的结论以后采用30值
directory=/mnt/sdd   # XFS格式的磁盘,未直接用裸盘
iodepth=1            # 队列深度1(后续有关于参数的测试)
numjobs=1            # 同时开启的fio进程/线程数为1
rw=randread          # 每次测试修改该值:randread/read/randwrite/write

[job]
bs=4k                # 本次测试bs:1k 2k 4k .. 64m

测试命令:

mkdir -p logs/{bs.randread,bs.randwrite,bs.read,bs.write}
# 修改不同的rw值,然后执行4次如下命令(注意修改tee输出的log目录)
for bs i
Ceph性能测试(RBD、CephFS、NFS、Cache Tier) 本文是以下两篇文章的后续: 探索fio参数如何选择以及全方位对比HDDSSD性能:部署Ceph前测试磁盘性能,同时基于fio测试参数的变化深入了解fio原理磁盘IO特点。 CentOS8使用cephadm部署配置Ceph Octopus:在CentOS8上使用cephadmin进行Ceph Octopus版本的部署,以及RBD、CephFS、NFS、RGW等的配置。 准备工作 首先,单独准备一台测试节点,起一个CentOS8的虚拟机,配好地址万兆网络。 确保网络带宽 使用iperf3工具测试. 阅读详情

相关推荐

FIO的基本概念

对于FIO,其是一个10测试工具,可以运行在多种操作系统上,用来测试本地磁盘、 网络存储等的性能FIO有以下基本概念,大家可以先了解一下: 1、基本概念 I/O类型-顺序读、顺序写、随机读、随机写 块大小-读写时规定的blocksize,一般为512B、4K、16K I/Osize-一次读写多大的数据,即每次io请求要读写多少数据,一般是1K/4K... 1M/4M等大小。 I/O引擎(I/Oengin...

weixin_38428439的博客 6399

Linux 性能观测之CPU平均负载

99%的焦虑都来自于虚度时间没有好好做事,所以唯一的解决办法就是行动起来,认真做完事情,战胜焦虑,战胜那些心里空荡荡的时刻,而不是选择逃避。不要站在原地想象困难,行动永远是改变现状的最佳方式Linux 平均负载指标可以说是最直观的查看 Linux 性能负载的指标,可以对CPU性能有直观的体现,性能调优大神在 Linux 60s 性能分析中最先讲到的工具为uptime,一起来看下如何理解这些平均负载指标。

山河已无恙 1803

磁盘I/O性能优化的几个思路

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等 虽然 I/O 的性能指标很多,相应的性能分析工具也有好几个,但理解了各种指标的含义后,你就会发现它们其实都有一定的关联。 顺着这些关系往下理解,你就会发现,掌握这些常用的瓶颈分析思路,其实并不难。 找出了 I/O 的性能瓶颈后,下一步要做的就是优化了,也就是如何以最快的速度完成 I/O操作,或者换个思路,减少甚至避免磁盘的 I/O 操作。 本文,我就来说说,优化 I/O 性能问题的思路注意事项。 I/O基准测试 按照我的习惯,..

Java____superman的博客 1795

fio -iodepth -numjobs 参数测试报告(转载)

fio工具中的iodepth参数与numjobs参数-对测试结果的影响测试环境3台服务器:ceph配置内外网分离,外网使用万兆线,内网使用千兆线,osd共21个。1台客户端:安装fio工具、内核客户端,使用万兆线。测试目的针对fio工具中的iodepth(队列深度)numjobs(线程数)参数,分析使用fio工具时,哪个参数对带宽值测试结果影响比较大。测试思路测试过程:集群通过内核客户端挂载到客...

jpmsdn的专栏 3626

Fio压测工具io队列深度理解误区

Fio 是个强大的IO压力测试工具,我之前写过不少fio的使用实践,参见 这里。 随着块设备的发展,特别是SSD盘的出现,设备的并行度越来越高。利用好这些设备,有个诀窍就是提高设备的iodepth, 一把喂给设备更多的IO请求,让电梯算法设备有机会来安排合并以及内部并行处理,提高总体效率。 应用使用IO通常有二种方式:同步异步。 同步的IO一次只能发出一个IO请求,等待内核完成才

niepangu的专栏 1万+

SSD vs HDD性能对比测试:用fio揭秘真实差距(附完整测试命令)

本文通过fio工具对SSDHDD进行全面的性能对比测试,揭示了二者在读写速度上的显著差异。测试结果显示,SSD在4K随机读写IOPS上远超HDD,最高可达472倍。文章提供了完整的测试命令参数解析,帮助读者科学评估存储设备性能,并为不同应用场景提供适配建议。

p8q9r0的博客 204

探索存储性能的视觉之旅:fio-plot项目深度解析

探索存储性能的视觉之旅:fio-plot项目深度解析 在当今高速发展的科技领域,对存储设备的性能评估是系统设计优化的关键环节。fio-plot,一款高效的数据可视化工具,专门针对由著名的存储性能测试软件FIO生成的基准数据进行图表化处理。本文旨在深入剖析fio-plot的特性、技术构成、应用场景,并展示其独特的优势,引导您如何利用这一开源宝藏提升您的数据解读效率。 项目介绍 fio-plot是一...

gitblog_01037的博客 1198

开源项目推荐:FIO——高性能I/O测试工具

在浩瀚的存储性能测试领域中,FIO(Flexible I/O Tester)犹如一颗璀璨明星。它是由Jens Axboe在处理Linux I/O子系统调度器问题时所创建,旨在提供一种灵活且强大的方法来模拟各种工作负载场景下的输入输出操作。不再受限于编写繁复的测试程序或单一用途的测试应用,FIO为开发者系统管理员带来了福音。 ### 技术分析 #### 灵活的工作负载模拟 FIO的核心优势在...

gitblog_00199的博客 1032

Vector v0.18.0 发布解读:失败事件路由、CSV 富化表、throttle 变换与升级迁移指南

本篇技术指南围绕 Vector 开源观测数据管道 v0.18.0 版本发布说明展开,系统梳理该版本新增的失败事件路由(failed event routing)、CSV 富化表(enrichment tables)、`throttle` 变换、隐式命名空间与 `aws_sqs` 源等核心特性,完整覆盖 5 项破坏性变更的迁移路径与已知问题清单,并结合当前仓库源码与配置示例给出可复现的实战配置。读完

gitblog_00660的博客 411

如何快速掌握KDiskMark:Linux磁盘性能测试的完整指南

KDiskMark是一款专为Linux系统设计的开源磁盘基准测试工具,能够帮助您轻松评估SSDHDD的读写性能。作为一款简单易用的图形化工具,它通过专业的测试方法为您的存储设备提供全面性能分析,让您了解磁盘的实际表现。 ## 📊 为什么需要磁盘性能测试? 在Linux系统中,磁盘性能直接影响系统响应速度应用程序运行效率。无论是日常办公还是专业开发,了解存储设备的实际性能都至关重要: -

gitblog_00666的博客 465

【NFS】NFS性能测试、优化

Ceph性能测试(RBD、CephFS、NFS、Cache Tier)nfs说到底还是性能坑,目前有其他高性能的替代方案么?为什么Linux上NFS性能只有几MB/S的速度?NAS性能:NFS,SambaGlusterFS。NFS服务优化 挂载优化 关于NFS内核优化。Linux NFS 客户端僵死。超算系统需要躲开的NFS大坑。NFS性能调优--实时监测。NFS文件系统挂载优化。NFS性能调优:实时监测。nfs挂载优化及优缺点。测试nfs文件读写速度。NFS的目录数量限制。NFS文件服务器使用。

qq_43286526的博客 1413

ceph性能优化

1.服务器2.内存3.硬盘4.网卡5.使用raid卡6.万兆交换机。

weixin_43493709的博客 2582

如何用KDiskMark快速诊断Linux磁盘性能:终极免费测试指南

你是否曾因Linux系统启动缓慢或文件复制卡顿而烦恼?这些问题很可能不是CPU或内存的锅,而是磁盘性能在暗中作祟!今天我要向你介绍一款专业的开源磁盘性能测试工具——KDiskMark,它能帮你快速定位存储设备的性能瓶颈,让你轻松掌握磁盘的真实表现。 ## 为什么你需要关注磁盘性能? 想象一下这样的场景:你刚买了一块全新的SSD,安装系统后却发现速度并没有达到预期。或者你的服务器在处理大量小文件

gitblog_01119的博客 647

深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!

这篇文章深入探讨了在云服务器或硬件服务器上部署应用服务时,如何优化系统的I/O性能。以I/O基准测试为起点,涵盖了应用程序、文件系统磁盘三个核心层面的优化技巧。通过调整参数、巧妙使用缓存、选择最优磁盘等实用手段,读者将领略到提升系统性能全方位指南。本文不仅是技能提升的得力助手,更是解锁系统潜能的秘钥,让您的系统摆脱性能瓶颈,焕发新生,迎接数字化时代的创新挑战!

欢迎来到技术蜜糖罐的IT角落! 801

RK3568开发板外接NVMe硬盘做数据盘?别急着格式化,先测速选对文件系统

本文详细介绍了如何在RK3568开发板上外接NVMe硬盘并进行性能优化。从硬件识别、基准测试到文件系统选型(ext4、f2fs、btrfs),再到挂载优化与内核调优,全面指导开发者最大化NVMe硬盘性能。特别强调在格式化前进行测速的重要性,并针对不同应用场景提供适配建议。

weixin_30781433的博客 121

存储器分类全解析:从RAM到SSD,搞懂计算机存储核心原理与选型

存储器是计算机系统中用于存放程序数据的核心部件,其工作原理直接决定了数据的存取速度与持久性。从基础的随机存取与顺序存取原理,到半导体、磁性、光学等不同存储介质的技术实现,存储器的设计始终在速度、容量、成本与持久性之间寻求最佳平衡。这一技术价值体现在构建高效、可靠的存储层次体系,以支撑从个人电脑到大型数据中心的各类应用场景。例如,易失性的DRAM作为主内存保障了程序运行的高速响应,而非易失性的NAND Flash则通过固态硬盘(SSD)技术彻底改变了存储格局。理解存储器的分类逻辑与特性,是进行硬件选型、系统

weixin_34296641的博客 344

3分钟快速上手:用KDiskMark轻松测出你的磁盘真实性能

还在为磁盘速度慢而烦恼吗?想了解你的固态硬盘是否达到标称速度?KDiskMark就是你的终极解决方案!这款简单易用的开源磁盘基准测试工具专为Linux用户设计,能够快速准确地评估存储设备的读写性能,无论是传统机械硬盘还是最新NVMe固态硬盘,都能一测便知。 ## 传统方法 vs KDiskMark方法:为什么你需要这款神器 在过去,Linux用户想要测试磁盘性能往往需要复杂的命令行操作,记忆各

gitblog_00990的博客 405

Flashcache实战指南:从零开始构建高性能块缓存系统

你是否曾为数据库查询缓慢而烦恼?是否希望用SSD加速传统硬盘的性能?Flashcache正是解决这些问题的利器!作为Linux下的回写式块缓存工具,Flashcache能够将快速存储设备(如SSD)作为慢速存储设备(如HDD)的缓存层,显著提升I/O性能。今天,让我们一步步探索如何配置优化这个强大的工具。 ## 🚀 快速上手:三步搭建你的第一个缓存 ### 1. 准备工作与环境检查 首先

gitblog_00646的博客 343
上一篇: HAProxy配置参数详解
下一篇: CentOS8使用cephadm部署和配置Ceph Octopus
享学IT
博客等级 码龄12年 1516粉丝 91原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值