找回密码
 注册
关于网站域名变更的通知
查看: 547|回复: 1
打印 上一主题 下一主题

在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-11-20 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度  B3 |# l9 y+ U+ E" v, U% _

  g/ t! H8 f  g磁盘驱动器速度

, k( m! Q0 Q2 P9 \$ l/ ]磁盘驱动器的速度是以一个单位时间内读写数据量的多少来衡量的。DD 命令是一个简单的命令行工具,它可用对磁盘进行任意数据块的读取和写入,同时可以度量读取写入的速度。
% q1 _3 D1 s8 ^# z( P$ `, a+ r, q' q/ R
$ O7 r, v# z: F0 m在这篇文章中,我们将会使用 DD 命令来测试 USB 和 SSD 磁盘的读取和写入速度。
" ^0 g5 q3 {, R5 n/ v" V( k6 r( H$ d) N
数据传输速度不但取决于驱动盘本身,而且还与连接的接口有关。比如, USB 2.0 端口的最大传输速度是 35 兆字节/秒,所以如果您把一个支持高速传输的 USB 3.0 驱动盘插入 USB 2.0 端口的话,它实际的传输速度将是 2.0 端口的下限。. Y5 l8 e+ b; j5 S/ R+ B
; f0 q  }, C  _6 C/ t
这对于 SSD 也是一样的。 SSD 连接的 SATA 端口有不同的类型。平均是 375 兆字节/秒的 SATA 2.0 端口理论上最大传输速度是 3 Gbit/秒,而 SATA 3.0 是这个速度的两倍。
  A" r) Y( a4 @% y9 b, `0 g
+ t. O4 N$ V1 G8 R测试方法

& L7 A8 d. J& W% m. j+ z# F+ N7 ?- Y! |" j2 k
挂载上驱动盘,从终端进入此盘目录下。然后使用 DD 命令,首先写入固定大小块的一个文件,接着读取这个文件。% o5 d" N0 H7 Z9 @
5 f. T9 H7 z9 }5 d' o: b+ K& q
DD 命令通用语法格式如下:
- {$ J+ {, L" H( Y$ E9 p
: x0 {$ {) R# Q2 _5 T
  • dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks) J: j! J+ N% t& O

1 G: h: ^' S& w2 N  e- _$ }' f0 h. s5 z' `0 n; L# s; q
当写入到驱动盘的时候,我们简单的从无穷无用字节的源 /dev/zero 读取,当从驱动盘读取的时候,我们读取的是刚才的文件,并把输出结果发送到无用的 /dev/null。在整个操作过程中, DD 命令会跟踪数据传输的速度并且报告出结果。
# O8 Q2 l! J: }% g9 t: o# u+ Z+ k; k3 a' ?1 g
固态硬盘

' \6 _- L: X( x' S  ~2 c( C- J) N7 {& T. f: I
我们使用的是一块“三星 Evo 120G” 的固态硬盘。它性价比很高,很适合刚开始用固态硬盘的用户,也是我的第一块固态硬盘,并且也是市场上效果最好的固态硬盘之一。
' M, I8 U: E+ P6 ]! S: N
1 l& c) }1 [. J# X7 ]这次实验中,我们把硬盘接在 SATA 2.0 端口上。
  r8 \7 A' n* ~! r5 p% C" n
: r+ q' R* n, o' Q! m写入速度 ####

% C' y! C% d" ], g& N& F
  n6 x/ s) G. Q首先让我们写入固态硬盘
% P2 O* O  N6 E: Z
3 J/ v" k) U0 O8 p3 t0 _
  • $ dd if=/dev/zero of=./largefile bs=1M count=1024
  • 1024+0 records in
  • 1024+0 records out
  • 1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s& w! W' S- C  g
# J2 M) R$ H; ^' P

1 D& C$ ?9 ~5 [. X) E& i8 g1 ?的大小实际上是相当大的。你可以尝试用更小的尺寸如 64K 甚至是 4K 的。) \! l2 ?: }/ O) N6 I" _

6 u; `; Z( w, C读取速度

+ u3 n/ u$ F; g  Z& g: f
" ?. N' `/ Z" x7 x现在读回这个文件。但是,得首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的。7 v/ W9 T! ]# z9 Z. Y$ M+ ]
; |0 k2 x8 L! a; n( r; A: R  k  S
运行下面的命令来清除内存缓存
8 ~6 t; ~+ }/ |. _3 o0 f: ]  ~5 A* D: ]+ j& T! ~
  • $ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"5 h$ O( X( ]% g5 ?
$ r1 J; |+ S9 o8 D: K
" _( r& S9 Z5 D
现在读取此文件
* c, I) ]/ y9 B0 j% X+ q$ ^4 m" c2 D! N) u2 E: L1 B
  • $ dd if=./largefile of=/dev/null bs=4k
  • 165118+0 records in
  • 165118+0 records out
  • 676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s( E5 c4 b5 H* @4 F- d
0 M1 b* B1 P3 g& f

) |' s3 [7 l4 O5 d在 Arch Linux 的维基页上有一整页的关于不同的厂商,如英特尔、三星、Sandisk 等提供的各类固态硬盘 读/写速度的信息。点击如下的 url 可以查看相关信息。
5 {- z: Z- _9 S5 D  S8 o8 O! w6 g1 J/ r5 M
https://wiki.archlinux.org/index.php/SSD_Benchmarking3 U0 C7 Z# h2 v* m9 G
- W% g% w/ t8 U+ W9 \& m/ u
USB
) p- P# M. u2 ]

5 B8 v2 V0 p) E0 S! B此次实验我们会测量普通的 USB/随身笔的读写速度。驱动盘都是接入标准的 USB 2.0 端口的。首先用的是一个 4GB 大小的 sony USB 驱动盘,随后用的是一个 16GB 大小的 strontium 驱动盘。6 }( J" ?9 r7 k1 `

0 Q% ]$ m  H1 \% W" f' g# u0 M首先把驱动盘插入端口,并挂载上,使其可读。然后从命令行下面进入挂载的文件目录下。# w  c4 a6 V. v- A) M) W% o( K) L; R

4 g, ~- A+ g0 _7 b8 ^/ K6 u* [: `Sony 4GB - 写入

4 a9 r# B; d. `- r, W9 |( X8 O
' J9 F7 P7 T; a8 S6 O! ~这个实验中,用 DD 命令向驱动盘写入一个有 10000 块,每块 8K 字节的文件。
" b0 E) [) C# h/ H! ]- m8 ^$ z' z8 i1 D& x! X( H
  • # dd if=/dev/zero of=./largefile bs=8k count=10000
  • 10000+0 records in
  • 10000+0 records out
  • 81920000 bytes (82 MB) copied, 11.0626 s, 7.4 MB/s& A4 Z' i# Z! f% C* f5 n

: u( `! q1 Y" r2 z8 A: d9 i7 g* g2 s. T2 E$ Y7 C# P7 q" s
因此,写入速度约为7.5兆字节/秒。这是一个很低的数字。- s5 z) [- s" o

' E4 V8 G) w1 M+ CSony 4GB - 读取

. ^5 ~* g* l7 K: d: \) P/ k  l; F1 ]
+ ?' [. `' s0 B; v- w! v( G把相同的文件读取回来,测试速度。首先运行如下命令清除内存缓存。8 l9 i- ^" E4 _/ Y5 c' U# k+ e

( U0 w- r% u" [( G3 W9 N: T
  • $ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
    # T; X7 Y- a+ B' V) q
/ t% ^4 D& a' G1 t
2 W. e* }, L6 U$ t3 r4 K9 M
现在就可以使用 DD 命令来读取文件了。1 Y6 v8 G) w  J  P- T+ r8 q5 z( Z

5 p# G, i% c3 |4 L
  • # dd if=./largefile of=/dev/null bs=8k
  • 8000+0 records in
  • 8000+0 records out
  • 65536000 bytes (66 MB) copied, 2.65218 s, 24.7 MB/s) W1 [1 y3 h$ v. j% [0 w
4 [5 I1 R  i) g' j* X
$ ~, ~& o: e1 y4 N
读取速度出来大约是25兆字节/秒,这大致跟廉价 USB 驱动盘的标准相匹配吧。
" b6 Y% R+ @0 Q: [: I7 N* i+ M& x2 J" [( L/ m
USB2.0 理论上最大信号传输速率为480兆比特/秒,最小为60兆字节/秒。然而,由于各种限制实际传输速率大约280兆比特/秒和35兆字节/秒之间。除了这个,实际的速度还取决于驱动盘本身的质量好坏以及其他的因素。
4 t- Y% w4 B' X) l5 ~
9 P' g6 a: d: B, \7 i5 a, |上面实验中, USB 驱动盘插入USB 2.0 端口,读取的速度达到了 24.7兆字节/秒,这是很不错的读速度。但写入速度就不敢恭维了。7 y/ h8 }* M; @' {! h2 l& F7 s
2 s( p- [' g" R3 y
下面让我们用 16GB 的 Strontium 驱动盘来做相同的实验。虽然 Strontium 的 USB 驱动盘很稳定,但它也是一款很便宜的品牌。
( |  N' f& s% P' |# t) n) v! M3 B; S9 N
Strontium 16gb 盘写入速度

9 M2 s, G, r( B1 }; M
6 h; y5 N" c# ?+ G+ R% s
  • # dd if=/dev/zero of=./largefile bs=64k count=1000
  • 1000+0 records in
  • 1000+0 records out
  • 65536000 bytes (66 MB) copied, 8.3834 s, 7.8 MB/s$ {& e/ {) ^4 h

  v3 m* \) D+ `) f+ z3 @1 Y% O8 ]$ H0 D
Strontium 16gb 盘读取速度
) Y" p% o' R. N0 [! [, M# d

: k& K$ E1 T( k5 z3 r8 m5 L9 J$ |
  • # sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

  •   A" Z2 |* @1 B" b
  • # dd if=./largefile of=/dev/null bs=8k
  • 8000+0 records in
  • 8000+0 records out
  • 65536000 bytes (66 MB) copied, 2.90366 s, 22.6 MB/s6 q$ h3 u# @; ?  s! B$ h1 w

; q& u% X3 o2 W6 f  U5 O' [/ D1 ], G* F7 M$ |5 C
它的读取速度就要比 Sony 的低了。
# t1 z& L7 N; V  P- c% i6 C  G$ r6 o, S
* {: Q, h1 e- O5 ^3 X5 k. J5 [参考资料
+ j2 z% ~: \7 {( `
, Q; Y5 ?+ r4 j$ {1 b
http://en.wikipedia.org/wiki/USB% Y. i; i/ r  l
https://wiki.archlinux.org/index.php/SSD_Benchmarking

: R" N, T, w4 A4 g. G2 O' W5 K1 Y3 e+ P) X: Q% Y; Q9 W: E
$ Q7 N, Y) T, O- G3 }: k/ ]7 p
7 \  u9 q$ W+ }) {) E2 T0 J
- e9 U" v1 v* W2 J0 _' m+ k

该用户从未签到

2#
发表于 2019-11-21 13:53 | 只看该作者
在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 16:37 , Processed in 0.203125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表