使用 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

为什么读取速度还是那么快?