1).简介

NXP iMX8系列应用处理器是NXP发布的基于Cortex-A72/A53/A35和Coretex-M4/M7等架构的ARM处理器,对于存储部分,主要支持MMC 5.1、SD Memory Card 3.0、SATA 3.0、USB 3.0总线,本文就基于上述总线连接相应存储外设进行一些简单的性能对比测试。

本文所演示的ARM平台来自于Toradex 基于NXP iMX8QP ARM处理器的Apalis iMX8QP ARM嵌入式平台。

2).准备

a). Apalis iMX8QP ARM核心版配合Ixora 载板,连接调试串口UART1(载板X22)到开发主机方便调试。

b). Apalis iMX8 核心板安装Toradex Ycoto Linux Console image V3.04版本,详细信息请参考这里。

c). 测试设备:

./ Apalis iMX8QP 核心板板载Micron 16GB eMMC存储

./ Kingston 240G SATA 3.0 mSATA 存储

./ Toshiba 64GB USB 3.0 USB存储盘

./ Kingston 8GB SDHC 4 Micro SD存储盘

3).测试流程

a). 测试工具软件

./ 读测试:hdparm 和 dd 工具,都是系统自带的

./ 写测试:dd工具,系统自带

b). Apalis iMX8QP核心板自带eMMC测试

./ 读性能 – hdparm测试

---------------------------------

root@apalis-imx8:~# hdparm -tT --direct /dev/mmcblk0

/dev/mmcblk0:

Timing O_DIRECT cached reads:   326 MB in  2.00 seconds = 162.78 MB/sec

Timing O_DIRECT disk reads: 488 MB in  3.00 seconds = 162.59 MB/sec

---------------------------------

hdparm读测试性能为 162MB/s

./ 写测试 – dd测试,先将缓存全部写入磁盘,然后开始完成数据写入(5000MB数据)并写入磁盘的操作,避免系统缓存的干扰

---------------------------------

root@apalis-imx8:~# sync;time -p bash -c "(dd if=/dev/zero bs=1M count=5000 of=/home/root/test.file;sync)"

5000+0 records in

5000+0 records out

real 115.24

user 0.02

sys 30.49

---------------------------------

dd写测试性能为43MB/s

./ 读测试 – dd测试,先清空缓存,再读取刚写测试写入的文件

---------------------------------

root@apalis-imx8:~# echo 3 > /proc/sys/vm/drop_caches ;time dd if=/home/root/test.file of=/dev/null bs=1M

[12721.556361] sh (4312): drop_caches: 3

5000+0 records in

5000+0 records out

real    0m24.649s

user    0m0.013s

sys     0m7.882s

---------------------------------

dd读测试性能为203MB/s

c). mSATA存储测试

./ 读性能 – hdparm测试

---------------------------------

root@apalis-imx8:~# hdparm -tT --direct /dev/sda

/dev/sda:

Timing O_DIRECT cached reads:   536 MB in  2.00 seconds = 267.78 MB/sec

Timing O_DIRECT disk reads: 834 MB in  3.00 seconds = 277.81 MB/sec

---------------------------------

hdparm读测试性能为 278MB/s

./ 写测试 – dd测试,首先确保mSATA磁盘分区为Linux EXT3分区而不是FAT32分区,避免4GB文件容量限制;然后写入20000MB数据进行测试

---------------------------------

root@apalis-imx8:~# sync;time -p bash -c "(dd if=/dev/zero bs=1M count=20000 of=/media/sda1/test.file;sync)"

20000+0 records in

20000+0 records out

real 166.53

user 0.10

sys 136.55

---------------------------------

dd写测试性能为120MB/s

./ 读测试 – dd测试,先清空缓存,再读取刚写测试写入的文件

---------------------------------

root@apalis-imx8:~# echo 3 > /proc/sys/vm/drop_caches ;time dd if=/media/sda1/test.file of=/dev/null bs=1M

[ 1451.601563] sh (4302): drop_caches: 3

20000+0 records in

20000+0 records out

real    1m11.699s

user    0m0.077s

sys     0m43.444s

---------------------------------

dd读测试性能为279MB/s

d). USB 3.0磁盘测试

./ 读性能 – hdparm测试

---------------------------------

root@apalis-imx8:~# hdparm -tT --direct /dev/sdb

/dev/sdb:

Timing O_DIRECT cached reads:   164 MB in  2.01 seconds =  81.47 MB/sec

Timing O_DIRECT disk reads: 230 MB in  3.01 seconds =  76.29 MB/sec

root@apalis-imx8:~# hdparm -tT --direct /dev/sdb

---------------------------------

hdparm读测试性能为 76MB/s

./ 写测试 – dd测试,FAT32分区,写入3000MB数据进行测试

---------------------------------

root@apalis-imx8:~# sync;time -p bash -c "(dd if=/dev/zero bs=1M count=3000 of=/media/sdb1/test.file;sync)"

3000+0 records in

3000+0 records out

real 207.67

user 0.00

sys 24.04

---------------------------------

dd写测试性能为14MB/s

./ 读测试 – dd测试,先清空缓存,再读取刚写测试写入的文件

---------------------------------

root@apalis-imx8:~# echo 3 > /proc/sys/vm/drop_caches ;time dd if=/media/sdb1/test.file of=/dev/null bs=1M

[ 3962.950390] sh (4302): drop_caches: 3

3000+0 records in

3000+0 records out

real    0m35.672s

user    0m0.028s

sys     0m7.581s

---------------------------------

dd读测试性能为84MB/s

e). SD Memroy Card测试

./ 读性能 – hdparm测试

---------------------------------

root@apalis-imx8:/# hdparm -tT --direct /dev/mmcblk1

/dev/mmcblk1:

Timing O_DIRECT cached reads:    44 MB in  2.04 seconds =  21.60 MB/sec

Timing O_DIRECT disk reads:  66 MB in  3.03 seconds =  21.77 MB/sec

---------------------------------

hdparm读测试性能为 22MB/s

./ 写测试 – dd测试,FAT32分区,写入3000MB数据进行测试

---------------------------------

root@apalis-imx8:/# sync;time -p bash -c "(dd if=/dev/zero bs=1M count=3000 of=/media/mmcblk1p1/test.file;sync)"

3000+0 records in

3000+0 records out

real 564.41

user 0.02

sys 35.04

---------------------------------

dd写测试性能为5MB/s

./ 读测试 – dd测试,先清空缓存,再读取刚写测试写入的文件

---------------------------------

root@apalis-imx8:/# echo 3 > /proc/sys/vm/drop_caches ;time dd if=/media/mmcblk1p1/test.file of=/dev/null bs=1M

[ 1638.664693] sh (4292): drop_caches: 3

3000+0 records in

3000+0 records out

real    2m29.023s

user    0m0.011s

sys     0m5.625s

---------------------------------

dd读测试性能为20MB/s

4).测试结果

a). 表格

hdparm读测试(MB/s)dd读测试(MB/s)dd写测试(MB/s)

板载Micron 16GB eMMC存储16220343

Kingston   240G SATA 3.0 mSATA 存储278279120

Toshiba   64GB USB 3.0 USB存储盘768414

Kingston   8GB SDHC 4 Micro SD存储盘22205

b). 柱状图

5).总结

本文基于NXP iMX8产品测试了包括eMMC、SATA、USB、SD存储外设性能供参考,由于存储设备的传输速率受接口协议,容量,测试工具软件,系统总线等众多因素影响,本文测试数据仅供横向对比参考,不能作为相应接口传输标准判定。