fat32 的 tf 卡写文件卡顿

1 天前
 zzzyk

请问一下各位大佬,我往 tf 卡写文件的时候,发现偶尔会出现几次卡顿 4-5s 的情况。往一个文件里面连续写入 1000 次 100k 数据,记录 write 的运行时间,写 10 几个文件的测试 demo 。换成了 exfat ,有改善。但是客户要求用 fat32 ,这个有办法优化嘛。

804 次点击
所在节点    Linux
31 条回复
zzzyk
1 天前
整理过碎片,好像也没啥用,该出现还是出现。最大出现过 8s 的情况。
royking930911
1 天前
发热了吧 写的时候摸一下卡 看看热不热
ReZer0
1 天前
先定位下问题在于读卡设备还是在于卡。如果问题在卡,看是否能换卡解决。
zzzyk
1 天前
zzzyk
1 天前
@ReZer0 不是卡的问题,试了好几张卡和两个品牌的,都这样,在电脑上,在嵌入式板子上,都会有这种现象。
minami
1 天前
同一个文件频繁读写吗?可以改用 mmap 看看能否优化
zzzyk
1 天前
@minami 不是同一个文件,一个文件写满 100m 后,会 close ,重新 open 一个新的文件在继续写
ReZer0
1 天前
@zzzyk 那读卡器呢,也是都不一样的?
yulgang
1 天前
换个品牌卡,调整格式化时块大小试一试?
zzzyk
1 天前
@ReZer0 电脑用的同一个读卡器,但是嵌入式板子是直接插进去的。电脑试了两个卡,都是同一个读卡器。现象是一差不多的。
zzzyk
1 天前
@yulgang 试了两个品牌的卡了,块大小改过了 16kb 和 64kb 都没啥改善。
ReZer0
1 天前
@zzzyk 有没有写普通文件而非软件的测试文件试试。我在想会不会是本身这类卡的 4k 读取能力问题,而你软件测试文件刚好一次性都是 kb 级别,中间没有个缓存,导致卡的写入瓶颈引发的卡顿现象。当然,你也可以拿个 U 盘格式化成 fat32 ,看看写入对象变成 U 盘的时候会不会也引发这种现象。
kenneth104
1 天前
添加个 Cache ,容许丢数据就行
zzzyk
1 天前
@ReZer0 有道理,我先试试 u 盘会不会有这种现象。
zzzyk
1 天前
@kenneth104 感谢建议,这是卡顿的应付措施,这个肯定会加的,我想找找看没有解决这个卡顿或者减小卡顿时间的办法。
kenneth104
1 天前
其他办法,换 MLC 卡?没几个了,而且贵了些,但应该还好,需求容量不大
starqoq
1 天前
感觉时写卡 cache 满了 然后卡顿了
试试写完以后马上调用一下 flush 或者用 usb3.0 的读卡器喝高速卡
ReZer0
1 天前
@zzzyk 换个 4K 读写能力强点的。我怀疑是写缓给的不够导致卡本身出现写入瓶颈,用更强写入的 U 盘测试下看看问题是不是缓解。
zzzyk
1 天前
@starqoq 试过了,每次 write 都有 flush ,也试过没有 flush ,没有 flush 的写入时间正常波动,刷 cache 的时候的时间是 10ms ,没有刷的时候是 1ms ,不至于出现这个 4-5 秒的卡顿。
minami
1 天前
@zzzyk #7 如果是这样的场景,更适合用 mmap 了,每次固定 100m

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1085251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX