V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
zzzyk
V2EX  ›  Linux

fat32 的 tf 卡写文件卡顿

  •  
  •   zzzyk · 2024-10-31 11:30:33 +08:00 · 2063 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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