交换文件碎片:事实还是虚构?

交换文件碎片:事实还是虚构?

这是关于 Windows 的,但我确信它也适用于其他操作系统。

我听人说过,如果你想要更好的性能,就应该避免交换文件碎片。为此,你可以手动为交换文件指定一个固定大小,甚至可以将其移动到专用分区/磁盘。

这真的会带来任何性能优势吗?毕竟,交换文件无论如何都是以随机方式访问的,再多一点随机性又有什么意义呢?如果您正在考虑为交换文件使用单独的磁盘,那么您最好将钱投资于更多 RAM。当然,除非您碰巧得到了一个免费的磁盘。

那么,解决交换文件碎片问题是否有意义呢?

答案1

页面文件碎片只会在极端情况下成为重要因素。当连续读取大型文件时,碎片是一个因素,但页面文件几乎不会发生这种情况。页面文件访问以不超过 64K 的小块为单位,并且通常会与其他文件的访问混合在一起。页面文件是否碎片化并不重要,无论如何磁盘头都会移动。

除非页面文件性能是一个限制因素,否则这些都不重要。通常情况并非如此。大多数分页根本不使用页面文件。根据设计,页面文件用于存储不经常访问的数据。在大多数情况下,页面文件的访问频率不够高,因此其性能并不重要。

在大多数情况下,这只是无谓的争论。解决问题的错误尝试往往会导致严重问题。

答案2

这在 Linux 系统上肯定不是问题,因为交换总是一个具有用于交换文件的特殊文件系统的分区。这显然在 Windows 上可能是一个问题,而且我认为在 Mac OS X 上也可能是一个问题,因为它似乎使用文件进行交换。

老实说,我没有任何确凿的事实来支持我的观点,但是,我有传闻证据表明,最好不要改变交换大小,因为交换大小的变化似乎确实会减慢窗口的速度。您想要交换的磁盘大小总是小于当前被认为是平均磁盘的大小,因此,旧磁盘通常足以用于交换。因此,当您升级到最新的 1TB 磁盘时,旧磁盘可能是一个很好的用途。

当我运行 Windows 计算机时,我总是创建一个交换分区或使用单独的磁盘,然后告诉 Windows 仅使用该磁盘进行交换,并将其设置为不更改大小。我会将其设置为使用 2.5 倍的 RAM 作为最小值和最大值,然后保持该值不变。我无法确定它是否真的有帮助,但它肯定没有任何负面影响。

答案3

简而言之:是的

交换文件碎片是一个真正的问题,硬盘上的可用空间越少,就越有可能出现这种情况,其他文件也会出现这种情况,比如注册表数据库文件。微软在让 Windows 控制交换文件大小的建议中非常明确,手动操作被认为是不好的,只应在极少数情况下进行。这个问题有一个简单的解决方案,来自系统内部称为页面碎片整理它是一个免费下载软件,可以在系统重启时对锁定的文件(包括您的页面文件)进行碎片整理。它还会显示这些文件的当前状态。

还要注意,文件碎片化只是旋转硬盘的问题,我的理解是,如果文件在 SSD 上碎片化,则不是性能问题(SSD 上的碎片整理程序只会缩短其使用寿命)。实际性能在很大程度上取决于碎片化的严重程度和系统硬件(硬盘上的寻道时间和系统访问页面文件的频率),但考虑到消除此问题有多么容易,这应该不是什么问题。

链接:微软在页面文件上 Mark 谈论虚拟内存( 页面文件 )

答案4

您必须区分内部碎片和外部碎片:

外部碎片在进行交换(即将整个进程放到磁盘上)时发生,因为每个进程的大小不同。由于 Linux 和 Windows 都不再真正进行交换,而是进行分页(将固定大小的内存帧放到磁盘上),因此实际上不存在外部碎片的问题。

进行分页时会产生内部碎片,因为每个框架的大小相等,但并非每个页面都已满,有些页面未达到其极限(=内部碎片)。使用分页时,此问题始终存在。

但我认为您指的是文件系统中发生内部碎片(文件系统的块未得到充分利用),这些碎片会占用页框。可以通过将文件系统上的块大小选择为等于页框大小来避免这种情况。

相关内容