tmpfs 会出现碎片吗?

tmpfs 会出现碎片吗?

由于临时文件只存在于内存中,它会像内存一样产生碎片吗?是否有机制可以自动对内存进行碎片整理,从而提高(哪怕是一点点)存储文件的访问速度?

答案1

据我所知,没有办法对 tmpfs 文件系统进行碎片整理(至少在 FreeBSD、Linux 或 Solaris 上没有)。

根据底层实现,tmpfs 可能会变得碎片化(例如,一些 tmpfs 实现不在 RAM 中 - 它们会占用交换空间:根据分配算法,分配的交换空间可能会变得碎片化,并会出现明显的速度下降)。

RAM 中的 tmpfs 也有可能变得“碎片化”,但这不是一个实际问题:RAM 足够“快”,您在尝试“碎片整理”它时会浪费更多的 CPU 时间,而不是访问不连续的 RAM 部分(无需担心旋转延迟,并且 MMU 或等效设备访问不连续的 RAM 部分与访问连续的一系列页面相比的额外开销足够小,您可能可以忽略它。

坦白说,如果你担心这种级别的性能,你无论如何都不想使用 tmpfs,因为 VFS 层使 RAM 看起来像文件系统的开销是许多数量级比您可能遇到的任何内存碎片问题(上下文切换等)更糟糕。

答案2

所有 tmpfs 实现都由虚拟内存而非物理内存支持。因此,这个问题没有多大意义,因为虚拟内存的连续区域在物理层面上不太可能是连续的,甚至可能不存在于 RAM 中,具体取决于需求。

相关内容