Linux fio测试硬盘性能

这篇具有很好参考价值的文章主要介绍了Linux fio测试硬盘性能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Linux系统中,测试硬盘的性能一般使用fio工具实现,fio是Flexible I/O Tester的缩写。是一个常受欢迎的、用于测试存储性能的工具,而且还可以模拟多种不同的I/O模式和工作负载。

一般我们要测试一块硬盘的性能,一般需要进行随机写入测试、随机读取测试、顺序写入测试、顺序读取测试和混合读写测试这五步。


fio的使用

这个工具不是Linux发行版自带的,需要自己手动安装才行。

# ubuntu
sudo apt install fio

# centos
sudo yum install fio

使用fio测试硬盘的写性能时,很容易就会造成系统上的数据丢失。主要就两种情况:

  • 未指定文件名:不指定文件名会直接对硬盘进行测试。这样的操作将覆盖设备上的数据,包括文件系统、分区表等。这将导致整个设备上的数据丢失。

  • 文件名重合:指定了文件名但与已存在的文件重合,写操作将会覆盖这个文件的内容,导致原有数据丢失。


随机写入性能测试

不绕过缓存

此时会受到会受到操作系统的页面缓存(page cache)的影响,即操作系统通常会缓存读写操作,这可能会导致不真实的高性能读写结果。使用直接I/O可以得到没有缓存效应的真实磁盘性能。

fio --name=testfile --directory=/home/ehigh/test_dir --size=1G --rw=randwrite --bs=4k --ioengine=libaio --iodepth=16 --numjobs=1 --runtime=30 --time_based --end_fsync=1

表示在 /home/ehigh/test_dir 目录中创建一个大小为1G的测试文件testfile,使用随机写入的模式进行测试,每次读/写的数据量是4KB。在30s的时间内,通过启动一个工作进程或线程来进行测试。

说明:

  • --name=testfile指定生成的测试文件名称,不指定就会会直接对硬盘进行测试,可能会造成数据丢失

  • --directory指定测试文件存放路径,不指定就是在当前路径下

  • --numjobs指定测试线程的数量,模拟单线程或单任务工作负载,不测试并发造成的额外压力,设置为1就可以了

  • --runtime指定测试时间,短时测试一般30s差不多了,可以快速评估和比较不同配置或硬件的性能

  • --size指定测试文件的大小,一般1G差不多就可以了

  • --rw指定测试的模式,andwrite是随机写入模式。randrw: 随机读写。read: 顺序读取。write: 顺序写入。readwrite:顺序混合读写(使用rwmixread来指定读取的百分比。例如,rwmixread=70表示读取占70%,写入占30%。)。randrw:随机混合读写(也是结合rwmixread来指定读取的百分比)

  • --bs指定每个每个IO操作将使用4KB的大小

  • --end_fsync指定测试结束时,确保所有写入都同步到磁,这样更能确保测试数据的准确

Linux fio测试硬盘性能
 write: IOPS=11.3k, BW=43.0MiB/s  
 	# 在测试期间,平均每秒钟完成了11.3k次独立的IO写操作,这些写操作的总带宽是1825KiB每秒(即表示每秒钟的数据写入速度)

# slat:提交延迟 clat:完成延迟 lat:总延迟
	# slat:指应用程序提交I/O到操作系统,到操作系统接收并开始处理这个I/O所需的时间。  平均的提交延迟为2.68微秒。
	# clat:指操作系统开始处理I/O,到I/O操作真正完成所需的时间。完成延迟为1326.67微秒,即约1.326毫秒。
	# lat:应用程序提交I/O到I/O操作真正完成所需的时间。这里的总延迟的标准偏差为167,993.51微秒,即约168毫秒
	# clat percentiles (usec):不同百分位数下的完成延迟,可以通过这个来确定迟的分布
	# 99.99th=[  545] 如果99th百分位数的延迟远高于平均延迟(clat的avg值),这可能意味着存在一些异常高的延迟。

cpu:测试过程中用户空间和内核空间的CPU使用率,usr表示用户空间。sys表示内核空间

# 这个是写操作的摘要信息
Run status group 0 (all jobs):
  WRITE: bw=43.0MiB/s (46.1MB/s), 43.0MiB/s-43.0MiB/s (46.1MB/s-46.1MB/s), io=2048MiB (2147MB), run=46558-46558msec
	#  bw=43.0MiB/s :平均带宽,每秒钟数据写入的速度
	# io=2048MiB (2147MB): 在整个测试过程中写入的总数据量。

Disk stats (read/write):
  sda: ios=2/7271, merge=0/348, ticks=1637/389056, in_queue=409371, util=95.63%
	# ios=2/7271: 读/写的I/O操作数,进行了2次读操作和7271次写操作
	# util=95.63%,测试过程中设备的利用率,接近100%的值通常意味着磁盘是瓶颈。

绕过缓存

通过 -direct=1 参数 在 fio 中用于启用直接I/O模式,数据直接从用户空间传输到磁盘,或从磁盘传输到用户空间,而不经过操作系统的缓存。

fio --name=testfile --directory=/home/ehigh/test_dir --size=1G --rw=randwrite --bs=4k --ioengine=libaio --iodepth=16 --numjobs=1 --runtime=30 --time_based --end_fsync=1 -direct=1
Linux fio测试硬盘性能

可以明显看到,绕过缓存后瞬间就降下来了。


多线程测试

--numjobs 参数在 fio 中用于指定测试中应使用的任务(线程或进程)数量,可以用来测试并发度,吞吐量、延迟等内容。

因为多个线程执行时,可能导致更高的 I/O 压力和更高的设备利用率、高延迟等。这样更加能模拟涉及到多线程或多进程并发访问存储的情况。文章来源地址https://www.toymoban.com/news/detail-710814.html

fio --name=testfile --directory=/home/ehigh/test_dir --size=1G --rw=randwrite --bs=4k --ioengine=libaio --iodepth=16 --numjobs=4 --runtime=30 --time_based --end_fsync=1 -direct=1
Linux fio测试硬盘性能

随机读取测试

fio --name=randread --directory=/home/ehigh/test_dir --size=1G --rw=randread --bs=4k --ioengine=libaio --iodepth=16 --numjobs=1 --runtime=30 --time_based --end_fsync=1

顺序写入测试

 fio --name=seqwrite --directory=/home/ehigh/test_dir --size=1G --rw=write --bs=1M --ioengine=libaio --iodepth=16 --numjobs=1 --runtime=30 --time_based --end_fsync=1	

顺序读取测试:

fio --name=seqread --directory=/home/ehigh/test_dir --size=1G --rw=read --bs=1M --ioengine=libaio --iodepth=16 --numjobs=1 --runtime=30 --time_based --end_fsync=1

混合读写测试

fio --name=mixedrw --rw=rw --rwmixread=70 --bs=4k --numjobs=1 --ioengine=libaio --iodepth=16 --runtime=60 --size=1G --filename=testfile --directory=/home/ehigh/test_dir

到了这里,关于Linux fio测试硬盘性能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 磁盘性能测试工具之fio

    fio 是测试磁盘性能的一个非常好的工具,用来对硬件进行压力测试和验证。 CentOS 6.5等较老版本的操作系统用 fdisk 创建分区时,默认为非4KB对齐选择初始磁柱编号,对性能有较大的影响,建议针对该类操作系统,在创建分区时4KB对齐选取初始磁柱编号。 请不要在系统盘上进

    2024年02月13日
    浏览(51)
  • 磁盘性能测试工具-FIO的安装及使用

    FIO介绍 FIO是一款测试IOPS的工具,用于对磁盘进行压力测试和验证,磁盘I/O是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类,FIO可产生很多线程或进程并执行用户指定的特定类型的I/O操作,典型用途是编写和模拟I/O负载匹配的作业文件,也就

    2024年01月16日
    浏览(49)
  • Linux下Python脚本的编写解析fio测试log(四)

    在我们平常的测试盘的过程中,fio是一款业界最为通用的工具,通过Fio可以只知道一个盘具体的带宽,iops,延迟等等.比如下面这段fio的log 这里边需要拿出log里的一些参数 做成表格 如下: 下面说下如何用Python解析log并做成表格 1 同样是用到Python中文件函数open,调用四个模块sy

    2024年02月08日
    浏览(44)
  • Linux系统运行时参数命令(性能监控、测试)(3)网络IO性能监控

    通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络性能 带宽 ,表示链路的最大传输速率,单位通常为b/s(比特/秒) 吞吐量 ,表示单位时间内成功传输的数据量,单位通常为b/s(比特/秒)或者B/s(字节/秒)。吞吐量受带宽限制,而吞吐量/带宽,也就是 网络

    2024年02月13日
    浏览(41)
  • Fio工具详解【强大的IO性能压测工具】

    [time] runtime=time ​ 告诉fio在指定的时间段后终止处理。很难确定指定作业将运行多长时间,因此此参数可以方便的将总运行时间限制为给定时间。当省略单位时间,该数值以秒为单位进行解释。 time_based ​ 如果设置,即使文件被完全读取或写入,fio也将在指定的运行期间运行

    2024年02月01日
    浏览(37)
  • Linux hdparm命令教程:优化硬盘性能和读写速度(附实例详解和注意事项)

    hdparm 是一个用于控制和配置硬盘驱动器的命令行工具。它允许您查看和修改硬盘的参数,包括缓存设置、高级电源管理、硬盘性能等。通过 hdparm ,您可以优化硬盘的读写速度和性能。 hdparm 在大多数 Linux 发行版中都可用,包括 Debian、Ubuntu、CentOS、Fedora 等。如果某个发行版

    2024年04月23日
    浏览(53)
  • 如何在Linux系统下安装英特尔 Arc系列独立显卡驱动以及进行AI推理性能测试

    作者:  周兆靖         目前,英特尔®推出了包括了Arc™家族A770,A750在内的多个桌面版本的独立显卡(discrete Graphic Processing Unit,简称dGPU)供玩家与开发者进行选择。鉴于很多消费者都是初次体验Intel®的独立显卡,在Linux * 系统下对于显卡驱动的下载与安装并不熟悉,

    2024年02月05日
    浏览(66)
  • linux系统查看硬盘

    输入命令: lsblk 可以看到下图的服务器存在一个硬盘sda ,容量为40g  可以看到下图的服务器存在两个硬盘sda和sdb  其中sda容量为446g,sdb容量为21.8T

    2024年02月11日
    浏览(33)
  • 虚拟机linux系统硬盘扩容设置

    1.虚拟机设置给硬盘增加容量 进入虚拟机设置,选中硬盘,点击扩展,在弹出框选择要扩展到你想要的硬盘大小,这里硬盘原来大小使50G,现在增加到100G,然后点击扩展. 2. 硬盘扩容部分容量添加分区 此时一定要重启系统,重启系统,重启系统!!! 3.将新增的分区追加到原分

    2024年02月12日
    浏览(45)
  • Linux——Ubuntu系统挂载硬盘方法详解

    Linux——Ubuntu系统挂载硬盘方法详解 引言: 在嵌入式系统开发中,Ubuntu是一种常用的Linux操作系统。当需要将外部硬盘与Ubuntu系统进行连接并实现挂载时,我们需要学习相应的挂载方法。本文将详细介绍Ubuntu系统挂载硬盘的几种常见方法,并附上相应的源代码示例。 一、使用

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包