使用 iozone 工具对 SD 卡进行基准测试
SD card bechmarking using iozone tool
我正在尝试将已安装的 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
结果以千字节为单位,这意味着随机读取速度为 300MB/s ??
我的卡是 class 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
是的,你的结果在 kilobyte/s 中(KB/s;不要使用 -s
静默选项,iozone 会说 Output is in kBytes/sec
),是的,有"reread" 速度为 380 MB/s(重读后为 200 MB/s?)。但是,如果您的测试集 (10 MB) 小于您的 RAM 数量(它是),则重读可能不是您的块设备 (SD card/HDD/SSD) 的速度。
大多数 OS(和 Linux 也)有用于文件系统和块设备的软件缓存在 RAM 中。当您第一次访问某个块时(自启动以来),它将从设备中读取并存储在 OS 的 Page Cache 中。此块的下一次访问(读取)将直接从 RAM 提供服务,而不是从设备本身提供服务(除非在 I/O 操作中使用了 O_DIRECT 选项,iozone 的 -I
选项)。
因此,您的测试 运行 不正确。使用前阅读 iozone 的手册页:http://linux.die.net/man/1/iozone 并尝试更大的测试集(千兆字节)或使用 -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
为什么读取速度还是那么快?
我正在尝试将已安装的 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
结果以千字节为单位,这意味着随机读取速度为 300MB/s ?? 我的卡是 class 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
是的,你的结果在 kilobyte/s 中(KB/s;不要使用 -s
静默选项,iozone 会说 Output is in kBytes/sec
),是的,有"reread" 速度为 380 MB/s(重读后为 200 MB/s?)。但是,如果您的测试集 (10 MB) 小于您的 RAM 数量(它是),则重读可能不是您的块设备 (SD card/HDD/SSD) 的速度。
大多数 OS(和 Linux 也)有用于文件系统和块设备的软件缓存在 RAM 中。当您第一次访问某个块时(自启动以来),它将从设备中读取并存储在 OS 的 Page Cache 中。此块的下一次访问(读取)将直接从 RAM 提供服务,而不是从设备本身提供服务(除非在 I/O 操作中使用了 O_DIRECT 选项,iozone 的 -I
选项)。
因此,您的测试 运行 不正确。使用前阅读 iozone 的手册页:http://linux.die.net/man/1/iozone 并尝试更大的测试集(千兆字节)或使用 -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
为什么读取速度还是那么快?