【问题标题】:Is write system call to a file reduce the memory write cycle how to handle是write system call to a file减少内存写周期怎么处理
【发布时间】:2017-08-16 06:11:28
【问题描述】:

我必须在一天内多次读取/写入单个文件。说可能是每秒,我必须更新文件。

这对内存有什么影响(我使用的是 Emmc 闪存)。

由于 emmc 具有定义的写入周期,它会损坏,请建议我处理这个问题的最佳方法。

使用 mmap 和 msync 怎么样,有没有可能避免写入..?

如果我使用 mmap 并且经常写入,每次写入共享映射内存时它也会写入闪存。?

【问题讨论】:

  • 如果你一直在闪存上重写文件,你会比不这样做更快地磨损闪存。文件系统可以通过更均匀地分散写入来帮助保护您。但是,目标可能应该是避免如此频繁地写入整个文件。一天有1440分钟;如果您需要每分钟写入一次整个文件,并且您的闪存额定为 100,000 次写入周期,那么您可能会很快耗尽您的驱动器。 (有一个因素是“如果文件是驱动器大小的 1%,那么您可以在经过一个周期之前将其写入 100 次)。
  • 查看,例如,谷歌搜索“ssd wear leveling”的结果,例如searchsolidstatestorage.techtarget.com/definition/wear-levelingen.wikipedia.org/wiki/Wear_leveling
  • 有没有办法在嵌入式linux系统关机之前找到它。有没有办法在电源故障或系统关闭之前保存。请给我一个例子。
  • SIGPWR 信号?否则,不确定。

标签: c linux linux-kernel embedded embedded-linux


【解决方案1】:

它可能取决于计算机、文件系统、挂载选项、内核(和版本)。

也许(实际上很可能)您的文件位于 page cachewrite(2) 中——它通常不会每次都更新闪存。

您可以使用普通文件(例如数据库,或使用sqlite)或编写自己的数据守护程序来避免这种情况。如果您需要将其保留在文件中,也许可以考虑编写自己的 FUSE

如果没有实际代码和您问题中的更多详细信息,我们将无法提供更多帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    • 2015-07-05
    • 2020-06-18
    • 2022-12-27
    相关资源
    最近更新 更多