2016-06-24 23 views
0

我试图让安装SD卡性能,以我的板,我使用IOZONE工具来做到这一点,但我得到starnge结果bechmarking:SD卡使用IOZONE工具

命令:

# mount /dev/mmcblk2p2 /mnt/SD 
# cd /mnt/SD 
# iozone -a -s 10M -r 5K -w -e 

结果:

         random random bkwd record stride         
      KB reclen write rewrite read reread read write read rewrite  read fwrite frewrite fread freread 
     10240  5 4283 4136 68681 378738 337652 3871 133905 96074 216912  4122  5013 364024 376181 

结果以KB这意味着速度随机读取为300MB/s的? 我的卡片通常是第4类,写入速度是4 MB/s,读取速度与此值并无太大区别?

+0

您的操作系统(linux?)可能会缓存从SD闪存卡读取的数据;所以300 MB/s可能从RAM内存中读取 – osgx

回答

0
iozone -a -s 10M -r 5K -w -e 

            random random bkwd record stride         
     KB reclen write rewrite read reread read write read rewrite  read fwrite frewrite fread freread 
    10240  5 4283 4136 68681 378738 337652 3871 133905 96074 216912  4122  5013 364024 376181 

是的,你的结果是在千字节/秒(KB/S;不要使用-s静音选项和IOZONE会说这Output is in kBytes/sec),是的,那里为 “重读” 速度为380 MB /秒(重读后读取200 MB/s)?但是如果您的测试设置(10 MB)小于您的RAM数量(它),则重新读取可能不是您的块设备(SD卡/ HDD/SSD)的速度。

大多数操作系统(以及Linux)都有用于文件系统和块设备的软件RAM缓存。当您第一次访问某个块(自引导以来)时,它将从设备中读取并存储在OS的Page Cache中。该块的下一个访问(读取)将直接从RAM中提供,而不是从设备本身提供(除非在I/O操作中使用了O_DIRECT选项,iozone的-I选项)。

因此,您的测试运行不正确。使用前阅读iozone的手册页:http://linux.die.net/man/1/iozone并尝试更大的测试集(千兆字节)或使用-I来绕过页面缓存。

+0

我的RAM是512M,我想在几秒钟内通过SD速度的测试,这就是为什么我使用10M作为大小,选项-I不帮助它仍然是相同的结果。 – Mondher123

0

这里是当我使用-I选项

              random random bkwd record stride         
      KB reclen write rewrite read reread read write read rewrite  read fwrite frewrite fread freread 
     10240 1024 2356 2950 19693 20865 20833 2095 20111  1734 14375  2875  3566 386809 389443 


    write seq :    2,3 Mo/s 
    read seq:     19,2 Mo/s 
    write rand:    2 Mo/s 
    read rand:    20 Mo/s 
    read blk     20 Mo/s 

为什么读取速度还是那么高的结果?

+0

它太高了吗? 20 MB/s的速度足以从NAND闪存读取数据,SD接口每秒传递20 MB数据是真实的。从NAND读取总是比写入快2-4倍。 SD接口有几种速度协议和等级:[Secure_Digital#Speeds of wikipedia](https://en.wikipedia.org/wiki/Secure_Digital#Speeds),SD的某些UHS变体可能会通过50和100 MB/s。 – osgx

+0

感谢您提供这些信息 – Mondher123