为什么清空磁盘空间可以加快计算机速度?

Rem*_*i.b 195 memory performance disk-space

我一直在看一堆视频,现在对计算机的工作原理有了更好的了解。我更了解 RAM 是什么、易失性和非易失性内存以及交换过程。我也理解为什么增加 RAM 会加快计算机的速度。

我不明白为什么清理磁盘空间会加速计算机。可以?为什么呢?它与搜索可用空间以保存东西有关吗?或者通过移动东西来创造足够长的连续空间来保存一些东西?我应该在硬盘上留下多少空闲空间?

Jas*_*n C 316

在这里,我偶然写了一本书。先喝杯咖啡。

为什么清空磁盘空间可以加快计算机速度?

它没有,至少它本身没有。这是一个非常普遍的神话。这是一个普遍存在的误解的原因是因为填充硬盘驱动器通常与其他传统上降低计算机速度的事情同时发生。SSD 性能确实会随着驱动器填满降低,但这是一个相对较新的问题,是 SSD 独有的,对于普通用户来说并不是很明显。通常,低可用磁盘空间只是一个红鲱鱼

例如,像这样的事情:

  • 文件碎片。文件碎片一个问题††,但可用空间不足,虽然绝对是许多促成因素之一,并不是造成它的唯一原因。这里的一些关键点:

    • 文件的几率被割裂的相关的剩余可用空间的驱动器上的金额。它们与驱动器上最大的连续可用空间块的大小(例如,可用空间的“孔”)的大小有关,可用空间量恰好在 上设置了上限。它们还与文件系统如何处理文件分配有关(更多内容见下文)。考虑:一个驱动器 95% 满,所有可用空间都在一个连续的块中,新文件碎片化的可能性为 0% †††(并且附加文件碎片化的可能性与可用空间无关)。5% 已满但数据均匀分布在驱动器上的驱动器极有可能出现碎片。

    • 请记住,文件碎片只会在访问碎片文件时影响性能考虑一下:您有一个很好的碎片整理驱动器,其中仍然有很多空闲的“漏洞”。一个常见的场景。一切都在顺利进行。但是,最终,您会遇到没有更多可用空间的大块。你下载了一部巨大的电影,文件最终被严重碎片化。这不会减慢您的计算机的速度。您的所有应用程序文件以及以前很好的文件不会突然变得支离破碎。这可能会让电影加载需要更长的时间(尽管典型的电影比特率与硬盘读取率相比非常低,很可能不会引起注意),并且可能会在加载电影时影响 I/O 限制性能,但除此之外,没有什么改变。

    • 虽然文件碎片肯定是一个问题,但通常情况下,操作系统和硬件级别的缓冲和缓存可以减轻这种影响。延迟写入、读、Windows 中的预取器等策略都有助于减少碎片的影响。在碎片变得严重之前,您通常实际上不会受到重大影响(我什至敢说,只要您的交换文件没有碎片,您可能永远不会注意到)。

  • 搜索索引是另一个例子。假设您打开了自动索引,并且操作系统无法正常处理此问题。随着您将越来越多的可索引内容(文档等)保存到计算机中,索引可能需要越来越长的时间,并且可能会开始影响计算机运行时的感知速度,包括 I/O 和 CPU 使用率. 这与可用空间无关,它与您拥有的可索引内容的数量有关。但是,可用空间不足与存储更多内容密切相关,因此会产生错误的联系。

  • 防毒软件。类似于搜索索引示例。假设您设置了防病毒软件来对驱动器进行后台扫描。随着您拥有越来越多的可扫描内容,搜索会占用更多 I/O 和 CPU 资源,这可能会干扰您的工作。同样,这与您拥有的可扫描内容的数量有关。更多的内容通常等于更少的可用空间,但可用空间不足并不是原因。

  • 已安装的软件。假设您安装了许多软件,这些软件会在您的计算机启动时加载,从而减慢启动时间。之所以会变慢,是因为正在加载大量软件。但是,安装的软件会占用硬盘空间。因此,在发生这种情况的同时,硬盘驱动器可用空间会减少,并且很容易再次进行错误连接。

  • 沿着这些路线的许多其他示例,当放在一起时,似乎将缺乏可用空间与较低的性能密切相关。

以上说明了另一个原因,这是一个如此普遍的神话:虽然可用空间不足不是速度变慢、卸载各种应用程序、删除索引或扫描内容等的直接原因,但有时(但并非总是如此;不在本文范围内)答案)由于与剩余可用空间量无关的原因再次提高了性能。但这也自然释放了硬盘空间。因此,再次,可以在“更多可用空间”和“更快的计算机”之间建立明显的(但错误的)联系。

考虑:如果您的机器由于安装了大量软件等而运行缓慢,并且您将硬盘驱动器准确地克隆到更大的硬盘驱动器,然后扩展您的分区以获得更多可用空间,则机器不会神奇地加速向上。相同的软件加载,相同的文件仍然以相同的方式碎片化,相同的搜索索引器仍然运行,尽管有更多的可用空间,但没有任何变化。

它是否与搜索存储空间的内存空间有关?

不,不是的。这里有两件非常重要的事情值得注意:

  1. 您的硬盘驱动器不会四处寻找放置东西的地方。你的硬盘很笨。没什么。这是一大块寻址存储,盲目地将东西放在操作系统告诉它的地方,并读取它所要求的任何内容。现代驱动器具有复杂的缓存和缓冲机制,旨在根据我们随着时间的推移获得的经验预测操作系统将要求什么(有些驱动器甚至知道它们上的文件系统),但本质上,想想您的驱动器只是一块笨拙的存储设备,偶尔会有额外的性能功能。

  2. 您的操作系统也不会搜索放置东西的地方。没有“搜索”。解决这个问题已经付出了很多努力,因为它对文件系统性能至关重要。数据在驱动器上的实际组织方式由文件系统决定. 例如,FAT32(旧的 DOS 和 Windows PC)、NTFS(后来的 Windows)、HFS+ (Mac)、ext4(一些 Linux)等等。甚至“文件”和“目录”的概念也只是典型文件系统的产物——硬盘驱动器不知道被称为“文件”的神秘野兽。详细信息超出了本答案的范围。但本质上,所有常见的文件系统都有跟踪驱动器上可用空间位置的方法,因此在正常情况下(即健康状况良好的文件系统)搜索可用空间是不必要的。例子:

    • NTFS有一个主文件表,其中包括特殊文件$Bitmap等,以及大量描述驱动器的元数据。从本质上讲,它会跟踪下一个空闲块的位置,以便可以将新文件直接写入空闲块,而不必每次都扫描驱动器。

    • 另一个例子,ext4有所谓的“位图分配器”,这是对 ext2 和 ext3 的改进,基本上可以帮助它直接确定空闲块的位置,而不是扫描空闲块列表。Ext4 还支持“延迟分配”,即在将数据写入驱动器之前由操作系统在 RAM 中缓冲数据,以便更好地决定将数据放在哪里以减少碎片。

    • 许多其他例子。

或者通过移动东西来弥补足够长的连续空间来保存东西?

不。这不会发生,至少在我知道的任何文件系统中都不会发生。文件最终会碎片化。

“移动事物以构成足够长的连续空间以保存事物”的过程称为碎片整理。写入文件时不会发生这种情况。当您运行磁盘碎片整理程序时会发生这种情况。至少在较新的 Windows 上,这会按计划自动发生,但绝不会通过写入文件来触发。

能够避免像这样移动东西是文件系统性能的关键,这也是碎片发生的原因以及碎片整理作为单独步骤存在的原因。

我应该在硬盘上留下多少空闲空间?

这是一个比较难回答的问题,而这个答案已经变成了一本小书。

经验法则:

  • 对于所有类型的驱动器:

    • 最重要的是,留出足够的可用空间让您有效地使用您的计算机。如果您的工作空间不足,则需要更大的驱动器。
    • 许多磁盘碎片整理工具需要最少的可用空间(我认为 Windows 需要 15% 的最坏情况)才能工作。它们使用这些可用空间来临时保存碎片文件,因为其他东西被重新排列。
    • 为其他操作系统功能留出空间。例如,如果您的机器没有很多物理 RAM,并且您使用动态大小的页面文件启用了虚拟内存,则您需要为页面文件的最大大小留出足够的空间。或者,如果您有一台进入休眠模式的笔记本电脑,您将需要足够的可用空间来存放休眠状态文件。像这样的东西。
  • SSD 特定:

    • 为了获得最佳可靠性(以及在较小程度上,性能)SSD 需要一些可用空间,在不涉及太多细节的情况下,它们用于在驱动器周围传播数据以避免不断写入同一位置(这会磨损它们)。这种留下可用空间的概念称为过度配置。这很重要,但在许多 SSD 中,已经存在强制性的超额配置空间。也就是说,驱动器通常比它们向操作系统报告的多几十 GB。低端驱动器通常需要您手动留下未分区空间,但对于具有强制 OP 的驱动器,您不需要留下任何可用空间。这里需要注意的重要一点是过度配置的空间通常只取自未分区的空间。因此,如果您的分区占用了您的整个驱动器并在其上留下了一些可用空间,这并不总是重要的。很多时候,手动过度配置要求您将分区缩小到小于驱动器的大小。有关详细信息,请查看您的 SSD 用户手册。TRIM 和垃圾收集等也有影响,但这些不在本答案的范围内。

就我个人而言,当我剩余大约 20-25% 的可用空间时,我通常会使用更大的驱动器。这与性能无关,只是当我到达那个点时,我预计我可能很快就会耗尽数据空间,是时候获得更大的驱动器了。

比查看可用空间更重要的是确保在适当的地方启用计划的碎片整理(而不是在 SSD 上),这样您就永远不会达到足以影响您的程度。同样重要的是避免错误的调整并让您的操作系统做它的事情,例如不要禁用 Windows 预取器SSD 除外)等。


最后一件事值得一提。这里的其他答案之一提到 SATA 的半双工模式可防止同时读取和写入。虽然确实如此,但这被大大简化了,并且与此处讨论的性能问题大多无关。这意味着,简单的说,是数据不能在两个方向上转移在电线上同时。然而,SATA 有一个相当复杂的规范,涉及极小的最大块大小(我认为,线路上每个块大约 8kB)、读写操作队列等,并且不排除在读取过程中发生的对缓冲区的写入,交错操作等。

发生的任何阻塞都是由于竞争物理资源,通常通过大量缓存来缓解。SATA 的双工模式在这里几乎完全无关。


“慢下来”是一个广义的术语。在这里,我用它来指代受 I/O 限制的事物(例如,如果您的计算机坐在那里处理数字,则硬盘驱动器的内容没有影响),或受 CPU 限制并与具有切线相关的事物竞争的事物高 CPU 使用率(例如防病毒软件扫描大量文件)。

††固态硬盘由碎片在顺序访问速度的影响通常比随机访问更快,尽管没有面临同样的限制,作为机械设备的SSD(即使在当时,没有碎片不保证顺序访问,由于损耗均衡,等等。 ,正如 James Snell 在评论中指出的那样)。然而,在几乎所有一般使用场景中,这都不是问题。由于 SSD 上的碎片导致的性能差异对于加载应用程序、启动计算机等通常可以忽略不计。

†††假设一个健全的文件系统不会故意将文件碎片化。

  • 非常全面的答案,谢谢。也感谢提醒喝咖啡,非常感谢。 (2认同)

小智 22

除了Nathanial Meek对 HDD的解释外,SSD 还存在不同的情况。

SSD 对分散的数据不敏感,因为对 SSD 上任何地方的访问时间都是相同的。典型的 SSD 访问时间为 0.1 毫秒,而典型的 HDD 访问时间为 10 到 15 毫秒。但是,它对已写入 SSD 的数据很敏感

与可以覆盖现有数据的传统 HDD 不同,SSD 需要完全空白的空间来写入数据。这是由称为 Trim 和 Garbage Collection 的函数完成的,它们清除标记为已删除的数据。垃圾收集与 SSD 上的一定数量的可用空间结合使用时效果最佳。通常建议使用 15% 到 25% 的可用空间。

如果垃圾收集不能及时完成它的工作,那么每个写操作之前都会清理应该写入数据的空间。这使每次写入操作的时间加倍并降低了整体性能。

这是一篇很好的文章,解释了修剪和垃圾收集的功能


Joe*_*orn 12

传统硬盘内部的某个地方是一个旋转的金属盘,其中实际编码了各个位和字节。当数据添加到盘片时,磁盘控制器首先将其存储在磁盘的外部。随着新数据的添加,空间最后被用于移向磁盘内部。

考虑到这一点,有两种影响会导致磁盘性能随着磁盘填满而降低:Seek TimesRotational Velocity

寻找时间

要访问数据,传统硬盘必须将读/写磁头物理移动到正确的位置。这需要时间,称为“寻道时间”。制造商公布了他们磁盘的寻道时间,通常只有几毫秒。这听起来可能不多,但对于计算机来说,这是永恒的。如果您必须读取或写入许多不同的磁盘位置才能完成一项任务(这很常见),那么这些寻道时间加起来可能会导致明显的延迟或延迟。

几乎为空的驱动器将在同一位置或附近保存大部分数据,通常位于读/写头静止位置附近的外边缘。这减少了跨磁盘搜索的需要,大大减少了搜索所花费的时间。几乎已满的驱动器不仅需要更频繁地在磁盘上寻找并进行更大/更长的寻道运动,而且可能无法将相关数据保存在同一扇区中,从而进一步增加磁盘寻道。这称为碎片化数据。

释放磁盘空间可以通过允许碎片整理服务不仅更快地清理碎片文件,而且将文件移到磁盘外部来缩短寻道时间,从而缩短平均寻道时间。

旋转速度

硬盘驱动器以固定速度旋转(您的计算机通常为 5400 rpm 或 7200 rpm,而服务器上通常为 10000 rpm 甚至 15000 rpm)。它还需要驱动器上的固定空间量(或多或少)来存储单个位。对于以固定转速旋转的磁盘,磁盘外部的线性速率将比磁盘内部更快。这意味着靠近磁盘外边缘的位以比靠近磁盘中心的位更快的速度通过读头,因此读/写头可以比磁盘外边缘附近的位更快地读取或写入位。内。

几乎是空的驱动器将花费大部分时间访问靠近磁盘较快外边缘的位。几乎已满的驱动器将花费更多时间访问较慢的磁盘内部附近的位。

同样,清空磁盘空间可以通过允许碎片整理服务将数据移到磁盘外部来使计算机更快,在那里读取和写入速度更快。

有时,对于读取磁头来说,磁盘实际上移动得太快了,这种影响会降低,因为外边缘附近的扇区会交错……乱写以便读取磁头可以跟上。但总的来说,这是成立的。

这两种影响都归结为磁盘控制器首先将磁盘中较快部分中的数据分组在一起,直到必须使用时才使用磁盘的较慢部分。随着磁盘填满,越来越多的时间花在磁盘较慢的部分。

这些效果也适用于新驱动器。在其他条件相同的情况下,新的 1TB 驱动器比新的 200GB 驱动器快,因为 1TB 将位存储得更紧密,并且不会那么快地填充到内部轨道。然而,尝试使用它来通知购买决策很少有帮助,因为制造商可能使用多个盘片来达到 1TB 大小,使用较小的盘片将 1TB 系统限制为 200GB,软件/磁盘控制器限制将 1TB 盘片限制为仅 200GB空间,或将带有部分完整/有缺陷的盘片的驱动器从具有大量坏扇区的 1TB 驱动器作为 200GB 驱动器出售。

其他因素

这里值得注意的是,上述影响相当小。计算机硬件工程师花费大量时间研究如何最大程度地减少这些问题,而诸如硬盘缓冲区、Superfetch 缓存和其他系统之类的东西都可以最大限度地减少问题。在具有大量可用空间的健康系统上,您甚至可能不会注意到。此外,SSD 具有完全不同的性能特征。但是,这种影响确实存在,并且当驱动器装满时,计算机确实会变慢。在不健康的系统上,磁盘空间非常低,这些影响会造成磁盘抖动情况,磁盘不断地在碎片数据中来回寻找,释放磁盘空间可以解决这个问题,从而带来更显着和显着的改进.

此外,向磁盘添加数据意味着某些其他操作,例如索引或 AV 扫描和碎片整理过程只是在后台执行更多工作,即使它以与以前相同或接近相同的速度进行。

最后,磁盘性能是当今PC 整体性能的重要指标……比 CPU 速度更大的指标。即使是磁盘吞吐量的小幅下降,通常也等同于真实感知的 PC 性能整体下降。尤其如此,因为硬盘性能并没有真正跟上 CPU 和内存的改进;十多年来,7200 RPM 磁盘一直是台式机的标准。传统的旋转磁盘比以往任何时候都更成为您计算机的瓶颈。

  • @JasonC 这些观点中的每一点单独来看都是正确的,但作为整个系统的一部分可能会导致真正的减速。一个例子是这样的声明:“如果你的数据已经遍布整个驱动器,释放磁盘空间不会减少寻道时间。”我不能否认这一点,但我可以指出碎片整理服务现在可以移动它驱动器前面的数据,现在这些东西**将**改善寻道时间。您评论中的其他要点也有类似的计数器:磁盘空间不足不会增加对组织良好的数据的搜索,但它确实降低了数据保持井井有条的可能性。 (2认同)

scu*_*ffe 6

所有其他答案在技术上都是正确的 - 但是我总是发现这个简单的例子解释得最好。

如果您有足够的空间,整理东西真的很容易……但如果您没有空间,则很难……计算机也需要空间

这个经典的“ 15 拼图”很棘手/耗时,因为您只有 1 个可用的方格来将图块打乱以按正确的 1-15 顺序排列。

困难 15 拼图

但是,如果空间更大,您可以在 10 秒内解决这个难题。

简单的 15 拼图

对于曾经玩过这个谜题的人来说……理解这个类比似乎很自然。;-)

  • 但这并不类似于任何文件系统行为。它*有点*类似于碎片整理的一般过程,我想,虽然碎片整理,相对于这个谜题类比,让你从板上删除数字,并在你解决问题时将它们重新放置在你想要的任何地方。 (2认同)
  • 除了上面 Jason 的评论之外,我想指出一个显而易见的问题:这个答案与*排序*(碎片整理)有关,但没有解释为什么*访问*一个特定的随机磁贴(比如“3”磁贴)第二种情况比第一种情况更快。 (2认同)

Rom*_*nSt 5

在旋转的机械硬盘驱动器上,磁盘空间很小的计算机在很长一段时间内通常会随着文件碎片的增加而变慢。碎片增加意味着读取速度变慢——在极端情况下非常慢。

一旦计算机处于这种状态,释放磁盘空间实际上并不能解决问题。您还需要对磁盘进行碎片整理。在计算机处于这种状态之前,释放空间不会加快速度;它只会减少碎片化成为问题的可能性。

这仅适用于带有旋转机械硬盘驱动器的计算机,因为碎片对 SSD 的读取速度的影响可以忽略不计。