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

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

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

我不明白为什么清理磁盘空间可以加快计算机速度。是吗?为什么会这样?这与搜索可用空间来保存东西有关吗?还是与移动东西以腾出足够长的连续空间来保存东西有关?我应该在硬盘上留出多少空闲空间?

答案1

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

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

它不会,至少不会单独发生。这是一个非常普遍的误解。它之所以是一个普遍的误解,是因为填满硬盘通常与其他传统上发生的事情同时发生可以降低计算机速度。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 预取程序除了固态硬盘), ETC。


最后还有一件事值得一提。这里的另一个答案提到 SATA 的半双工模式会阻止同时读取和写入。虽然确实如此,但这过于简单化,并且与此处讨论的性能问题基本无关。简单来说,这意味着数据不能双向传输在线同时。但是,SATA 具有相当复杂的规范涉及微小的最大块大小(我认为每个块大约 8kB)、读写操作队列等,并且不排除在读取过程中写入缓冲区、交错操作等。

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


“减速”是一个宽泛的术语。在这里我用它来指代 I/O 密集型事物(例如,如果您的计算机正在处理数字,硬盘驱动器的内容不会受到影响),或 CPU 密集型事物,并且与 CPU 使用率高的间接相关事物竞争(例如,防病毒软件扫描大量文件)。

†† SSD碎片化会造成顺序访问速度通常比随机访问更快,尽管 SSD 不会面临与机械设备相同的限制(即便如此,由于磨损均衡等原因,没有碎片化也不能保证顺序访问,正如 James Snell 在评论中指出的那样)。然而,在几乎所有的一般使用场景中,这都不是问题。对于加载应用程序、启动计算机等操作,SSD 上因碎片化而产生的性能差异通常可以忽略不计。

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

答案2

此外Nathanial Meek 的解释对于 HDD 来说,SSD 的情况则有所不同。

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

与可以覆盖现有数据的传统 HDD 不同,SSD 需要完全空闲的空间才能写入数据。这是通过 Trim 和 Garbage Collection 功能完成的,这两个功能会清除标记为已删除的数据。Garbage Collection 与 SSD 上的一定可用空间结合使用效果最佳。通常建议使用 15% 到 25% 的可用空间。

如果垃圾收集无法及时完成其工作,则每次写入操作之前都会清理要写入数据的空间。这会使每次写入操作的时间加倍,并降低整体性能。

这是一篇优秀的文章解释了 Trim 和垃圾收集的功能

答案3

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

考虑到这一点,有两种影响会导致磁盘性能随着磁盘填满而下降:寻道时间旋转速度

寻道时间

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

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

释放磁盘空间可以改善寻道时间,因为这样不仅可以让碎片整理服务更快地清理碎片文件,还可以将文件移到磁盘外部,从而缩短平均寻道时间。

旋转速度

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

几乎为空的驱动器会将大部分时间花在访问靠近较快的光盘外缘的位上。几乎已满的驱动器会将更多时间花在访问靠近较慢的光盘内缘的位上。

再次,清空磁盘空间可以让碎片整理服务将数据移到磁盘外部,从而提高计算机的运行速度,因为磁盘外部的读写速度更快。

有时光盘实际上会移动得太快,读头跟不上,这种影响会减小,因为外边缘附近的扇区会交错……乱序写入,以便读头能够跟上。但总体而言,这是正确的。

这两种影响都归结于磁盘控制器首先将数据分组到磁盘较快的部分,而只有在必要时才会使用磁盘较慢的部分。随着磁盘填满,磁盘较慢的部分会花费越来越多的时间。

这种影响也适用于新硬盘。在其他条件相同的情况下,新的 1TB 硬盘比新的 200GB 硬盘速度更快,因为 1TB 硬盘存储的位更紧密,不会很快填满内轨。但是,试图以此来指导购买决策几乎没有帮助,因为制造商可能会使用多个盘片来达到 1TB 大小,使用较小的盘片将 1TB 系统限制为 200GB,使用软件/磁盘控制器限制将 1TB 盘片限制为仅 200GB 空间,或者将 1TB 硬盘中部分完成/有缺陷的盘片(其中有很多坏扇区)作为 200GB 硬盘出售。

其他因素

值得注意的是,上述影响相当小。计算机硬件工程师花费大量时间研究如何尽量减少这些问题,硬盘缓冲区、Superfetch 缓存和其他系统等都致力于尽量减少问题。健康系统有足够的可用空间,你甚至可能注意不到。此外,SSD 具有完全不同的性能特征。然而,影响确实存在,当驱动器填满时,计算机确实会变慢。在不良系统中的磁盘空间非常低,这些影响可能会造成磁盘抖动的情况,磁盘会不断地在碎片数据中来回寻找,而释放磁盘空间可以解决这个问题,从而带来更显著、更明显的改进。

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

最后,磁盘性能巨大的如今,磁盘是衡量 PC 整体性能的指标……甚至比 CPU 速度更重要。磁盘吞吐量即使出现小幅下降,也往往意味着 PC 性能出现实际的总体下降。硬盘性能并没有真正跟上 CPU 和内存改进的步伐,因此尤其如此;7200 RPM 磁盘十多年来一直是桌面标准。与以往任何时候相比,传统的旋转磁盘都是计算机的瓶颈。

答案4

如果计算机的硬盘空间非常小,并且长时间处于旋转机械硬盘状态,那么随着文件碎片的增加,计算机的运行速度通常会变慢。碎片增加意味着读取速度变慢 –非常在极端情况下会很慢。

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

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

相关内容