Tina_Linux存储性能参考指南

OpenRemoved_Tina_Linux_存储性能_参考指南

1 概述

1.1 编写目的

介绍TinaLinux 存储性能的测试方法和历史数据,提供参考。

1.2 适用范围

Tina V3.0 及其后续版本。

1.3 相关人员

适用于TinaLinux 平台的客户及相关技术人员。

2 经验性能值

Flash 性能与实际使用物料有关,受不同存储介质、不同厂家、不同型号甚至不同老化程度的影响,所以经验值仅供参考。

2.1 顺序读写性能经验值

IC 物料类型 Flash 型号 顺序读性能 顺序写性能 其他说明
R16 raw nand K9F4G08U0F 40M/s 5.6M/s
R6 spi nand MX35LF1GE4AB 4M/s 2M/s 见注1
R6 spi nor FM25Q128 5.6M/s 3.1M/s 见注2
R30 mmc KLM8G1WEPD-B031 77M/s 7.7M/s 见注3
R333 spi nand F50L1G41LB 5.7M/s 2.0M/s 见注1
R328 spi nand DS35X1GAXXX 12.1M/s 4M/s 见注4
R328 spi nand W25N01GVZE1G 6.9M/s 2.7M/s 见注5
R329 spi nand GD5F1GQ4UBYIG 7.5M/s 2.9M/s 见注6
R528 spi nand GD5F1GQ4UBYIG 5.1M/s 2.8M/s 见注6
MR813 mmc THGBMBG7D2KBAIL 165.56M/s 32.18M/s 见注7
R528 mmc THGBMJG6C1LBAB7 62.5M/s 17.4M/s 见注8
R528 mmc KLM8G1GESD 63M/s 20.4M/s 见注8
R528 mmc KLM8G1GESD 61.8M/s 39.5M/s 见注9
D1 spi nand MX35LF2GE4AD 4.8M/s 2.9M/s 见注10
V853 emmc THGBMJG6C1LBAU7 156M/s 25M/s 见注7
V853 emmc THGBMJG6C1LBAU7 69M/s 25M/s 见注8
V853 spinand MX35LF1GE4AB-Z4I 7.7M/s 2.9M/s 见注11
V853 spi nor GD25F256 7.4M/s 270KB/s 见注4

说明

  1. 单线写,双线读,100MHz。
  2. 单线写,单线读,50MHz。
  3. HS400,50MHz,8 线。
  4. 四线读写,100MHz。
  5. ubifs,非压缩,四线读写,100MHz。
  6. ubifs,lzo 压缩,50% 随机数据,四线读写,100MHz,performance 调频策略。
  7. hs400,100MHz,8 线。
  8. hs200,150MHz,4 线, 1.8V。
  9. hs200,150MHz,4 线, 1.8V, 不带O_SYNC
  10. ubifs,lzo 压缩,50% 随机数据,四线读写,100MHz。performance 调频策略, cpu 频率1440000Hz, dram频率792MHz;
  11. ubifs,lzo 压缩,50% 随机数据,四线读写,100MHz。performance 调频策略, cpu 频率1104000Hz, dram频率936MHz;

2.2 随机读写性能经验值

IC 物料类型 Flash 型号 顺序读性能 顺序写性能 其他说明
R6 raw nand K9F4G08U0F 2486 146 见注1
R333 spi nand F50L1G41LB 959 266 见注1
R329 spi nand GD5F1GQ4UBYIG 1890 592 见注2
R528 spi nand GD5F1GQ4UBYIG 907 385 见注2
MR813 mmc THGBMJG6C1LBAU 6015 1596 见注3
R528 mmc THGBMJG6C1LBAB7 2657 830 见注4
R528 mmc THGBMJG6C1LBAB7 2657 830 见注4
R528 mmc KLM8G1GESD 2582 872 见注4
R528 mmc KLM8G1GESD 2038 2220 见注5
D1 spi nand MX35LF2GE4AD 919 425 见注6
V853 emmc THGBMJG6C1LBAU7 4407 1363 见注3
V853 emmc THGBMJG6C1LBAU7 3833 1287 见注4
V853 spinand MX35LF1GE4AB-Z4I 1773 590 见注7

说明

  1. 单线写,双线读,100MHz
  2. ubifs,lzo 压缩,50% 随机数据,四线读写,100MHz,performance 调频策略。
  3. hs400,100MHz,8 线
  4. hs200,150MHz,4 线, 1.8V
  5. hs200,150MHz,4 线, 1.8V, 不带O_SYNC
  6. ubifs,lzo 压缩,50% 随机数据,四线读写,100MHz,performance 调频策略, cpu 频率1440000Hz, dram频率792MHz;
  7. ubifs,lzo 压缩,50% 随机数据,四线读写,100MHz。performance 调频策略, cpu 频率1104000Hz, dram频率936MHz;

3 顺序读写性能

3.1 顺序写性能理论值计算

物料的数据手册一般会提供擦除和写的耗时,关注数据手册中Block Erase time、PageProgram time 此类关键字数值。以GD25Q256E(spi nor)为例,Block Erase time:0.12s/0.15s typical(Block size 64KByte) ,Page Program time: 0.25ms typical(Page
size 256Byte)。

| High Speed Clock Frequency | Fast Program/Erase Speed |
| 133MHz for fast read with 30PF load | Page Program time: 0.25ms typical |
| Dual I/O Data transfer up to 266Mbits/s | Sector Erase time: 45ms typical |
| Quad I/O Data transfer up to 532Mbits/s | Block Erase time: 0.12s/0.15s typical |

上面的Quad 的传输速率,是通过133MHZ * 4 line 计算到的,是一个理论数据,而实际的使用场景,我们要读数据前要用1 line 发送5(6)Bytes 数据,即cmd + addr[3(4)] + dummy(大于16M 的FLASH,需要发4byte 地址), 其次我们SPI 控制器最大输出频率100Mhz。假设
发一次命令读N bytes 数据,则命令和数据所占时间的比例为5 : (N/4), 那么实际4 line 的极限速度等于(N/4) / [5+(N/4)] * CLK * 4Mbits/s。以100Mhz 4line 为例,理论极限速度为47.68MB/s。

speed = 32MByte/(erase_time + program_time + spi_time)
= 32MByte/(0.15s*(32MByte/64KByte) + 0.25ms*(32MByte/256Byte) + 32MByte/47.68MB/s)
= 32MByte/(76.8s + 32.8s +0.67s)
= 290KByte/s

以GD5F1GQ4UAYIG(spinand)为例,Block Erase time: 3ms typical(Block size128KByte) ,Page Program time: 0.4ms typical(Page size 2048Byte)。

speed = 128MByte/(erase_time + program_time)
= 128MByte/(3ms*(128MByte/128KByte) + 0.4ms*(128MByte/2048Byte) + 128MByte/47.68MB/s)
= 128MByte/(3072ms + 26214.4ms + 2684ms)
= 4.0MByte/s

3.2 顺序性能测试方法

Tina 测试平台有2 个顺序读写性能的测试用例,分别如下。

/spec/storage/seq #适用于>64M 内存的方案
/spec/storage/tiny-seq #适用于<=64M 内存的方案和使用ubifs的存储方案

特别注意的是,在测试文件数据量非常小时,内存对测试影响太大,测试出来的读数据会非常不准确。例如,对spinor 的测试分区只有5M 大小,而内存有64M,测试出的读可能达到100+M/s,此时的读数据不具有参考价值。

3.3 顺序性能解读

顺序读写性能以读写速度(KB/s;MB/s) 作为衡量标准,主要体现大文件连续读写的性能。此时,速度值越大,顺序读写性能越好。
不同存储介质的读写性能是有差异的,甚至同一种存储介质,不同厂家不同型号可能都有差别。
以mmc 为例,有的mmc 写性能只能达到10M/s,而有的mmc 写性能达到150M/s。一般来说,MMC 的规格书中有体现性能估值。
常见的,不同介质顺序读写性能排序如下。

读: mmc > raw nand > spinor > spinand
写: mmc > raw nand > spinand > spinor

4 随机读写性能

4.1 随机性能测试方法

Tina 测试平台有1 个随机读写性能的测试用例,且只适用于>64M内存方案。

/spec/storage/rand

4.2 随机性能解读

随机读写性能以IOPS(IO per second) 为衡量标准,理解为每秒处理多少个IO 请求。此指标反应的是小文件的读写性能。此数值越高,表示其随机读写性能越好。
与顺序读写相似的是,其数值也与实际物料,当前工作模式有关。

5 读写性能的影响因素

5.1 O_SYNC

注意Tina 使用iozone 时,默认参数是使能了O_SYNC 的,降低了cache 的影响。应用正常运行时,一般不使用O_SYNC,可获得比所测数据更佳的性能。
如需测不带O_SYNC 的性能,需修改iozone 参数,测试用例的menuconfig 中提供了ASYNC选项,选上即可。
测试用例运行过程会打印出iozone 的参数,具体参数含义请查看iozone 的帮助。

5.2 调频策略

不同调频策略会对读写性能造成影响,建议在测试的时候切换到performance 策略。

find . -name scaling_governor #找到调频节点
echo "performance" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor #修改策略
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor #确认策略切换成功

5.3 其他

对比性能时,需保持其他条件尽可能一致,包括但不限于CPU 频率,DDR 频率,DDR 类型,系统负载等。多次测试会有波动,可以烧录固件后第一次测试的数据为准,或多次取平均。

猜你喜欢

转载自blog.csdn.net/thisway_diy/article/details/129237036