mke2fs 消耗超过 100MB 或 RAM 是正常的吗?

mke2fs 消耗超过 100MB 或 RAM 是正常的吗?

当我运行mke2fs -t [ext2|ext3|ext4] /dev/sda1程序时,它消耗了超过 100 MB 的内存,这对于嵌入式系统来说可能是一个很大的问题。这是正常现象吗?有没有什么方法可以降低内存消耗?

附加信息:

我使用的是 e2fsprogs 1.41.14。尝试在 1.42.11 上运行它,-D结果与选项类似。这意味着它不是 I/O 缓存污染问题。

编辑:大多数内存是在创建日志和超级块信息时消耗的。程序完成后会释放内存,因此可以排除内存泄漏。

另一项编辑:我有一个想法,但不确定它有多准确。我们在评论中与 Michael 确认(我非常感谢您的帮助和花时间解决这个问题),我可能无法修复程序本身的任何问题,但可能有一些缓存正在将大量信息写入内存。也许有某种方法可以找出程序使用哪些缓存以及是否可以禁用它们?

答案1

我联系了 e2fsprogs 的作者并询问了这个问题。咨询后,我从 github 升级到了最新版本 (1.43)。在正常模式下,没有太多变化。内存使用率略有改善(90MB 而不是 100MB),但 -D 选项(使用 direct_io 忽略缓冲区/缓存)在使进程时间延长两倍或三倍的同时,也大大减少了内存(约 8-10MB)。值得注意的是,我对 1.42.x 进行了类似的实验,但没有得到类似的结果。

我可以接受这些结果。但它们应该被视为部分胜利,因为程序在使用缓冲区/缓存时仍然会占用大量内存。

如果有人想了解有关该主题的更多信息,我愿意进行讨论。

我有一个解决这个问题的想法,如果我证明这个想法可行,我会在这里发布结果

相关内容