测试工具fio

news2024/11/16 3:26:58
一、安装部署

fio是一款优秀的磁盘IO测试工具,在Linux中比较常用于测试磁盘IO

其下载地址:https://brick.kernel.dk/snaps/fio-2.1.10.tar.gz

或者登录其官网:http://freshmeat.sourceforge.net/projects/fio/ 进行下载。

tar -zxvf fio-fio-2.11.tar.gz 
cd fio-fio-2.11
./configure && make && make install
which fio
fio -v
fio多线程需要libaio引擎,yum install -y libaio-devel,后重新编译fio

二、主要性能指标

IOPS

每秒的IO数量。体现存储系统性能的最主要指标。现在主流的IOPS都在90K以上了(机械硬盘还在5K左右徘徊),比如模拟<4K>大小的文件读写。每秒最高能读或写90000个<4K>的文件;如果增加磁盘,则每秒IO数量就可以变多。比如增加相同的一块盘则IOPS就可以翻倍。

带宽(吞吐量)

每秒钟最大吞吐数据量的大小。每秒传输多大的数据比如500M/s。iops和带宽是正相关,因为知道每秒IO数量,和平均每个IO的大小则可以算出整体每秒数据量大小也就是带宽。IOPS * I/O size = Bandwidth。

大文件持续传输型的应用需要的是充分的带宽性能,而小文件随机读写的应用则要求足够的I/O能力。在存储领域有个不成文的规定,只要以IOPS来描述,那么就一般代表是小I/O(<32KB),以Bandwidth来描述,那就是大I/O(>32KB)。

延迟

是指完成一次IO请求所需的时间。延迟是关注存储性能时最重要的单个指标。

我们从发出请求到存储层的那一刻开始测量,并在获取请求的数据或确认数据已存储在磁盘上时停止测量。数据得到响应前需要等待的时间。

他和IOPS的区别:比如说我一个主机挂了一块SSD和100块HDD,SSD速度快其实就是延迟低,就是说我发送一条请求可以比HDD更快的返回。但是这里100块HDD的IOPS要高于SSD,因为他每秒能处理的IO要更多。

三、条件指标

访问方式:

顺序读写:比如将一个很大的文件写入。则读取大量的是相邻的顺序的数据块。这个模式可显示最高的吞吐量。主要是针对的大容量文件读写文件性能,这时我们主要关注带宽指标。

随机访问读写。不遵循文件的先后顺序,读写操作的时候能够任意跳到某个文件,主要作用是针对零碎文件(病毒扫描、启动程序等)任务。这时我们主要关注IOPS指标。

队列深度(iodepth):

它表示平均有多少I / O请求(在运行中),也就是同时处理多少个IO。拥有队列是有益的,因为队列中的请求可以以优化的方式(通常是并行方式)提交给存储子系统。

类似于cpu处理多线程,一个cpu处理一个线程一段时间然后切换到另一个线程去处理,这样每个线程处理时间提高了,但是充分利用了CPU性能提高了多线程的性能。加大硬盘队列深度就是让硬盘不断工作,减少硬盘的空闲时间。但是代价就是提高了延迟。

不同队列深度有着不同的性能表现,通常队列深度为1时有最好的延迟表现;随着队列深度的增加,其IOPS会随之增长,QD1~QD4基本是线性提升,QD8大概是QD4的双倍,QD16又是QD8的双倍,直到获得SSD的最大IOPS(一般是32);在未达到SSD的最大IOPS时,随着队列深度的增加,其延迟增加通常并不剧烈;在达到最大IOPS后,随着队列深度的增加,其IOPS趋于稳定,但延迟通常会随队列深度的增加而线性增长。

加大队列深度 -> 提高利用率 -> 获得IOPS和MBPS峰值 ->注意响应延迟在可接受的范围内

建议:也就是说队列深度最好设置到16或者32,以获得最大的IOPS。就是设置能达到最大IOPS的最小的队列深度。

线程数:比如设置为8。在固态硬盘内部,单次读取耗时主要分为两部分:寻址延迟时间和传输时间。单线程的时候,即使队列深度大于1,但每个访问请求的这两步都是串行的,也就是必须先寻址然后才能传输。而多线程的时候,不同线程的这两步是可以并行的。传输完线程1的数据后就可以马上开始线程2的数据传输。也就是提升线程数可以明显提升SSD的性能。但这个提升并不是倍数关系,因为可能2线程比1线程提升很大,但是8线程并不比2线程有很大幅度的性能提升。

四、fio指标解读

配置参数.fio

ioengine=libaio

libaio - Linux 原生的异步 I/O,这也是通常我们这边用的最多的测试盘吞吐和延迟的方法

sync - 也就是最通常的 read / write 操作

vsync - 使用 readv / writev,主要是会将相邻的 I/O 进行合并

psync - 对应的 pread / pwrite

pvsync / pvsync2 - 对应的 preadv / pwritev,以及 preadv2 / p writev2

rw=randrw

read - 顺序读

write - 顺序写

trim - 顺序裁剪

randread - 随机读

randwrite - 随机写

randtrim - 随机裁剪

rw, readwrite - 混合顺序读写

randrw - 混合的随机读写

trimwrite - 顺序的裁剪 + 顺序写

rwmixwrite=90 (混合模式使用)

混合读写中,写占的百分比

bs=4k(block size)一次io操作大小

通常我们都是读写使用相同的 block,譬如 bs=4k,我们还可以用 bs=4k,16k 来设置读是 4k,但写是 16k。每次4k的io进行测试

iodepth=16,队列深度

numjobs=8,线程数,比如设置8

size=512m,每个线程读写的数据量521M 传输完成就结束

IOPS: 每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一;

Bw: 带宽;

slat 表示fio 提交到内核某个I/O的延迟;

clat 表示fio 内核完成某个I/O的延迟;

lat 表示从fio将请求提交给内核,再到内核完成这个I/O为止所需要的时间;

关系是 lat = slat + clat

usr:表示用户空间进程;

sys:表示内核空间进程;

五、测试命令

参见:云硬盘 如何衡量云硬盘的性能-最佳实践-文档中心-腾讯云

或如何在Linux实例中使用FIO工具测试块存储性能_云服务器 ECS(ECS)-阿里云帮助中心

fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat --size=10G -filename=/dev/sda

bs = 4k iodepth = 1:随机读/写测试,能反映硬盘的时延性能

bs = 128k iodepth = 32:顺序读/写测试,能反映硬盘的吞吐性能

bs = 4k iodepth = 32:随机读/写测试,能反映硬盘的 IOPS 性能

测试nfs或samba共享存储时,命令中-filename=block_device要换成-directory=共享目录

裸盘的测试结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1788895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot整合Skywalking

下载Java Agent 官网&#xff1a;https://skywalking.apache.org/downloads/ 提示&#xff1a;Agent最好到网上找一找之前的版本&#xff0c;新版本可能有bug&#xff0c;如果出现了并且网上也几乎没有这个版本的解决方法那么就切换之前的版本 本地启动时 -javaagent:d:\opt\…

ABB码垛机器人IRB260通讯板维修

ABB码垛机器人在现代制造业中发挥着重要作用&#xff0c;而机器人通讯板维修对于确保机器人的正常运行至关重要。 通讯板是ABB码垛机器人与控制系统之间进行数据传输的桥梁。它负责接收控制系统的指令&#xff0c;并将机器人的运行数据反馈给控制系统。如果通讯板出现故障&…

郑州永兴牌饲料机械设备厂家

作为专注生产饲料机械设备厂家&#xff0c;郑州永兴不仅拥有完善的生产线和制造工艺&#xff0c;更在技术创新和产品研发方面走在了行业前列。 郑州永兴深知饲料机械设备对于饲料生产的重要性&#xff0c;因此始终坚持以市场需求为导向&#xff0c;不断推陈出新。其生产的饲…

黄金票据~

一. 黄金票据原理 黄金票据一般是伪造的TGT,生成这个TGT&#xff0c;不需要和KDC进行校验&#xff0c;金票可以在本地直接生成&#xff0c;生成的的金票在非域机器和域内机器都可以使用 黄金票据的作用&#xff1a; 可以用来权限维持 可以用来横向移动二. 利用条件 1. 必须…

Docker-compose 编排lnmp(dockerfile) 完成Wordpress

一、部署 Nginx 镜像 1. 建立工作目录 mkdir /opt/lnmp/nginx -pcd /opt/lnmp/nginx#上传 nginx 安装包 nginx-1.12.0.tar.gz#上传 wordpress 服务包 wordpress-4.9.4-zh_CN.tar.gz mkdir /opt/lnmp/nginx/htmltar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/lnmp/nginx/html…

html 使用svg矢量图时无法 调整宽高问题解决,不能像图片一样设置宽高比例问题

引入的路径后加 #svgView(preserveAspectRatio(none)) 具体代码如下 修改前 <img src"/assets/svgs/full_screen_full.svg" class"im"> 修改后 <img src"/assets/svgs/full_screen_full.svg#svgView(preserveAspectRatio(none))" cla…

TypeScript学习(一):开发环境搭建

官方文档搭建参考 https://learn.microsoft.com/zh-cn/training/modules/typescript-get-started/ 1.下载node.js https://nodejs.org/en/download 2.下载vscode https://code.visualstudio.com/ 3.在线ts的测试工具 https://www.typescriptlang.org/play/ 4.下载typescr…

pyqt QAxWidget 读写Excel文件

QaxWidget相比openpyxl 的方式区别是提供了图形界面&#xff0c;excel的输入修改不用再编写代码&#xff0e;activeX技术是个过时的技术&#xff0c;发挥下余热&#xff0e; # -*- coding: utf-8 -*- from PyQt5.QAxContainer import QAxWidget from PyQt5.QtWidgets import …

从人才战略到人才生态,金徽酒高增长的“明线”与“暗线”

执笔 | 文 清 编辑 | 扬 灵 2016年3月&#xff0c;金徽酒于A股上市&#xff0c;全年实现营收12.77亿元。2023年&#xff0c;金徽酒实现营收25.48亿元&#xff0c;比上市当年增加99.5%&#xff0c;近乎翻倍。而当我们深度关注金徽酒&#xff0c;在其业绩高增长的“明线”背…

c语言项目-贪吃蛇项目2-游戏的设计与分析

文章目录 前言游戏的设计与分析地图&#xff1a;这里简述一下c语言的国际化特性相关的知识<locale.h> 本地化头文件类项setlocale函数 上面我们讲到需要打印★&#xff0c;●&#xff0c;□三个宽字符找到这三个字符打印的方式有两种&#xff1a; 控制台屏幕的长宽特性&a…

【前端 - Vue】Vuex基础入门,创建仓库的详细步骤

&#x1f680; 个人简介&#xff1a;6年开发经验&#xff0c;现任职某国企前端负责人&#xff0c;分享前端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;前端菜鸟的自我修养❣️ &#x1f4dd; 专 栏&#xff1a;vue从基础到起飞 &#x1f308; 若有帮助&…

VOC格式标签各个字段的解释

想了解一下VOC格式数据标签各个字段的含义&#xff0c;搜了一圈没看到&#xff0c;懒得去官网了&#xff0c;直接问了GPT-4o&#xff0c;以下回答字段解析来自GPT-4o&#xff0c;例子我自己写的 VOC (Visual Object Classes) 数据标签格式主要用于目标检测任务。VOC格式的标签…

Mybatis01-初识Mybatis

简介 1、 什么是Mybatis MyBatis 是一款优秀的持久层框架; 它支持自定义 SQL、存储过程以及高级映射 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Ol…

AI绘画Stable Diffusion【隐藏文字】:将艺术字隐藏在国风云雾山水图中

大家好&#xff0c;我是灵魂画师向阳 今天我们分享一下用AI绘画工具Stable Diffusion制作网上很火的隐藏文字。这里以将艺术字隐藏在国风云雾山水图为例进行讲解&#xff0c;下面我们就来看看吧。 一. 艺术字隐藏在国风云雾山水图中制作方法 【第一步】&#xff1a;制作底图…

TH方程学习 (7)

一、内容介绍 TH存在广泛应用&#xff0c;在下面案例中&#xff0c;将介绍几种相对运动模型&#xff0c;斜滑接近模型&#xff0c;本节学习斜滑接近制导方法能够对接近时间、接近方向以及自主接近过程的相对速度进行控制。施加脉冲时刻追踪器的位置连线可构成一条直线&#xf…

PostgreSQL专家(pcp51)--王丁丁

#PostgreSQL培训 #postgresql认证 #postgreSQL考试 #PG考试 #PG培训

深入探索AliExpress API接口:技术实现与代码示例

AliExpress API是阿里巴巴集团为开发者提供的一套开放接口&#xff0c;它允许开发者通过编程方式访问AliExpress平台的数据&#xff0c;如商品信息、订单数据、物流信息等。API支持多种编程语言&#xff0c;包括Java、Python、PHP等&#xff0c;同时提供了丰富的API接口和详尽的…

CSS(盒子模型,定位,浮动,扩展)

CSS 盒子模型&#xff1a;外边距&#xff1a;内边距&#xff1a;水平居中&#xff1a; 定位&#xff1a;相对定位&#xff1a;绝对定位&#xff1a;固定定位&#xff1a; 浮动&#xff1a;扩展&#xff1a; 盒子模型&#xff1a; 盒子模型(Box Model) 规定了元素框处理元素内容…

多功能光时域反射仪的工作原理

6426A-2101多功能光时域反射仪是新一代掌上型智能化光纤通信测量仪器&#xff0c;具有强大的功能和广泛的应用领域。它能够显示光纤及光缆的损耗分布曲线图&#xff0c;测量光纤及光缆的多种关键参数&#xff0c;包括长度、损耗、接续质量等&#xff0c;为光纤通信系统的工程施…

vue2中使用tinymce

vue2中使用tinymce的记录 本篇文章主要实现的功能&#xff1a; &#xff08;1&#xff09;【查看】时禁用编辑 &#xff08;2&#xff09;【编辑】时某些内容是不可编辑的 实现效果图&#xff1a; 第一个功能的主要代码 disabled属性 // 使用地地方&#xff0c;传递disabled属…