我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux系统中FIO常用命令有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux系统中FIO常用命令有哪些

小编给大家分享一下Linux系统中FIO常用命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,他可以通过多线程或进程模拟各种io操作。

Linux系统中FIO常用命令有哪些

FIO 工具常用参数:

 参数说明:  filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。  direct=1 是否使用directIO,测试过程绕过OS自带的buffer,使测试磁盘的结果更真实。Linux读写的时候,内核维护了缓存,数据先写到缓存,后面再后台写到SSD。读的时候也优先读缓存里的数据。这样速度可以加快,但是一旦掉电缓存里的数据就没了。所以有一种模式叫做DirectIO,跳过缓存,直接读写SSD。  rw=randwrite 测试随机写的I/O  rw=randrw 测试随机写和读的I/O  bs=16k 单次io的块文件大小为16k  bsrange=512-2048 同上,提定数据块的大小范围  size=5G 每个线程读写的数据量是5GB。  numjobs=1 每个job(任务)开1个线程,这里用了几,后面每个用-name指定的任务就开几个线程测试。所以最终线程数=任务数(几个name=jobx)* numjobs。  name=job1:一个任务的名字,重复了也没关系。如果fio -name=job1 -name=job2,建立了两个任务,共享-name=job1之前的参数。-name之后的就是job2任务独有的参数。  thread  使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。  runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。  ioengine=libaio 指定io引擎使用libaio方式。libaio:Linux本地异步I/O。请注意,Linux可能只支持具有非缓冲I/O的排队行为(设置为“direct=1”或“buffered=0”);rbd:通过librbd直接访问CEPH Rados  iodepth=16 队列的深度为16.在异步模式下,CPU不能一直无限的发命令到SSD。比如SSD执行读写如果发生了卡顿,那有可能系统会一直不停的发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫做队列深度。  Block Devices(RBD),无需使用内核RBD驱动程序(rbd.ko)。该参数包含很多ioengine,如:libhdfs/rdma等  rwmixwrite=30 在混合读写的模式下,写占30%  group_reporting 关于显示结果的,汇总每个进程的信息。  此外  lockmem=1g 只使用1g内存进行测试。  zero_buffers 用0初始化系统buffer。  nrfiles=8 每个进程生成文件的数量。  磁盘读写常用测试点:  1. Read=100% Ramdon=100% rw=randread (100%随机读)  2. Read=100% Sequence=100% rw=read (100%顺序读)  3. Write=100% Sequence=100% rw=write (100%顺序写)  4. Write=100% Ramdon=100% rw=randwrite (100%随机写)  5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30  (70%顺序读,30%顺序写)  6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30  (70%随机读,30%随机写)

fio例子:

 [root@docker sda]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=read -filename=/dev/sda -name="BS 4KB read test" -iodepth=16 -runtime=60  BS 4KB read test: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16  fio-3.7  Starting 1 thread  Jobs: 1 (f=1): [R(1)][100.0%][r=89.3MiB/s,w=0KiB/s][r=22.9k,w=0 IOPS][eta 00m:00s]  BS 4KB read test: (groupid=0, jobs=1): err= 0: pid=18557: Thu Apr 11 13:08:11 2019     read: IOPS=22.7k, BW=88.5MiB/s (92.8MB/s)(5313MiB/60001msec)      slat (nsec): min=901, max=168330, avg=6932.34, stdev=1348.82      clat (usec): min=90, max=63760, avg=698.08, stdev=240.83       lat (usec): min=97, max=63762, avg=705.17, stdev=240.81      clat percentiles (usec):       |  1.00th=[  619],  5.00th=[  627], 10.00th=[  627], 20.00th=[  635],       | 30.00th=[  635], 40.00th=[  685], 50.00th=[  717], 60.00th=[  725],       | 70.00th=[  725], 80.00th=[  725], 90.00th=[  734], 95.00th=[  816],       | 99.00th=[ 1004], 99.50th=[ 1020], 99.90th=[ 1057], 99.95th=[ 1057],       | 99.99th=[ 1860]     bw (  KiB/s): min=62144, max=91552, per=100.00%, avg=90669.02, stdev=3533.77, samples=120     iops        : min=15536, max=22888, avg=22667.27, stdev=883.44, samples=120    lat (usec)   : 100=0.01%, 250=0.01%, 500=0.01%, 750=93.85%, 1000=5.14%    lat (msec)   : 2=0.99%, 4=0.01%, 10=0.01%, 50=0.01%, 100=0.01%    cpu          : usr=5.35%, sys=23.17%, ctx=1359692, majf=0, minf=17    IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0%       submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%       complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%       issued rwts: total=1360097,0,0,0 short=0,0,0,0 dropped=0,0,0,0       latency   : target=0, window=0, percentile=100.00%, depth=16    Run status group 0 (all jobs):     READ: bw=88.5MiB/s (92.8MB/s), 88.5MiB/s-88.5MiB/s (92.8MB/s-92.8MB/s), io=5313MiB (5571MB), run=60001-60001msec    Disk stats (read/write):    sda: ios=1357472/0, merge=70/0, ticks=949141/0, in_queue=948776, util=99.88%

io=执行了多少M的IO

bw=平均IO带宽 iops=IOPS runt=线程运行时间 slat=提交延迟,提交该IO请求到kernel所花的时间(不包括kernel处理的时间) clat=完成延迟, 提交该IO请求到kernel后,处理所花的时间 lat=响应时间 bw=带宽 cpu=利用率 IO depths=io队列 IO submit=单个IO提交要提交的IO数 IO complete=Like the above submit number, but for completions instead. IO issued=The number of read/write requests issued, and how many of them were short. IO latencies=IO完延迟的分布

io=总共执行了多少size的IO aggrb=group总带宽 minb=最小.平均带宽. maxb=最大平均带宽. mint=group中线程的最短运行时间. maxt=group中线程的最长运行时间.

ios=所有group总共执行的IO数. merge=总共发生的IO合并数. ticks=Number of ticks we kept the disk busy. io_queue=花费在队列上的总共时间. util=磁盘利用率

fio 有很多测试任务配置文件,在git工程 examples 文件夹中,我们可以使用命令行参数进行直接配置,也可以直接通过配置文件配置一次测试的内容。

更详细对fio输出说明请参考博文:Fio Output Explained

IO状态监控:

进行磁盘测试的时候,我们可以使用iostat 等监控工具,查看所有磁盘当前的读写状态(fedora 系统上 sysstat-11.7.3-2.fc29.x86_64 收录了此工具)。

监控磁盘IO命令:iostat –mx 1

Iostat介绍

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

语法

 iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

iostat使用范例:

 iostat -d -x -k 1 10  Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util  sda          1.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28  Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util  sda          2.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20

-d: 显示该设备的状态的参数;

-x:是一个比较常用的选项,该选项将用于显示和io相关的扩展数据。

-k: 静态显示每秒的统计(单位kilobytes )

1: 第一个数字表示每隔1秒刷新一次数据显示。

10:第二个数字表示总共的刷新次数

输出信息的含义

 rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);  wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。  r/s: 该设备的每秒完成的读请求数(merge合并之后的)  w/s:  该设备的每秒完成的写请求数(merge合并之后的)  rsec/s:每秒读取的扇区数;  wsec/:每秒写入的扇区数。  rKB/s:每秒发送给该设备的总读请求数  wKB/s:每秒发送给该设备的总写请求数  avgrq-sz 平均请求扇区的大小  avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。      await:  每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。  svctm:    表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。  %util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

看完了这篇文章,相信你对“Linux系统中FIO常用命令有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux系统中FIO常用命令有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux系统中FIO常用命令有哪些

小编给大家分享一下Linux系统中FIO常用命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,他可以通过多线程或进程模拟各
2023-06-28

Linux系统中常用命令有哪些

这篇文章将为大家详细讲解有关Linux系统中常用命令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux 常用命令awk / arch /bc /cp / clock -w / chmod /
2023-06-06

Linux系统中apt常用命令有哪些

这篇文章给大家分享的是有关Linux系统中apt常用命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。apt命令可以说是Ubuntu系统下最为重要的命令,安装、更新、卸载软件,升级系统内核都离不开apt命令
2023-06-28

linux系统中的常用命令有哪些

本篇文章为大家展示了linux系统中的常用命令有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、sagane@sagane-ThinkPad-Edge:~$ mii-tool,网络不通时可用此
2023-06-13

Linux系统中MongoDB常用命令有哪些

这篇文章主要为大家展示了“Linux系统中MongoDB常用命令有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统中MongoDB常用命令有哪些”这篇文章吧。MongoDB 是一
2023-06-28

Linux系统中ftp常用命令有哪些

这篇文章将为大家详细讲解有关Linux系统中ftp常用命令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。FTP即文件传输协议是用于在网络上进行文件传输的一套标准协议,允许用户以文件操作的方式(如文件
2023-06-28

linux系统中oracle常用命令有哪些

这篇文章主要介绍linux系统中oracle常用命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、
2023-06-28

Linux系统中常用的git命令有哪些

小编给大家分享一下Linux系统中常用的git命令有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Git是一个开源的分布式版本控制系统,用以有效、高速的处理从
2023-06-28

Linux系统中常用的ps命令有哪些

本篇内容介绍了“Linux系统中常用的ps命令有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux作为Unix的衍生操作系统,Li
2023-06-13

Linux系统中常用网络命令有哪些

小编今天带大家了解Linux系统中常用网络命令有哪些,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux系统中常用网络命令有哪些
2023-06-28

Linux系统中有哪些常用的系统管理命令

Linux系统中有哪些常用的系统管理命令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。df1.作用df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。2.格式d
2023-06-10

linux文件系统常用命令有哪些

这篇文章主要介绍“linux文件系统常用命令有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux文件系统常用命令有哪些”文章能帮助大家解决问题。linux文件系统常用命令:1、Rcomme
2023-07-04

Linux系统下MongoDB常用命令有哪些

这篇“Linux系统下MongoDB常用命令有哪些”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“Linux系统下MongoDB常用命令有哪些”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家
2023-06-28

Linux系统编程常用命令有哪些

这篇“Linux系统编程常用命令有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux系统编程常用命令有哪些”文章吧
2023-06-28

Linux系统中常用的网络命令有哪些

这篇文章主要为大家展示了“Linux系统中常用的网络命令有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux系统中常用的网络命令有哪些”这篇文章吧。hostnamehostname 没
2023-06-28

linux系统中有哪些常用的监控命令

今天就跟大家聊聊有关linux系统中有哪些常用的监控命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。找到最耗CPU的java线程ps命令命令:ps -mp pid -o THREA
2023-06-13

Linux系统中vim工具常用命令有哪些

Linux系统中vim工具常用命令有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用。作为一
2023-06-13

Linux系统中常用的打包命令有哪些

本篇内容主要讲解“Linux系统中常用的打包命令有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统中常用的打包命令有哪些”吧!tar-c: 建立压缩档案-x:解压-t:查看内容-
2023-06-28

linux操作系统的常用命令有哪些

这篇文章主要为大家展示了“linux操作系统的常用命令有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux操作系统的常用命令有哪些”这篇文章吧。1.查看当前目录的命令A:pwd2.切换
2023-06-03

Linux系统管理员常用命令有哪些

这篇文章给大家分享的是有关Linux系统管理员常用命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。系统管理员(sysadmins)负责日常维护生产系统和服务。其中一个关键任务就是保证功能性服务能24小时工
2023-06-27

编程热搜

目录