EDA365电子论坛网

标题: 在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度 [打印本页]

作者: thinkfunny    时间: 2019-11-20 10:22
标题: 在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度
在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度) B9 Y$ i1 X0 \+ L6 A( M2 r6 _
! F! ?% z9 W8 F9 P  v9 l$ i9 K  {  `
磁盘驱动器速度
6 c. }" v. T! Z# e' D! G. `/ Q( h2 b
磁盘驱动器的速度是以一个单位时间内读写数据量的多少来衡量的。DD 命令是一个简单的命令行工具,它可用对磁盘进行任意数据块的读取和写入,同时可以度量读取写入的速度。3 T* W4 ?$ U2 b: A
2 t; Y) z( D2 d: `% ]( {" Q. S# y3 S
在这篇文章中,我们将会使用 DD 命令来测试 USB 和 SSD 磁盘的读取和写入速度。
$ F3 k4 h9 @' X. r; X! ^6 ~/ H2 F' W& `4 ]* ^1 _. O" a) ^( Q* a
数据传输速度不但取决于驱动盘本身,而且还与连接的接口有关。比如, USB 2.0 端口的最大传输速度是 35 兆字节/秒,所以如果您把一个支持高速传输的 USB 3.0 驱动盘插入 USB 2.0 端口的话,它实际的传输速度将是 2.0 端口的下限。8 \4 |# X5 Y( x5 h
4 s/ g! X1 p' a
这对于 SSD 也是一样的。 SSD 连接的 SATA 端口有不同的类型。平均是 375 兆字节/秒的 SATA 2.0 端口理论上最大传输速度是 3 Gbit/秒,而 SATA 3.0 是这个速度的两倍。
& X2 T2 q! z5 Q0 l. m/ x' {$ l4 N6 T/ U; j% i9 V, v' `
测试方法

) H, R* w2 k) C" k0 Y5 E/ `+ t9 ^3 v% @- G7 R4 B( e1 B) k6 r
挂载上驱动盘,从终端进入此盘目录下。然后使用 DD 命令,首先写入固定大小块的一个文件,接着读取这个文件。4 u* ?9 n. b1 x

- G( ]; n$ `! q) }, aDD 命令通用语法格式如下:
( A( J7 `" u1 N8 g$ x) s  \8 u5 t0 N: t+ K" b: G) T5 R6 x4 X; U

" I/ P" z/ S8 Z" I. i$ I5 i# U3 G+ X
当写入到驱动盘的时候,我们简单的从无穷无用字节的源 /dev/zero 读取,当从驱动盘读取的时候,我们读取的是刚才的文件,并把输出结果发送到无用的 /dev/null。在整个操作过程中, DD 命令会跟踪数据传输的速度并且报告出结果。
' V3 z* d$ B4 i+ u9 R1 f5 w- Y/ X8 _% ]. `1 H5 B" s
固态硬盘

6 K7 j" F+ Z+ R2 \$ f- T8 |
3 X5 w9 c# V$ b7 `3 \' J我们使用的是一块“三星 Evo 120G” 的固态硬盘。它性价比很高,很适合刚开始用固态硬盘的用户,也是我的第一块固态硬盘,并且也是市场上效果最好的固态硬盘之一。7 [" k8 [& m4 f- S
1 k5 O- @5 X8 k) `, p
这次实验中,我们把硬盘接在 SATA 2.0 端口上。
* L9 N+ T& ?+ o2 U  V4 Z0 g: e2 }  Y  ]
写入速度 ####
6 U0 t5 v  h6 e3 _

" ], ?! V+ ^6 f/ r" b首先让我们写入固态硬盘
7 p5 ], z( G0 @% ?
# |* `/ e/ k: h

- l2 C, J- S4 z6 r$ q- |- s
0 l9 J# Z, k2 |的大小实际上是相当大的。你可以尝试用更小的尺寸如 64K 甚至是 4K 的。
9 H8 B' E( E9 Q" ]. Z" y" n+ ~) `0 P. W! w1 f2 b- R$ b5 ?
读取速度

2 m/ B% _4 q. i5 M4 K* f. X/ k3 d: x& O  Y9 M3 V9 A
现在读回这个文件。但是,得首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的。" I7 j5 h5 v7 Q6 e2 [6 q; m
* ~+ Z3 F, b0 A9 l: b8 ^; x4 k
运行下面的命令来清除内存缓存5 f) O! E' `0 w1 p! q9 |
- e1 r, b; B* F: [7 y. C6 A

' |2 U3 |+ N; i- c- {4 V6 m' [+ k& ~1 g1 D% W* K8 ^9 b+ @
现在读取此文件# P) C6 ~1 ?1 ~  F! r8 }# P( e
& h: b' s9 I: y2 l( q$ Y& y. h
8 A1 k4 o& b) \3 ]$ m

  r$ ]# E/ }1 u. Y+ k  O* s在 Arch Linux 的维基页上有一整页的关于不同的厂商,如英特尔、三星、Sandisk 等提供的各类固态硬盘 读/写速度的信息。点击如下的 url 可以查看相关信息。
3 |& v0 T! G6 a, x2 D
# X' I9 j4 Z/ Y: F3 R# khttps://wiki.archlinux.org/index.php/SSD_Benchmarking
! j  v9 F# w+ C' J/ M; p: p
& h# `. l# x: r& iUSB

& ?- C; J0 I( \3 U  {* O$ w& U- ^6 G  p4 a1 p( C0 z6 K% m8 d
此次实验我们会测量普通的 USB/随身笔的读写速度。驱动盘都是接入标准的 USB 2.0 端口的。首先用的是一个 4GB 大小的 sony USB 驱动盘,随后用的是一个 16GB 大小的 strontium 驱动盘。: X6 W& m: q+ ^2 m3 Y$ d4 }
$ I. p& R) t/ Y; o
首先把驱动盘插入端口,并挂载上,使其可读。然后从命令行下面进入挂载的文件目录下。
/ J( Z) F" u$ |: Y- N. ~) R3 K; C( s& A
Sony 4GB - 写入
/ p+ y& |) s$ f( N1 s% Q- l
; F: L/ T- t% F1 f$ A$ S' k
这个实验中,用 DD 命令向驱动盘写入一个有 10000 块,每块 8K 字节的文件。; @  G" U4 |1 o: r+ e4 ~7 i) d
. w* ]8 ?8 \! x* ^: q  [5 T
1 r9 [  }  R2 W  Y, O

1 H+ t- k9 @, w' O2 a$ g因此,写入速度约为7.5兆字节/秒。这是一个很低的数字。
' m8 J3 z! L! T! M
# c: x3 R2 ^1 a7 ZSony 4GB - 读取
. |8 v1 V  L! Z% M7 |9 m

) d5 P- p# F* R/ K6 i) E$ P把相同的文件读取回来,测试速度。首先运行如下命令清除内存缓存。
* H: [" O& p: u
9 o$ J, D7 ~! c' _% p" ~( A5 P- t

) V0 P7 c/ }; y) p% }; E, `; e, i$ B" Z' p: m% W6 f
现在就可以使用 DD 命令来读取文件了。# {9 _8 F  O8 Q% j; w! [: e* R
2 B0 l+ }& u8 |* L# P
' T7 [: i/ @) M+ n; z
3 t% h2 `: i7 k
读取速度出来大约是25兆字节/秒,这大致跟廉价 USB 驱动盘的标准相匹配吧。
1 H% I& y) z9 L8 D9 E
' Y8 k1 t6 A, o2 KUSB2.0 理论上最大信号传输速率为480兆比特/秒,最小为60兆字节/秒。然而,由于各种限制实际传输速率大约280兆比特/秒和35兆字节/秒之间。除了这个,实际的速度还取决于驱动盘本身的质量好坏以及其他的因素。
9 ]: E9 B+ M7 \, h0 u& ^% R
( N$ ~* z( S+ |8 N4 B7 M" o上面实验中, USB 驱动盘插入USB 2.0 端口,读取的速度达到了 24.7兆字节/秒,这是很不错的读速度。但写入速度就不敢恭维了。
6 _' T- V: ^( b- w( G  D6 {* L9 G& W0 V7 t
下面让我们用 16GB 的 Strontium 驱动盘来做相同的实验。虽然 Strontium 的 USB 驱动盘很稳定,但它也是一款很便宜的品牌。3 O# I, P* a" l
9 m& Z  r/ _( @7 `) k1 N
Strontium 16gb 盘写入速度
; W9 `9 y& U6 w/ m+ p6 M; y

6 b; I. ?4 T+ e$ g# |% Z
: b& Q* ]0 c% S& [' B) E& ?' R* I
# t7 Z8 h' W' [" k5 }- ~
Strontium 16gb 盘读取速度
# a$ x1 r4 m3 v" K) \$ [
$ W! E, V& i% M3 _/ D3 M
% K* m4 b0 l; X- o) f  K: e
* ?& {" _# z% Z
它的读取速度就要比 Sony 的低了。
" Q% V* g+ _. U9 X" G7 P1 z" j) i2 R: W. X, V
参考资料

5 k* L4 v* o( |/ O. ?1 `4 y8 [, V: o/ v+ S7 ^1 E) Z0 j8 Z* Q
http://en.wikipedia.org/wiki/USB% z' `* l! ]' l5 M4 r  N% \
https://wiki.archlinux.org/index.php/SSD_Benchmarking

1 D3 ?, e4 s2 l$ D& J8 n. _
8 _/ h% A; i$ e% O6 w& n3 D. A
/ \% J  t5 v- s/ T; ]+ o& F$ ]

4 O! h7 |5 x; J$ `! P
; o! u; ]2 V6 D& |0 j

作者: fanichicl    时间: 2019-11-21 13:53
在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2