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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在Linux系统中,使用 DD 命令测试 USB 和 SSD 硬盘的读写速度+ }1 I7 {- B2 N
, m* a. K- T2 C+ L8 B. Q
磁盘驱动器速度
2 X4 V( A% z# W1 w
磁盘驱动器的速度是以一个单位时间内读写数据量的多少来衡量的。DD 命令是一个简单的命令行工具,它可用对磁盘进行任意数据块的读取和写入,同时可以度量读取写入的速度。5 S0 }/ a2 L6 X
) I/ ], E- H6 t! a8 w, |8 ]: x
在这篇文章中,我们将会使用 DD 命令来测试 USB 和 SSD 磁盘的读取和写入速度。
) m  B) O# y7 n) E/ w' W
: N; ]8 D! B2 w) v1 O' S数据传输速度不但取决于驱动盘本身,而且还与连接的接口有关。比如, USB 2.0 端口的最大传输速度是 35 兆字节/秒,所以如果您把一个支持高速传输的 USB 3.0 驱动盘插入 USB 2.0 端口的话,它实际的传输速度将是 2.0 端口的下限。! `! [3 G( y" v# _

  T2 v" I# S, s这对于 SSD 也是一样的。 SSD 连接的 SATA 端口有不同的类型。平均是 375 兆字节/秒的 SATA 2.0 端口理论上最大传输速度是 3 Gbit/秒,而 SATA 3.0 是这个速度的两倍。5 ~, |2 c( d4 |! {! {1 y

( g& U* S/ S- f4 x% u测试方法
( T2 ^5 r# Y: D3 d7 Y( V3 l) C
" I, u% c7 y! D  V6 Q6 P! h; M2 m
挂载上驱动盘,从终端进入此盘目录下。然后使用 DD 命令,首先写入固定大小块的一个文件,接着读取这个文件。
2 O! Z" d' `% M: C  T
' n8 I0 l/ D$ K5 Y* I4 @) XDD 命令通用语法格式如下:" C7 G8 [0 x9 D, j* S7 s( I' t$ B

" g4 m7 J1 Y4 _( T2 }. ^- a) b) _
  • dd if=path/to/input_file of=/path/to/output_file bs=block_size count=number_of_blocks2 S; N3 c  ]3 b; Y+ D

8 c8 [- s( @) m0 b: E& ?$ U7 Y/ v$ s
) z- _, p7 B2 L! t- V% f当写入到驱动盘的时候,我们简单的从无穷无用字节的源 /dev/zero 读取,当从驱动盘读取的时候,我们读取的是刚才的文件,并把输出结果发送到无用的 /dev/null。在整个操作过程中, DD 命令会跟踪数据传输的速度并且报告出结果。. l( [$ B9 V' j8 H" w7 m& R( a1 o  M
7 G0 k9 w& y( S" ~' }* J4 P9 e
固态硬盘

  [3 U. }' w5 P* S4 W7 z' D- A' G  _: g8 I4 i
我们使用的是一块“三星 Evo 120G” 的固态硬盘。它性价比很高,很适合刚开始用固态硬盘的用户,也是我的第一块固态硬盘,并且也是市场上效果最好的固态硬盘之一。' a5 L/ y3 T% A4 i5 _/ y3 Y  E( N
: b6 X. A& E! w% @2 F& Q2 v
这次实验中,我们把硬盘接在 SATA 2.0 端口上。
: I: i9 h. Q! q8 W, M1 V2 {
2 Y8 \; x1 t5 d! v* f3 r( c写入速度 ####

! H& \; P) l- h: H5 R( F
4 G, Y/ C( N6 H: H  p; C" u5 Z首先让我们写入固态硬盘( {0 ]) x% V% H# p4 j8 o9 K

9 W& a3 P% M" c' X9 @
  • $ 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
    ) @( o$ z, d! P% d6 i! A
; B) M, \2 m# }

% |* m3 ~- ~6 }: F; q' {) H的大小实际上是相当大的。你可以尝试用更小的尺寸如 64K 甚至是 4K 的。
* y4 G$ f2 e9 E$ a$ p% ^& J, X1 |" T. g, X
读取速度

7 g- Q' ^+ e4 k1 G; e2 i8 s9 c& I' b6 M7 `) K) Y
现在读回这个文件。但是,得首先清除内存的缓存,以确保这个文件确实是从驱动盘读取的。: ?7 ^/ Y) q) W- A* I

) u0 A; B8 e2 ?  G! _9 ]运行下面的命令来清除内存缓存6 \  Q" ~2 `7 d. a+ a
4 m& c2 _8 m7 E2 W, o
  • $ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
    1 o) G9 H; W, f: f7 O" _) B+ b& b
6 i$ ^4 J+ C# l* E0 v0 i4 x9 A

$ Y: c1 z  r5 i! R, A( u现在读取此文件
& @# F1 o( E" Y- [, B; i4 b/ x2 f$ W' E
  • $ 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
    - t9 q. ?/ k8 C
" _# @1 s6 e! B8 s
# y$ e) ^+ @. y1 P; W* M
在 Arch Linux 的维基页上有一整页的关于不同的厂商,如英特尔、三星、Sandisk 等提供的各类固态硬盘 读/写速度的信息。点击如下的 url 可以查看相关信息。4 t* P$ v5 O$ B8 J' ]% ^  a
4 S6 m* H/ t5 e
https://wiki.archlinux.org/index.php/SSD_Benchmarking
- s4 E, h  D9 t& R, k8 N# Y) m7 b4 n
. R( h0 e  e9 N+ x3 s8 @USB

# l/ Y; L; @. D/ T# \4 e5 {; S3 y, H2 z/ `/ [# |- A
此次实验我们会测量普通的 USB/随身笔的读写速度。驱动盘都是接入标准的 USB 2.0 端口的。首先用的是一个 4GB 大小的 sony USB 驱动盘,随后用的是一个 16GB 大小的 strontium 驱动盘。
: \" l" _5 _7 z3 `, b
6 ]8 f' [' |8 a; i8 N" C首先把驱动盘插入端口,并挂载上,使其可读。然后从命令行下面进入挂载的文件目录下。1 c$ `4 K- l8 i, N; g$ n1 r  {. `

% B+ S9 Q2 j# z; |6 J* xSony 4GB - 写入

+ {% k1 @% {+ v/ {  ^- Z$ q( d1 G7 a' W
这个实验中,用 DD 命令向驱动盘写入一个有 10000 块,每块 8K 字节的文件。/ k# `( b/ ]2 @, m4 K

% m( L$ A# r1 G$ U
  • # 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) \  W& S" f8 M. f

+ {! r7 K' |# v8 A$ c
, R; A2 a$ Z! Z: o8 w3 N: H. b% b因此,写入速度约为7.5兆字节/秒。这是一个很低的数字。; [# Y- Z& A6 _7 ?) i! ?' l
, y2 U* Q. h# c2 Y* m0 R( X- G: m
Sony 4GB - 读取
  t) @) I5 H1 Z5 f9 ~5 a

# q* I0 T' z) P' o4 W$ q把相同的文件读取回来,测试速度。首先运行如下命令清除内存缓存。5 K& T4 G, z5 L' K* G- c; t

+ r6 Q9 X$ V5 E# `3 a) k: K0 Q
  • $ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
    & [- k0 y8 w/ N! `8 _, z1 R
  V  t! L, H+ N

( A. s- l3 l+ ]现在就可以使用 DD 命令来读取文件了。
& y  B( l' N9 ~8 r: i
- P" P% |4 G0 T, C$ h0 F
  • # 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# [% M$ ]& w/ W) Z
8 {& h. g5 m' L1 s

- q9 t# M" b1 A' L6 V+ M; n读取速度出来大约是25兆字节/秒,这大致跟廉价 USB 驱动盘的标准相匹配吧。
: L: ]1 A. v; T0 G! e; _
" ^* P4 k$ {  G2 a2 f- S7 m* n+ h1 u* vUSB2.0 理论上最大信号传输速率为480兆比特/秒,最小为60兆字节/秒。然而,由于各种限制实际传输速率大约280兆比特/秒和35兆字节/秒之间。除了这个,实际的速度还取决于驱动盘本身的质量好坏以及其他的因素。0 t: c- O7 c. l0 E7 u( R& \. a

. _) {2 U) H: ~上面实验中, USB 驱动盘插入USB 2.0 端口,读取的速度达到了 24.7兆字节/秒,这是很不错的读速度。但写入速度就不敢恭维了。, c7 [4 j9 C6 @% `4 k# u: `0 [

, v' ]& B8 l' W0 F2 T$ Q$ ^1 e- T下面让我们用 16GB 的 Strontium 驱动盘来做相同的实验。虽然 Strontium 的 USB 驱动盘很稳定,但它也是一款很便宜的品牌。4 R% R* Z1 z+ `! `! J6 x  `

7 R2 A& H8 K( q' e- S, e+ B8 ?Strontium 16gb 盘写入速度

- r/ H0 l% k" {+ @" u
1 l5 R! Z( b4 j- l  z
  • # 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
    4 d, c) u0 e$ L7 E+ E
- a- H6 S; p6 D' H, ^, B

$ _! P/ L0 \! wStrontium 16gb 盘读取速度

3 w0 \/ D. x. p7 s+ O$ |0 j9 a* d0 J4 B8 E# e2 r! o* x/ g4 h
  • # sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

  • " w, T+ U- W& [! O  p1 z
  • # 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( ]9 G; c& G7 q

4 N1 N1 B  g' J/ ?! k& {* s/ K* H+ X( l2 c4 J
它的读取速度就要比 Sony 的低了。
  I, i3 j9 G+ l! ~1 O3 t, v
* }- \5 d7 u$ B( O" K6 Y参考资料
4 k  x3 o% f3 Y
4 {- z6 v" ]$ r0 H& R, ?
http://en.wikipedia.org/wiki/USB' K, C* G5 ~1 [- V# u# @
https://wiki.archlinux.org/index.php/SSD_Benchmarking
0 u- c8 e3 p, v' k. P5 {
' D9 _/ B0 C) W; }* w
9 A# T, B  W4 J2 h) G

# l0 z  I& @) [
! @& A- g% M  O) B

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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