本文根据一个实际案例介绍TF卡存储性能调优思路。
阅读本文前,建议先阅读下这三篇文章:
《NAND Flash基础知识简介》
《Flash写入性能下降问题》
《文件碎片对Flash性能的影响》
这是个系统性问题,并非单一原因导致的,排查过程涉及测试/验证较多,很多实验是多个优化点的组合。由于单次实验很耗时,很多是同步进行的,本文就不再以时间线的形式逐步递进,而是逐一列出所有的问题点及对应排查方法、优化方法。
一、背景
在一个视频存储项目中遇到由于TF卡写入性能下降导致的视频丢帧问题。
项目业务框图如下所示,在下面的业务场景下出现丢帧:
两路视频存储,码流速率分别是12Mbps、8Mbps,视频一直在循环覆盖写,卡满后就删除最老的视频文件
一个文件日志,记录设备运行信息,理论速率不超过11.5Kbps,文件大小不超过2MB,达到上限后文件内部自循环覆盖最早的日志
存储介质是TF卡(MLC类型的NAND Flash, Class 10),大概在TF卡被循环覆盖写一遍后就会出现问题,规律还算比较明显。
二、排查点及优化方法
首先确认是CPU瓶颈还是IO瓶颈导致的问题。
通过iostat命令发现iowait和idle都较高(60% ~80%),基本上可以确认这是IO瓶颈导致的问题。如果是IO瓶颈,可能是由于以下几种原因导致的:
芯片TF卡控制器的问题
TF卡本身的问题,也就是常说的”挑卡”,有些卡有问题,有些卡没问题
业务层写卡逻辑不合理导致的问题