磁盘的读取和写入速度的测量 嵌入式 实例

创建时间:2011年4月27日, 16:28:33

 

磁盘的读取和写入速度的测量

设备:

 

1. 准备

 安装dd ,time在busybox中:

 Coreutils ---> 

[*] dd

 miscutils --->

[*] time

2. 命令

纯读取:

  time /bin/dd if=tmp of=/dev/null bs=64k

纯写入

time /bin/dd if = /dev/zero of=tmp bs=1024 count=1000000

 /******************************************************************/

 /* SD卡                                       */

 /******************************************************************/

3. 运行

A. 在开发板上

    # time /bin/dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 41.35s

    user    0m 0.30s

    sys     0m 4.18s

    # tim /bin/dd if=tmp of=/dev/null bs=64k

    -/bin/sh: tim: not found

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 9.79s

    user    0m 0.01s

    sys     0m 0.49s

    #

B. 在Vmware 6.0 虚拟机上

第一次: 

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    30720000 bytes(31 MB) copied, 0.130739 s, 235MB/s

    real 0m0.140s

    user 0m0.016s

    sys  0m0.104s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(31 MB) copied, 0.0316264 s, 971MB/s

    real 0m0.035s

    user 0m0.000s

    sys  0m0.020s

第二次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    30720000 bytes(31 MB) copied, 0.12498 s, 246MB/s

    real 0m0.134s

    user 0m0.012s

    sys  0m0.100s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(31 MB) copied, 0.0316264 s, 971MB/s

    real 0m0.035s

    user 0m0.000s

    sys  0m0.020s 

第三次: 

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    300000+0 records in

    300000+0 records out

    30720000 bytes(307 MB) copied, 49.6879 s, 6.2MB/s

    real 0m49.691s

    user 0m0.072s

    sys  0m1.788s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    4687+1 records in

    4687+1 records out

    307200000 bytes(307 MB) copied, 0.135681 s, 2.3GB/s

    real 0m0.139s

    user 0m0.004s

    sys  0m0.096s 

第四次:

     root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    3000000+0 records in

    3000000+0 records out

    307200000 bytes(307 MB) copied, 38.6857s, 7.9MB/s

    real 0m40.807s

    user 0m0.096s

    sys  0m1.208s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    4687+1 records in

    4687+1 records out

    307200000 bytes(307 MB) copied, 0.148741 s, 2.1GB/s

    real 0m0.152s

    user 0m0.004s

    sys  0m0.088s            

4. 分析

A. 开发板上结果分析

    Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

    Type "copyright", "credits" or "license()" for more information.

    >>> 1024*30000

    30720000

    >>> 30/41.35

    0.7255139056831922

    >>> 30720000/9.79

    3137895.8120531156

    >>> 30720000/41.35

    742926.2394195888

    >>>

B. Vmware 6.0 虚拟机上结果分析

 

 /******************************************************************/

 /* 16GB移动U盘                                */

 /******************************************************************/

3. 运行

A. 在开发板上

第一次:

    # time /bin/dd if=/dev/zero of=u/tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 9.38s

    user    0m 0.20s

    sys     0m 4.74s

    # time /bin/dd if=u/tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 5.27s

    user    0m 0.01s

    sys     0m 0.86s

 

 

第二次:

    # time /bin/dd if=/dev/zero of=u/tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 11.08s

    user    0m 0.22s

    sys     0m 4.83s

    # time /bin/dd if=u/tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 8.23s

    user    0m 0.01s

    sys     0m 0.71s

 

第三次:

    # time /bin/dd if=/dev/zero of=u/tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 13.41s

    user    0m 0.23s

    sys     0m 5.04s

    # time /bin/dd if=u/tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 6.61s

    user    0m 0.02s

    sys     0m 0.95s

 

B. 在VMware虚拟机上

第一次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    30000+0 records in

    30000+0 records out

    30720000 bytes(307 MB) copied, 33.3725s, 9.2MB/s

    real 0m33.459s

    user 0m0.076s

    sys  0m6.564s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(307 MB) copied, 0.147436 s, 2.1GB/s

    real 0m0.151s

    user 0m0.000s

    sys  0m0.104s

 

第二次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    30000+0 records in

    30000+0 records out

    30720000 bytes(307 MB) copied, 33.9223s, 9.1MB/s

    real 0m33.987s

    user 0m0.076s

    sys  0m01.316s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(307 MB) copied, 0.131432 s, 2.3GB/s

    real 0m0.135s

    user 0m0.004s

    sys  0m0.072s

 

第三次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    30000+0 records in

    30000+0 records out

    30720000 bytes(307 MB) copied, 35.4205s, 8.7MB/s

    real 0m35.487s

    user 0m0.028s

    sys  0m1.516s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(307 MB) copied, 0.144891 s, 2.1GB/s

    real 0m0.148s

    user 0m0.000s

    sys  0m0.108s

 

4. 分析

A. 在开发板上

第一次

    Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

    Type "copyright", "credits" or "license()" for more information.

    >>> size=1024*30000

    >>> print(size/1024/1024,'M')

    29.296875 M

    >>> write=size/9.38

    >>> print(write/1024/1024, 'M')

    3.123334221748401 M

    >>> read=size/5.27

    >>> print(read/1024/1024,'M')

    5.559179316888046 M

 

第二次:

    Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

    Type "copyright", "credits" or "license()" for more information.

    >>> size=1024*30000

    >>> print(size/1024/1024,'M')

    29.296875 M

    >>> write=size/13.41

    >>> print(write/1024/1024,'M')

    2.1847035794183447 M

    >>> read=size/8.23

    >>> print(read/1024/1024,'M')

    3.5597660996354796 M

 

第三次:

    Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

    Type "copyright", "credits" or "license()" for more information.

    >>> size=1024*30000

    >>> print(size/1024/1024,'M')

    29.296875 M

    >>> write=size/13.41

    >>> print(write/1024/1024,'M')

    2.1847035794183447 M

    >>> read=size/6.61

    >>> print(read/1024/1024,'M')

    4.432204992435703 M

 

B. 在VMware虚拟机上

 

 /******************************************************************/

 /* 500 GB移动硬盘           */

 /******************************************************************/

3. 运行

A. 在开发析上

第一次:

    # time /bin/dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 7.90s

    user    0m 0.21s

    sys     0m 4.36s

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 6.59s

    user    0m 0.00s

    sys     0m 1.05s

第二次:

    # time /bin/dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 8.36s

    user    0m 0.17s

    sys     0m 4.40s

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 5.37s

    user    0m 0.01s

    sys     0m 1.34s

 

第三次:

    # time /bin/dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    real    0m 8.42s

    user    0m 0.34s

    sys     0m 4.58s

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 7.95s

    user    0m 0.00s

    sys     0m 0.70s

随机参考结果:

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 7.26s

    user    0m 0.01s

    sys     0m 0.79s

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 6.84s

    user    0m 0.01s

    sys     0m 1.10s

    # time /bin/dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    real    0m 37.94s

    user    0m 0.01s

    sys     0m 0.85s

 

B. 在Vmware虚拟机上

第一次: 

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    30720000 bytes(31 MB) copied, 0.291994 s, 105MB/s

    real 0m0.292s

    user 0m0.004s

    sys  0m0.272s

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(31 MB) copied, 0.0316264 s, 971MB/s

    real 0m0.035s

    user 0m0.000s

    sys  0m0.020s

 

 

第二次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=30000

    30000+0 records in

    30000+0 records out

    30720000 bytes(31 MB) copied, 0.137522 s, 223MB/s

    real 0m0.146s

    user 0m0.000s

    sys  0m0.120s

 

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    468+1 records in

    468+1 records out

    30720000 bytes(31 MB) copied, 0.032123 s, 956MB/s

    real 0m0.035s

    user 0m0.000s

    sys  0m0.020s

 

以下为大容量测试(307M数据):

第三次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    300000+0 records in

    300000+0 records out

    307200000 bytes(307 MB) copied, 16.6353 s, 18.5 MB/s

    real 0m16.639s

    user 0m0.032s

    sys  0m2.816s

 

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    4687+1 records in

    4687+1 records out

    307200000 bytes(307 MB) copied, 0.125086 s, 2.5 GB/s

    real 0m0.128s

    user 0m0.004s

    sys  0m0.064s

第四次:

    root@brauce-desktop:/mnt/usb# time dd if=/dev/zero of=tmp bs=1024 count=300000

    300000+0 records in

    300000+0 records out

    307200000 bytes(307 MB) copied, 16.0035 s, 19.2MB/s

    real 0m16.072s

    user 0m0.104s

    sys  0m1.120s

 

    root@brauce-desktop:/mnt/usb# time dd if=tmp of=/dev/null bs=64k

    4687+1 records in

    4687+1 records out

    307200000 bytes(307 MB) copied, 0.148483s, 2.1 GB/s

    real 0m0.152s

    user 0m0.000s

    sys  0m0.124s         

 

4. 分析

A. 开发板上结果分析

只分析了第一次:

    Python 3.2 (r32:88445, Feb 20 2011, 21:29:02) [MSC v.1500 32 bit (Intel)] on win32

    Type "copyright", "credits" or "license()" for more information.

    >>> print(size/1024/1024,"M")

    29.296875 M

    >>> size=1024*30000

    >>> print(size/1024/1024, "M")

    29.296875 M

    >>> write=size/7.9

    >>> print(write/1024/1024, "M")

    3.7084651898734173 M

    >>> read=size/6.59

    >>> print(read/1024/1024,"M")

    4.445656297420334 M

    >>> 

 

B. Vmware虚拟机上结果分析

   不用分析了哦,呵呵,Vmware上的dd命令已经把结果输出来了 

PS:

1. 创建设备

    #mknod /dev/null c 1 3

    #mknod /dev/zero c 1 5

    #mknod /dev/random c 1 8

 

time有计时作用,dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写

 

5. 总结:

SD卡: 

   在开发板上,读速度在3.1MB/s,写的速度在开发板上是740K/s,

   而在Vmware中读速度能达到970MB/s-2.3GB/s。 写速度是6.2MB/s

16GBU盘:

   在开发板上,读速度在4.4MB/s,写的速度在开发板上是2.1M/s-3.1M/s,

   而在Vmware中读速度能达到2.3GB/s。 写速度是9.1MB/s

500GB硬盘:

   在开发板上,硬盘的读速度在 4.4MB/s,而写的速度在3.3MB/s.

   在Vmware虚拟机中,硬盘的读速度在 2.1GB ,写速度在18.5MB/s左右   

之所以出现这样的结果可能是和CPU的处理速度和存储设备的处理速度有关。 

 

注:理论上复制量越大测试越准确。

tip: noetpad没有很多地tab的功能,哈哈。在dev-c++里使用了多行tab功能 

注: 

1. 给出大量的测试用例,不错的想法。

2. 对文档进行结构化排版,以后看的时候会更清楚一点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值