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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度
: g- N% @' J3 b! v/ r, N% X' Z1 H5 u

$ D& x- I. ?9 s" c# U$ @磁盘驱动器速度
* t* [, A4 ~( A; s& i( z
磁盘驱动器的速度是以一个单位时间内读写数据量的多少来衡量的。DD 命令是一个简单的命令行工具,它可用对磁盘进行任意数据块的读取和写入,同时可以度量读取写入的速度。
, y  S0 c2 z4 o2 u% I1 o: A0 n8 `9 h8 n5 M) z6 o3 L0 q
在这篇文章中,我们将会使用 DD 命令来测试 USB 和 SSD 磁盘的读取和写入速度。
1 U6 y- \; p5 t$ C
8 J9 t# p3 J* h4 ^9 J0 I数据传输速度不但取决于驱动盘本身,而且还与连接的接口有关。比如, USB 2.0 端口的最大传输速度是 35 兆字节/秒,所以如果您把一个支持高速传输的 USB 3.0 驱动盘插入 USB 2.0 端口的话,它实际的传输速度将是 2.0 端口的下限。
7 ?9 |* B& [& C+ z2 c+ s! s) U8 T  H1 Y8 e- a. h) f
这对于 SSD 也是一样的。 SSD 连接的 SATA 端口有不同的类型。平均是 375 兆字节/秒的 SATA 2.0 端口理论上最大传输速度是 3 Gbit/秒,而 SATA 3.0 是这个速度的两倍。
0 }) \. j8 F! `4 \! k# p7 |' r
0 M! V3 j# H% V$ ~1 }  m) r& V测试方法
# A; n+ R5 j/ S% p: X3 Q

! ~( C$ u1 r: a% Q3 [/ L挂载上驱动盘,从终端进入此盘目录下。然后使用 DD 命令,首先写入固定大小块的一个文件,接着读取这个文件。% }. D9 b1 L7 t, A

& l2 T5 d; h: x: N8 j' HDD 命令通用语法格式如下:( x% _& R  o8 Q7 Y# H8 x$ S! ?
2 {  E- @$ Y+ O' v' @3 W
  • dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks
    ) A1 ~: u6 T5 R* m* r! W
$ d8 L: Y8 {) y8 a+ d/ W) H
9 D2 h7 E. H4 C
当写入到驱动盘的时候,我们简单的从无穷无用字节的源 /dev/zero 读取,当从驱动盘读取的时候,我们读取的是刚才的文件,并把输出结果发送到无用的 /dev/null。在整个操作过程中, DD 命令会跟踪数据传输的速度并且报告出结果。
# F8 E  i5 F' n! P0 G* I7 Y. D5 @1 Q7 a# {, p' A4 b( o
固态硬盘

. S  b* i( |2 \7 E0 R9 Z4 b- P& ]7 k) I' H. i. S& l/ V
我们使用的是一块“三星 Evo 120G” 的固态硬盘。它性价比很高,很适合刚开始用固态硬盘的用户,也是我的第一块固态硬盘,并且也是市场上效果最好的固态硬盘之一。
- `! Q( u/ V$ x% x/ E8 [6 [, J0 |! }5 J# D) g7 y' X% i
这次实验中,我们把硬盘接在 SATA 2.0 端口上。
9 Y. ~$ V* |2 P' W' l8 h3 ]
+ X' v3 j2 G7 i6 k+ {写入速度 ####

5 s( a4 n# b  s# b$ ^
3 ^9 R& M* |7 U$ p4 h首先让我们写入固态硬盘
- ~  G8 F% z: _4 M
; M- {6 P, {% x: Q5 P
  • $ 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  E" u1 J6 z7 n0 I  X

, O2 G+ c: `" {. a; @) l1 ]) c, v( s9 y4 W5 M2 k" K$ t6 q
的大小实际上是相当大的。你可以尝试用更小的尺寸如 64K 甚至是 4K 的。0 u+ O. A" E2 Z9 A+ u* M

' ^0 V/ S( r+ G- Z, K. K读取速度

8 f& j/ r: G) q8 x+ b" D. E
, P2 `8 Q; l- Z# z8 s1 A现在读回这个文件。但是,得首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的。
) Q! b6 X" ^8 ]& ~
7 j7 h: B% {# m5 V  D& Z3 A) i运行下面的命令来清除内存缓存6 r% W/ {2 K5 ?& G/ }- c
" L8 e2 b9 V8 h: p
  • $ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
    1 c( c' P$ ?6 r! d; {3 m
5 r+ L" n" W* b5 v$ m; P

  A" @" d; `3 w& V( ~现在读取此文件9 D" \; h4 W) R

3 n9 D/ O8 ~* k6 K. X8 g% n9 }3 q/ M
  • $ 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: |: y- a* w  p1 v9 H/ t# W! N
' r$ O& V1 P/ _7 a, y( h1 i2 K
- V0 @9 T# [& W* n  w! \. f5 `. u
在 Arch Linux 的维基页上有一整页的关于不同的厂商,如英特尔、三星、Sandisk 等提供的各类固态硬盘 读/写速度的信息。点击如下的 url 可以查看相关信息。! ?0 _# K/ {  i' Q: O! W

( H& g2 P+ S6 j& B+ W6 |https://wiki.archlinux.org/index.php/SSD_Benchmarking
' N" b+ W" n& }* E% W) V- e8 C0 p- W/ v8 {( O0 j1 Z
USB
2 |# [/ M0 U. s* o- l

8 c# U& ^! v6 ^此次实验我们会测量普通的 USB/随身笔的读写速度。驱动盘都是接入标准的 USB 2.0 端口的。首先用的是一个 4GB 大小的 sony USB 驱动盘,随后用的是一个 16GB 大小的 strontium 驱动盘。% V: b# U2 H. Y2 g4 ]% q

3 G/ w# \. o' N  m8 X首先把驱动盘插入端口,并挂载上,使其可读。然后从命令行下面进入挂载的文件目录下。
) b$ W0 s  D8 J# X0 k1 x% d9 j% J! F# Q; M
Sony 4GB - 写入
7 D" D- o4 A8 b9 n" N
# q  R! g7 F" T" u8 U2 [7 ~
这个实验中,用 DD 命令向驱动盘写入一个有 10000 块,每块 8K 字节的文件。
. {: E  o( l7 @" H" f
: s% [: j& C; O4 V$ m
  • # 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
    " J/ w* s+ j; {; O: R* I- E
; e9 q( z0 Y- @7 J/ B5 H

* K+ U* N! l- {6 E因此,写入速度约为7.5兆字节/秒。这是一个很低的数字。
: Q" B" w7 U; g; j) y( [* `$ x0 J  I+ w& e" t
Sony 4GB - 读取
" x$ r3 @: S6 m' f1 w

$ g/ q4 K% l$ s) c7 e! i把相同的文件读取回来,测试速度。首先运行如下命令清除内存缓存。
9 ^$ i* o+ A& H9 s( ~* l, _" F. M. {5 y5 N  h" h
  • $ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
      _) \' V+ G; F# p9 S2 Q7 r

9 Q% B: z9 V' m' {, k, Q+ x! M6 x4 s
/ e$ [, N6 a; t8 {4 I) R现在就可以使用 DD 命令来读取文件了。: i& D) S4 B6 w3 z: G

1 Z; w, D, J& {1 `+ h$ E! K' p
  • # 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
    3 J6 ^. A/ p: q% X( r

9 y, r, M, M$ Z2 i3 ]! u) ^9 i' o3 W3 v
读取速度出来大约是25兆字节/秒,这大致跟廉价 USB 驱动盘的标准相匹配吧。' }. ^) y9 t% s/ N( {
' e! S  n% Z' x0 R% b8 y3 r9 ]1 Z* U
USB2.0 理论上最大信号传输速率为480兆比特/秒,最小为60兆字节/秒。然而,由于各种限制实际传输速率大约280兆比特/秒和35兆字节/秒之间。除了这个,实际的速度还取决于驱动盘本身的质量好坏以及其他的因素。0 z" m; ~1 Q. E' V9 G
1 H5 }: `/ v9 t0 Y) o& X
上面实验中, USB 驱动盘插入USB 2.0 端口,读取的速度达到了 24.7兆字节/秒,这是很不错的读速度。但写入速度就不敢恭维了。
9 e! z/ q2 u4 I# e5 Z: |. P
( S$ }- d4 k% \2 P下面让我们用 16GB 的 Strontium 驱动盘来做相同的实验。虽然 Strontium 的 USB 驱动盘很稳定,但它也是一款很便宜的品牌。
6 G6 q3 @- h$ H1 d7 g& p+ W
5 g6 |7 \4 D4 c& FStrontium 16gb 盘写入速度
" ~6 I5 d  y0 N$ ~& W: k! D. ^" f

# G4 H6 q9 K6 m7 J% w
  • # 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
    : y: W3 `( D; b7 G9 |5 U

, z9 ^: n5 ]( \  Z9 H: M9 p" p1 [/ o/ W) K
Strontium 16gb 盘读取速度
2 R" p# B$ n- D& J* ^

# ^- L- `( i" M( t
  • # sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

  • & s- L6 O, G5 H( Q! U' ~8 X
  • # 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/s
    , V. y" o8 Z, m6 [+ G5 ~
# [- R% L& V& @  a8 ^3 k" x
1 r* T9 J6 S5 c6 E. K& n0 B
它的读取速度就要比 Sony 的低了。1 D2 g" Y  u' f

  v* ^1 c: V  h/ c2 V参考资料

5 S: K& v( A7 `! g$ V: W5 l
, M$ r) h( }7 c! m8 C: whttp://en.wikipedia.org/wiki/USB+ _# f( F; X* g  P
https://wiki.archlinux.org/index.php/SSD_Benchmarking

5 @. I- f- z" o) P; C+ {" x
/ {- w) G4 B/ O4 S+ W
9 r. G' \3 C$ V8 V

  i7 y8 d$ ~/ q4 |+ [9 O  D

; G" w! b3 K* P9 J* \" h, F

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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