我正试图获得安装在我的板上的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,读速度与这个值没有很大的不同??
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/s(重读后读的速度是200 MB/s ?)但是,如果您的测试集(10 MB)小于您的RAM数量(它是),则重新读取可能不是块设备(SD卡/HDD/SSD)的速度。
大多数操作系统(以及Linux)都有用于文件系统和块设备的软件内存缓存。当您第一次访问某个块时(自引导以来),它将从设备中读取并存储在操作系统的页面缓存中。这个块的下一次访问(读)将直接从RAM提供,而不是从设备本身(除非在I/O操作中使用了O_DIRECT选项,iozone的-I
选项)。
所以,你的测试运行是不正确的。使用前阅读手册页:http://linux.die.net/man/1/iozone并尝试更大的测试集(gb)或使用-I
绕过页面缓存
下面是我使用-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
为什么读取速度还是那么快