测试裸盘写性能

直接写,不同步数据,不屏蔽写缓存,观察性能,我们可以看到,写的数据越多,磁盘写性能下降很明显,说明这种操作不能正确的反映磁盘写性能

其中/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。

[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 1.21162 s, 338 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 30.8322 s, 133 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=5000000
5000000+0 records in
5000000+0 records out
20480000000 bytes (20 GB) copied, 270.688 s, 75.7 MB/s
[root@orcadt6 opt]#

测试裸盘读性能

直接读,观察性能,

/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力

[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=5000000
5000000+0 records in
5000000+0 records out
20480000000 bytes (20 GB) copied, 219.49 s, 93.3 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 24.9427 s, 164 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 0.353777 s, 1.2 GB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k
^C6425487+0 records in
6425486+0 records out
26318790656 bytes (26 GB) copied, 688.21 s, 38.2 MB/s

看下帮助文档

用法:dd [OPERAND] ......
  或者:dd OPTION
根据操作数复制文件,转换和格式化。

bs = BYTES一次读写BYTES字节
  cbs = BYTES一次转换BYTES字节
  conv = CONVS按照逗号分隔的符号列表转换文件
  count = N仅复制N个输入块
  ibs = BYTES一次读取BYTES字节(默认值:512)
  if = FILE从FILE而不是stdin读取
  iflag = FLAGS按逗号分隔的符号列表读取
  obs = BYTES一次写BYTES字节(默认值:512)
  of = FILE写入FILE而不是stdout
  oflag = FLAGS根据逗号分隔的符号列表写入
  seek = N在输出开始时跳过N个阻塞大小的块
  skip = N在输入开始时跳过N ibs大小的块
  status = LEVEL要打印到stderr的信息的级别;
                  'none'除了错误消息外都会抑制所有内容,
                  'noxfer'抑制最终转移统计,
                  'progress'显示定期传输统计信息

N和BYTES之后可以跟随以下乘法后缀:
c = 1,w = 2,b = 512,kB = 1000,K = 1024,MB = 1000 * 1000,M = 1024 * 1024,xM = M
对于T,P,E,Z,Y,GB = 1000 * 1000 * 1000,G = 1024 * 1024 * 1024等。

每个CONV符号可能是:

ascii      从EBCDIC到ASCII
 ebcdic  从ASCII到EBCDIC的ebcdic
 ibm      从ASCII到交替EBCDIC的ibm
 block   阻止填充换行符终止的记录,其空格为cbs-size
 unblock 用换行符替换cbs-size记录中的尾随空格
 lcase  将大写更改为小写
 ucase  将小写更改为大写
 sparse  尝试寻找而不是写入NUL输入块的输出
 swab  交换每对输入字节
 sync 每个输入块同步填充NUL到ibs大小;使用时使用block或unblock,填充空格而不是NUL
 excl  如果输出文件已存在,则excl失败
 nocreat  不创建输出文件
 notrunc  不截断输出文件
 noerror  错误不终止操作
 fdatasync   在完成之前物理同步写入输出文件数据,不只在写缓存后返回
 fsync同样,但同时写入元数据

每个FLAG符号可能是:

append 追加附加模式(仅对输出有意义;建议使用conv = notrunc)
 direct  直接使用直接I / O数据
 directory 写目录,非目录则失败
 dsync 使用同步I / O进行数据
 sync  同样地同步,但也用于元数据
 fullblock   累积整个输入块(仅限iflag)
 nonblock 使用非阻塞I / O.
 noatime  不更新访问时间
 nocache  丢弃缓存数据
 noctty 不从文件中分配控制终端
 nofollow  不遵循符号链接
 count_bytes   将'count = N'视为字节数(仅限iflag)
 skip_bytes   将'skip = N'视为字节数(仅限iflag)
 seek_bytes   将'seek = N'视为字节数(仅限oflag)

将USR1信号发送到正在运行的'dd'进程就可以了
将I / O统计信息打印到标准错误,然后重新开始复制​​。

$ dd if = / dev / zero of = / dev / null&pid = $!
  $ kill -USR1 $ pid;sleep 1;kill $ pid
  18335302 + 0记录在
  18335302 + 0记录
   9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s

如何准确测试写磁盘

熟悉以上例子和文档后,查看如何真正写磁盘

分析参数,conv=fdatasync  同步数据io至磁盘,就是io直接下发磁盘成功后返回

oflag=direct,dsync  绕开写缓存直接写入磁盘,同步IO,以下结果相对比较真实,可以从我写的磁盘看出来我使用的是虚拟设备虚拟盘,相对写是比较慢的

[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=10 conv=fdatasync oflag=direct,dsync
10+0 records in
10+0 records out
40960 bytes (41 kB) copied, 0.0886036 s, 462 kB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=100 conv=fdatasync oflag=direct,dsync
100+0 records in
100+0 records out
409600 bytes (410 kB) copied, 0.36866 s, 1.1 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=1000 conv=fdatasync oflag=direct,dsync
1000+0 records in
1000+0 records out
4096000 bytes (4.1 MB) copied, 4.07199 s, 1.0 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=10000 conv=fdatasync oflag=direct,dsync
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 42.1317 s, 972 kB/s

读性能评测

同理可得一下读性能,在dd命令中count越大越接近真实情况(持续IO)

[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=10000  iflag=direct,dsync
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 12.4751 s, 3.3 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=1000  iflag=direct,dsync
1000+0 records in
1000+0 records out
4096000 bytes (4.1 MB) copied, 1.10571 s, 3.7 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=10  iflag=direct,dsync
10+0 records in
10+0 records out
40960 bytes (41 kB) copied, 0.00106058 s, 38.6 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=20000  iflag=direct,dsync
20000+0 records in
20000+0 records out
81920000 bytes (82 MB) copied, 27.4144 s, 3.0 MB/s

使用dd命令测试裸盘性能评测相关推荐

  1. dd命令测试U盘读写速度

    1. dd命令简述: if=输入文件, of=输出文件, ibs=一次读取字节数, obs=一次写入字节数, bs=设置一次读取写入的字节数, skip=跳过的bs数, count=拷贝的块数 2. ...

  2. 怎么用dd命令测试U盘读写速度

    1.如何确认host是将外设识别为2.0还是3.0 a)关注dmesg,查看如下字串 usb 2-1: new SuperSpeed USB device number 2 using xhci-hc ...

  3. Linux系统如何测试电脑性能,如何使用DD命令测试Linux磁盘的性能?

    Linux系统下DD命令是常用的命令之一,同时DD命令的使用范围也比较广泛.除了已知的可以用DD命令来复制文件外,还可以用DD命令来测试磁盘的性能.那么如何使用DD命令测试Linux磁盘的性能? 下面 ...

  4. 阿里云 云盘性能评测

    评测工具:FIO 工具官网:https://fio.readthedocs.io/en/latest/index.html ECS配置:CPU: 2核  内存: 8 GB  OS:centos7 yu ...

  5. linux dd查看磁盘读写,使用dd命令 测试磁盘读写速度

    强调:使用dd命令测试时,数据一定要大于主机内存 4G=1m*4096 选项及参数讲解 bs=4k #指块大小,默认单位是字节,此为4kB(千字节) count=2000 #是块的数量,两者相乘便是总 ...

  6. linux dd 硬盘 脚本,如何使用dd命令测试Linux磁盘的读写速度

    为了测试Linux磁盘的读写速度,可使用dd命令,dd命令是一个非常使用的命令,可用于文件的拷贝,下面小编就给大家介绍了如何使用dd命令测试Linux磁盘的读写速度吧. 1.先熟悉两个特殊的设备: ( ...

  7. Linux下使用dd命令制作启动盘

    date: 2018-09-25 10:39:41+00:00 原标题: Linux下使用dd命令制作启动盘 原链接: https://www.dreamoftime0.com/2018/09/25/ ...

  8. dd linux 格式化u盘启动盘_Ubuntu使用dd命令制作U盘系统启动盘

    本帖最后由 speedturtle 于 2018-7-13 23:12 编辑 Ubuntu使用dd命令制作U盘系统启动盘 [dd命令是比较推荐的一种Linux环境中制作U盘启动盘的方式,无需安装额外的 ...

  9. 使用dd命令测试CPU性能--用Enki学Linux系列(16)

    dd命令也可以作为一个简单的CPU性能测试工具来使用!你可以用如下方法运行这个"开箱即用"的功能: $ dd if=/dev/zero bs=1M count=1024 | md5 ...

  10. dd命令测试linux磁盘io情况,【LINUX】正确的使用dd进行磁盘读写速度测试

    测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件. 测试指令:dd if=/dev/zero of=/data01/test. ...

最新文章

  1. 某网友惊现如此言论:程序员没有技术壁垒,不值得这么高工资!过高工资引起加班和行业内卷,应该用降薪来换取不加班!网友:你好天真!...
  2. PCA和白化练习之处理二维数据
  3. 深度学习框架的评估与比较
  4. 记一次oracle数据库连不上处理
  5. 网站自动登录功能的设计
  6. C++之面向对象模型
  7. android 回归测试,自动遍历回归测试工具
  8. OpenShift 4 Hands-on Lab (12) 使用配置参数和环境变量
  9. Linux命令发送Http请求
  10. 关于 Matlab R2014a下载与安装流程
  11. 微信小程序上传照片,限制格式,限制大小,公用方法
  12. 正态总体均值假设检验
  13. HDU-5855 Less Time, More profit(最大权闭合图+二分)
  14. urp综合教务系统 php 课表,URP综合教务系统教师录入成绩指南
  15. 蚂蚁庄园喂鸡投放饲料+加速卡+蹭吃耗时产量计算
  16. Python Socket传输图片
  17. JavaScript百炼成仙 1.14 秀
  18. mysql list database_Navicat Premium 操作MySQL数据库
  19. 微信小程序页面间传值方法
  20. 90后创业:2012教会我的那些事

热门文章

  1. 三角形旋转css_三种纯CSS实现三角形的方法
  2. 大一总结与突然的感悟
  3. 数据挖掘十大算法之决策树详解(2)
  4. Android开发获取ImageView显示的图片尺寸
  5. css3的过度,transition
  6. 建筑工程图上的尺寸数字
  7. 几种常用的服务器认证机制
  8. DataWhale-动手数据分析-Task01:数据加载及探索性数据分析
  9. Luogu P1540 机器翻译
  10. java根据文件字符换行_java操作txt文本(一):遇到指定字符换行