由于tmpfs只存在于内存中,它能像内存一样碎片化吗? 是否有自动碎片整理内存的机制,从而增加(甚至略微)存储文件的访问速度?
据我所知,没有办法对tmpfs文件系统进行碎片整理(至less不是在FreeBSD,Linux或Solaris上)。
根据底层实现,tmpfs可能变成碎片(例如,一些tmpfs实现不在RAM中 – 它们咀嚼交换空间:根据分配algorithm,分配的交换空间可能被分割并显示明显的速度下降)。
内存中的tmpfs也可能成为“碎片”,但这不是一个实际的问题:内存“足够快”,你会浪费更多的CPU时间来“碎片化”它比你会失去访问非连续RAM部分(不要担心旋转延迟,MMU的额外开销或相当于访问连续的一系列页面的非连续的RAM部分的开销足够小,以至于您可能忽略它。
坦率地说,如果你关心这个性能级别,你不想使用tmpfs,因为VFS层使内存看起来像一个文件系统的开销比任何你可能遇到的内存碎片问题要严重得多上下文切换等)。
所有的tmpfs实现都是由虚拟内存支持的,而不是物理的。 这个问题没有什么意义,因为连续的虚拟内存区域在物理层面上不太可能是连续的,甚至根据需要甚至不可能在内存中出现。