Tina_Linux存储性能参考指南

2023-03-01 14:14:33 浏览数 (1)

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)。

代码语言:javascript复制
| 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。

代码语言:javascript复制
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)。

代码语言:javascript复制
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 个顺序读写性能的测试用例,分别如下。

代码语言:javascript复制
/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 的规格书中有体现性能估值。 常见的,不同介质顺序读写性能排序如下。

代码语言:javascript复制
读: mmc > raw nand > spinor > spinand
写: mmc > raw nand > spinand > spinor

4 随机读写性能

4.1 随机性能测试方法

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

代码语言:javascript复制
/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 策略。

代码语言:javascript复制
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 类型,系统负载等。多次测试会有波动,可以烧录固件后第一次测试的数据为准,或多次取平均。

0 人点赞