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存储 |
162 |
203 |
43 |
Kingston 240G SATA 3.0 mSATA 存储 |
278 |
279 |
120 |
Toshiba 64GB USB 3.0 USB存储盘 |
76 |
84 |
14 |
Kingston 8GB SDHC 4 Micro SD存储盘 |
22 |
20 |
5 |
b). 柱状图
5). 总结
本文基于NXP iMX8产品测试了包括eMMC、SATA、USB、SD存储外设性能供参考,由于存储设备的传输速率受接口协议,容量,测试工具软件,系统总线等众多因素影响,本文测试数据仅供横向对比参考,不能作为相应接口传输标准判定。