Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
zzzyk
V2EX  ›  Linux

fat32 的 tf 卡写文件卡顿

  •  
  •   zzzyk · Oct 31, 2024 · 3186 views
    This topic created in 738 days ago, the information mentioned may be changed or developed.

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

    31 replies  •  2024-11-01 08:45:09 +08:00
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    1
    整理过碎片,好像也没啥用,该出现还是出现。最大出现过 8s 的情况。
    roykingH
    roykingH
    Oct 31, 2024
    2
    发热了吧 写的时候摸一下卡 看看热不热
    ReZer0
    ReZer0
    Oct 31, 2024
    3
    先定位下问题在于读卡设备还是在于卡。如果问题在卡,看是否能换卡解决。
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    4
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    5
    @ReZer0 不是卡的问题,试了好几张卡和两个品牌的,都这样,在电脑上,在嵌入式板子上,都会有这种现象。
    minami
    minami
    Oct 31, 2024 via Android
    6
    同一个文件频繁读写吗?可以改用 mmap 看看能否优化
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    7
    @minami 不是同一个文件,一个文件写满 100m 后,会 close ,重新 open 一个新的文件在继续写
    ReZer0
    ReZer0
    Oct 31, 2024
    8
    @zzzyk 那读卡器呢,也是都不一样的?
    yulgang
    yulgang
    Oct 31, 2024
    9
    换个品牌卡,调整格式化时块大小试一试?
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    10
    @ReZer0 电脑用的同一个读卡器,但是嵌入式板子是直接插进去的。电脑试了两个卡,都是同一个读卡器。现象是一差不多的。
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    11
    @yulgang 试了两个品牌的卡了,块大小改过了 16kb 和 64kb 都没啥改善。
    ReZer0
    ReZer0
    Oct 31, 2024
    12
    @zzzyk 有没有写普通文件而非软件的测试文件试试。我在想会不会是本身这类卡的 4k 读取能力问题,而你软件测试文件刚好一次性都是 kb 级别,中间没有个缓存,导致卡的写入瓶颈引发的卡顿现象。当然,你也可以拿个 U 盘格式化成 fat32 ,看看写入对象变成 U 盘的时候会不会也引发这种现象。
    kenneth104
    kenneth104
    Oct 31, 2024
    13
    添加个 Cache ,容许丢数据就行
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    14
    @ReZer0 有道理,我先试试 u 盘会不会有这种现象。
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    15
    @kenneth104 感谢建议,这是卡顿的应付措施,这个肯定会加的,我想找找看没有解决这个卡顿或者减小卡顿时间的办法。
    kenneth104
    kenneth104
    Oct 31, 2024
    16
    其他办法,换 MLC 卡?没几个了,而且贵了些,但应该还好,需求容量不大
    starqoq
    starqoq
    Oct 31, 2024 via iPhone
    17
    感觉时写卡 cache 满了 然后卡顿了
    试试写完以后马上调用一下 flush 或者用 usb3.0 的读卡器喝高速卡
    ReZer0
    ReZer0
    Oct 31, 2024
    18
    @zzzyk 换个 4K 读写能力强点的。我怀疑是写缓给的不够导致卡本身出现写入瓶颈,用更强写入的 U 盘测试下看看问题是不是缓解。
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    19
    @starqoq 试过了,每次 write 都有 flush ,也试过没有 flush ,没有 flush 的写入时间正常波动,刷 cache 的时候的时间是 10ms ,没有刷的时候是 1ms ,不至于出现这个 4-5 秒的卡顿。
    minami
    minami
    Oct 31, 2024
    20
    @zzzyk #7 如果是这样的场景,更适合用 mmap 了,每次固定 100m
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    21
    @minami 大小不固定,1000 次 100k 数据,100k 数据也不固定,都不固定,只是单纯模拟实际应用场景(录像写文件)罢了
    minami
    minami
    Oct 31, 2024
    22
    @zzzyk #21 mmap 只是分配固定大小,每次写可以不固定啊
    opengps
    opengps
    Oct 31, 2024
    23
    试试看用摄像头录像专用的 tf 卡,对写入能力支持更好些
    kokutou
    kokutou
    Oct 31, 2024
    24
    买那种写了什么摄像头存储卡 你看看京东页面参数 下面写了写入速度 有 50m/s 的那种
    kokutou
    kokutou
    Oct 31, 2024
    25
    starqoq
    starqoq
    Oct 31, 2024
    26
    你可以试试高端一点的卡,可能是 tf 卡的主控回收 block 产生的卡顿。
    zzzyk
    zzzyk
    OP
    Oct 31, 2024
    27
    @minami 大佬的意思是用 mmap 创建个内存,把数据放这内存里面,在用 write 写入?
    wanguorui123
    wanguorui123
    Oct 31, 2024
    28
    是不是 QLC 颗粒导致的啊
    yinmin
    yinmin
    Oct 31, 2024 via iPhone
    29
    试试 sandisk a1 卡,如果是 linux 系统别买 a2 卡
    cooltechbs
    cooltechbs
    Nov 1, 2024 via Android
    30
    关注此帖。我用过不少高速 TF 卡,用 CrystalDiskMark 测出来的 4K 读写 IOPS 都有一两千,可是尝试往上面装系统都是卡到不能自理。然而 Steam Deck 内置卡槽插上一样的卡却可以流畅安装运行 win11 。至今不知道什么原理,如果 LZ 解决了我一定回来涨涨见识
    wm5d8b
    wm5d8b
    Nov 1, 2024 via Android
    31
    @yinmin 为啥不推荐 a2 ,我看在树莓派上跑 home assistant 的都推荐买 a2
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1465 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 05:51 · PVG 13:51 · LAX 21:51 · JFK 00:51
    ♥ Do have faith in what you're doing.