fat32 的 tf 卡写文件卡顿

23 小时 56 分钟前
 zzzyk

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

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