linux下使用dd命令测试磁盘的读写速度

这篇具有很好参考价值的文章主要介绍了linux下使用dd命令测试磁盘的读写速度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近打包更新总是特别慢,其中有一步使用md5sum命令计算MD5值的操作有时居然要卡一个小时,虽说计算MD5比较耗时,但通常计算5个G数据的md5值也就1分多钟,卡一个多小时有点说不过去了,所以在卡顿时使用 top 命令查看了进程情况,发现md5sum进程在卡顿时总是处于 D 状态,这个还是第一次遇到,所以查了些资料记录一下。

D状态进程

D 状态进程(TASK_UNINTERRUPTIBLE),处于不可中断的睡眠状态,指进程不响应异步信号。
绝大多数情况下,进程处在睡眠状态时,总是应该能够响应异步信号的。而D状态存在的意义就在于,内核的某些处理流程是不能被打断,比如进程调用read系统调用对某个设备文件进行读操作,一般需要使用D状态对进程进行保护,以避免进程与设备交互的过程被打断,造成设备陷入不可控的状态。这种情况下的D状态总是非常短暂的,通过ps命令基本上不可能捕捉到。

但是我捉到了,在执行md5sum命令时经常捉到,D状态往往是由于 I/O 资源得不到满足,而引发等待~

这是个关键点,既然IO得不到满足就查一下IO,计算md5也就从磁盘上读一些文件,所以怀疑问题出现在磁盘的读写上,进而想测一些磁盘的读写速度,这就用到了今天想说的 dd 命令。

dd命令

磁盘的读写速度需要通过实际读写文件来测试,dd 命令就可以完成这种测试,配合 time 命令可以统计命令执行时间

  • 仅测读取速度

    # time dd if=/tmp/test of=/dev/null bs=16k
    1000000+0 records in
    1000000+0 records out
    16384000000 bytes (16 GB) copied, 42.7044 s, 384 MB/s
    
    real    0m42.718s
    user    0m0.387s
    sys     0m8.951s
    
  • 仅测写入速度

    # time dd if=/dev/zero of=/tmp/test bs=16k count=1000000
    1000000+0 records in
    1000000+0 records out
    16384000000 bytes (16 GB) copied, 35.7006 s, 459 MB/s
    
    real    0m38.428s
    user    0m0.356s
    sys     0m12.608s
    
  • 测试读写速度

    # time dd if=/tmp/test of=/tmp/test2 bs=16k  
    1000000+0 records in
    1000000+0 records out
    16384000000 bytes (16 GB) copied, 87.3214 s, 188 MB/s
    
    real    1m27.331s
    user    0m0.430s
    sys     0m15.799s
    

问题原因

最后测试发现硬盘读写速度不是很稳定,找运维沟通发现这台服务器使用的网络硬盘,存储带宽有限,当执行太多磁盘任务时,存储带宽会被占满,会造成硬盘读写缓慢,进而影响了之前提到的计算MD5的操作步骤,换了块本地硬盘就好了。

总结

  • 进程显示D状态时处于不可中断的睡眠状态,往是由于 I/O 资源得不到满足而引发了等待
  • 仅测试写入速度 time dd if=/dev/zero of=/tmp/test bs=16k count=1000000
  • 仅测试读取速度 time dd if=/tmp/test of=/dev/null bs=16k
  • 测试读写速度 time dd if=/tmp/test of=/tmp/test2 bs=16k
  • /dev/zero 是一个特殊的文件,当你读它的时候会得到无限的空字符,可用来初始化文件,不产生IO
  • /dev/null 也是一个特殊的文件,它丢弃一切写入其中的数据,被称为黑洞,也不产生IO
  • 网络硬盘受存储带宽的影响,一旦带宽被打满,硬盘读写速度也就慢了
==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

好像遥不可及,但突然有那么一瞬间又感觉触手可及,貌似也没什么退路,只有往前冲了文章来源地址https://www.toymoban.com/news/detail-426634.html

到了这里,关于linux下使用dd命令测试磁盘的读写速度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux命令(40)之dd

    Linux命令之dd linux命令dd用于读取、转换并输出数据。 --dd if=[value1] of=[value2] bs=[value3] count=[value4] 命令: dd if=/dev/zero of=/root/test.log bs=2M count=1000

    2024年02月12日
    浏览(30)
  • ubuntu环境下测试硬盘读写速度

    开始之前,先使用 sudo fdisk -l 命令来列出系统中所有的硬盘和分区: 1.使用hdparm测试硬盘读取速度: 安装hdparm: sudo apt-get install hdparm 通过以下命令测试硬盘的读取速度: 其中 sda 应替换为你要测试的磁盘的设备名称。 2.使用dd测试硬盘读写速度: 打开终端,并输入以下命令

    2024年02月10日
    浏览(39)
  • DevOps:Linux系统之dd命令详解

    1.dd介绍 1.Linux dd 命令用于读取、转换并输出数据。 2.dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。 3.dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 注意:指定数字的地方若以下列字符结尾,则乘以

    2024年02月04日
    浏览(38)
  • 【Linux 之五】 Linux中使用fdisk命令实现磁盘分区

      最近由于工作的需要,初步研究了uboot中的fastboot实现方式。研究fastboot不可避免的需要了解磁盘分区的相关知识点,在linux下可以使用fdisk命令实现磁盘的分区。好了,下面步入正题。   通过命令 sudo fdisk -l 可以查看磁盘的详细分区情况,如下所示,我电脑目前存在两

    2024年02月05日
    浏览(36)
  • 【Shell 命令集合 磁盘管理 】Linux 取消挂载 umount命令使用教程

    Shell 命令专栏:Linux Shell 命令全解析 umount命令用于卸载(取消挂载)已经挂载的文件系统,使其从文件系统树中移除。它用于断开文件系统与指定挂载点之间的连接,以便安全地卸载文件系统。 在Linux中,文件系统可以通过挂载的方式与特定的目录关联起来。挂载是将一个文

    2024年02月08日
    浏览(49)
  • 怎么测试电脑的机械硬盘或SSD固态硬盘的读写速度?

    电脑的硬盘分机械硬盘和固态硬盘两种,机械硬盘一般读写速度慢,而固态硬盘就是因为读写速度比较快而受欢迎,早些年的电脑一般装的都是机械硬盘,用久了电脑都会变得比较卡。现在的电脑一般系统盘都是用的固态硬盘。如果你的电脑买的比较早,现在又比较卡的话,

    2024年02月09日
    浏览(45)
  • 【Shell 命令集合 磁盘管理 】Linux 创建目录 mkdir 命令使用指南

    Shell 命令专栏:Linux Shell 命令全解析 mkdir命令是Linux系统中的一个用于创建目录的命令。它的作用是在指定的路径下创建一个新的目录。 使用mkdir命令可以方便地创建一个空的目录,该目录可以用于存储文件或其他目录。通过指定路径参数,可以在当前工作目录或其他指定目

    2024年02月08日
    浏览(59)
  • 你所不知道的NVMe SSD固态硬盘读写速度及国货的惊喜--基于FPGA的速度测试

      在\\\"FPGA实现高带宽NVMe SSD读写\\\"帖子中介绍了项目背景及系统架构、FPGA实现NVMe读写的大致实现方法。项目中需要将图像传感器产生的高速数据流实时稳定的持续存储,即不仅要求较高的存储带宽,还同时需要该存储带宽保持始终稳定、持续。   在项目做系统设计的时候

    2024年02月06日
    浏览(54)
  • 【Shell 命令集合 磁盘维护 】Linux 检查和修复文件系统错误 fsck命令使用教程

    Shell 命令专栏:Linux Shell 命令全解析 fsck命令是Linux系统中用于检查和修复文件系统错误的工具。它可以扫描并修复文件系统中的损坏、错误或不一致的数据结构,以确保文件系统的正常运行。 fsck命令主要用于以下几个方面: 检查文件系统:fsck命令可以对指定的文件系统进

    2024年02月07日
    浏览(60)
  • 【Shell 命令集合 磁盘管理 】Linux 列出目录中的文件和子目录 ls命令使用教程

    Shell 命令专栏:Linux Shell 命令全解析 ls命令是Linux系统中常用的一个命令,用于列出目录中的文件和子目录。它的作用是显示当前工作目录中的文件和目录列表。 当我们在终端输入ls命令时,系统会将当前目录中的文件和子目录的名称以及相关信息显示出来。这些信息包括文

    2024年02月08日
    浏览(103)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包