硬汉嵌入式论坛

 找回密码
 立即注册
查看: 234|回复: 8
收起左侧

Fatfs长时间写入会导致写入速度越来越慢

[复制链接]

23

主题

51

回帖

120

积分

初级会员

积分
120
发表于 2024-5-13 15:09:50 | 显示全部楼层 |阅读模式
实验情况如下:
一个数据包数据量在1kb以内,每一秒生成一个数据包写入,以时间戳作为文件名,基本的代码流程就是(f_open,f_write,f_close)

奇怪的现象是:刚开始的时候,耗时只要20ms左右,随着时间下来,耗时逐步递增,直到耗时2000ms都出现了,不知道是什么原因,有大佬答疑一下吗


回复

使用道具 举报

23

主题

51

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2024-5-13 15:41:08 | 显示全部楼层
@eric2013,硬汉哥帮忙看一下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2024-5-13 15:46:50 | 显示全部楼层
换个模式

fopen后,后面仅调用f_write+f_sync试试,其中f_sync会将数据实际写入到卡里面
回复

使用道具 举报

23

主题

51

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2024-5-13 16:21:18 | 显示全部楼层
eric2013 发表于 2024-5-13 15:46
换个模式

fopen后,后面仅调用f_write+f_sync试试,其中f_sync会将数据实际写入到卡里面

但数据包不是写在同一个文件里,而是单独一个以时间戳命名的新文件
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2024-5-14 09:44:57 | 显示全部楼层
熊大 发表于 2024-5-13 16:21
但数据包不是写在同一个文件里,而是单独一个以时间戳命名的新文件

那不行了,随着你创建的文件越来越多,确实是慢很多。
回复

使用道具 举报

5

主题

133

回帖

148

积分

初级会员

积分
148
发表于 2024-5-14 10:19:30 | 显示全部楼层
创建的时候好像会检测是否重名,一个文件夹里文件数量不要太多,可以试试一天一个文件夹
回复

使用道具 举报

23

主题

51

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2024-5-14 10:28:13 | 显示全部楼层
本帖最后由 熊大 于 2024-5-14 11:12 编辑
eric2013 发表于 2024-5-14 09:44
那不行了,随着你创建的文件越来越多,确实是慢很多。

这个就没办法优化了吧?
回复

使用道具 举报

23

主题

51

回帖

120

积分

初级会员

积分
120
 楼主| 发表于 2024-5-14 10:31:06 | 显示全部楼层
基本的代码流程就是(f_open,f_write,f_close),耗时都在f_open里
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107462
QQ
发表于 2024-5-15 10:12:52 | 显示全部楼层
熊大 发表于 2024-5-14 10:31
基本的代码流程就是(f_open,f_write,f_close),耗时都在f_open里

关于这个问题,FlashFS提供了一个解决办法,他是有个FAT name cache size配置选型,用户要创建多少文件,这个就设置多大,否则就会卡顿。

用户反应RL-FlashFS创建的文件数有限,多了就不行,这里批量测试创建2000个文件
https://www.armbbs.cn/forum.php? ... 5589&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-2 08:38 , Processed in 0.398262 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表