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


191

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

我不明白为什么清理磁盘空间可以加快计算机的速度。可以?为什么呢 它与寻找可用空间来保存东西有关吗?还是通过移动物体来留出足够长的连续空间来保存东西?我应该在硬盘上留出多少可用空间?


37
它并不能真正加快PC的速度,它只能减少文件碎片的机会,从而降低HDD的速度。这是每个人都在重复的最伟大的PC神话之一。要在PC上查找bootleneck,请使用xperf / WPA对其进行跟踪。
magicandre1981

9
快看吧speeds up the experience of using a PC
edthethird

4
@ magicandre1981:有一个很小的真理。每个文件夹中的内容越多,文件遍历的速度就越慢,这会影响使用文件路径的所有内容,即所有内容。但这很小
Mooing Duck 2015年

4
@MooingDuck为true时,这与文件夹中的文件数有关,与文件的大小或驱动器上剩余的空间量无关。这种影响与剩余磁盘空间无关。该效果在范围上也仅限于文件夹本身,它不会“减慢”整个计算机的速度。某些文件系统(例如ext3 / 4)使用哈希目录树来快速进行查找(包括子文件夹访问),从而进一步限制了效果的范围,例如仅在列出目录内容时。
杰森C

4
您到底看了哪些视频?
Loko 2015年

Answers:


313

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

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

它不是,至少不是靠它自己。这是一个非常普遍的神话。它之所以是一个常见的误解是因为填满你的硬盘驱动器经常发生在同一时间,传统上其他的东西可以慢下来您的计算机。随着驱动器的装满,SSD性能的确会下降,但这是一个相对较新的问题,是SSD独有的,并且对于休闲用户而言并不十分明显。通常,可用磁盘空间不足只是一个红鲱鱼

例如,诸如:

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

    • 文件被分割了的机会都没有涉及到的剩余可用空间的驱动器上的金额。它们与驱动器上最大的连续自由空间块的大小(例如,自由空间的“孔”)有关,自由空间的大小恰好使上限处于上限。它们还与文件系统处理文件分配的方式有关(请参见下文)。请考虑:单个连续块中所有可用空间都占满95%的驱动器有0%的机会分割一个新文件†††(而对附加文件进行分割的机会独立于可用空间)。5%的驱动器已满,但数据均匀分布在该驱动器上的机会很高。

    • 请记住,文件碎片只会在访问碎片文件时影响性能考虑:您有一个不错的,经过碎片整理的驱动器,其中仍然有许多空闲的“孔”。常见情况。一切运行顺利。最终,尽管如此,您到达的地步是不再有更多的可用自由空间。您下载了一部大电影,文件最终变得碎片化。这不会降低计算机的速度。您所有的应用程序文件以及以前可以使用的文件都不会突然变得零散。这可能使电影加载需要更长的时间(尽管与硬盘驱动器读取速率相比,典型的电影比特率是如此之低,以至于很可能不会引起注意),并且它可能会在电影加载时影响I / O限制的性能,但除此之外,没有什么变化。

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

  • 搜索索引是另一个示例。假设您启用了自动索引编制,并且操作系统无法正常处理此问题。随着您将越来越多的可索引内容(例如文档等)保存到计算机中,建立索引的时间可能越来越长,并且可能开始影响计算机在运行时的I / O和CPU使用率。这与可用空间无关,与您拥有的可索引内容的数量有关。但是,用尽可用空间与存储更多内容密切相关,因此绘制了错误的连接。

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

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

  • 沿着这些思路,还有许多其他例子,它们似乎将缺乏可用空间与性能降低紧密联系在一起。

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

考虑:如果由于大量安装的软件等原因使计算机运行缓慢,并且将硬盘驱动器精确地克隆到较大的硬盘驱动器,然后扩展分区以获取更多的可用空间,则该计算机将无法神奇地加速起来 相同的软件负载,相同的文件仍以相同的方式进行碎片处理,相同的搜索索引器仍在运行,尽管具有更多的可用空间,但没有任何变化。

它与寻找用于保存内容的内存空间有关吗?

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

  1. 您的硬盘驱动器不会四处寻找放置物品的地方。您的硬盘很笨。没什么。这是一个很大的寻址存储块,它会将内容盲目地放置在OS告诉它的地方,并读取要求它的内容。现代驱动器具有复杂的缓存和缓冲机制,旨在根据我们随着时间的推移获得的经验来预测操作系统的要求(某些驱动器甚至意识到其上的文件系统),但从本质上讲,您的驱动器只是一个笨拙的存储砖,偶尔还会有额外的性能表现。

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

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

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

    • 许多其他示例。

还是随处移动以构成足够长的连续空间来保存某些东西?

不。至少在我所知道的任何文件系统上都不会发生这种情况。文件只是碎片化而已。

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

能够避免这种移动是文件系统性能的关键,也是为什么发生碎片和碎片整理作为单独步骤存在的原因。

我应该在硬盘上留出多少可用空间?

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

经验法则:

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

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

    • 为了获得最佳可靠性(并在较小程度上提高性能),SSD需要一些可用空间,这些空间无需过多说明,而是用于在驱动器周围散布数据,从而避免不断写入同一位置(使它们磨损)。留下自由空间的概念称为“ 过度配置”。这很重要,但是在许多SSD中,已经存在强制性的超额配置空间。也就是说,驱动器通常比向操作系统报告的容量多几十个GB。低端驱动器通常要求您手动保留未分区的空间,但是对于具有强制OP的驱动器,则不需要保留任何可用空间。这里要注意的重要一点是过度供应的空间通常仅来自未分配的空间。因此,如果分区占用了整个驱动器,并且在其上留下了一些可用空间,那么这并不总是重要的。很多时候,手动超额配置要求您将分区缩小为小于驱动器的大小。有关详细信息,请检查您的SSD的用户手册。TRIM和垃圾回收等也有效果,但是这些超出了此答案的范围。

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

与观察可用空间相比,更重要的是确保在适当的地方(而不是在SSD上)启用计划的碎片整理,这样您就永远不会陷入严重影响您的境地。同样重要的是避免错误的调整,让操作系统来做事,例如,不要禁用Windows预取器SSD除外)等。


最后一件事值得一提。这里的另一个答案之一是SATA的半双工模式阻止同时进行读写。的确如此,但是这大大简化了,并且与此处讨论的性能问题无关。简而言之,这意味着不能同时在导线的两个方向传输数据。但是,SATA具有相当复杂的规范,涉及极小的最大块大小(我认为线路上每个块大约8kB),读写操作队列等,并且不排除在读取进行中,交错时发生对缓冲区的写操作操作等

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


“减速”是一个广义术语。在这里,我用它来指代受I / O约束的事物(例如,如果您的计算机坐在那儿,数字紧缩,硬盘的内容没有影响),或者受CPU约束并且与切向相关的事物竞争高CPU使用率(例如,防病毒软件扫描大量文件)。

††固态硬盘由碎片在顺序访问速度的影响通常比随机访问更快一些,但尽管没有面临的机械设备同样的限制(即使如此,缺乏碎裂并不能保证顺序访问,由于损耗均衡,固态硬盘等。 ,就像詹姆斯·斯内尔(James Snell)在评论中指出的那样。但是,实际上在每种通用情况下,这都是没有问题的。由于SSD碎片化而导致的性能差异通常对于加载应用程序,启动计算机等而言可以忽略不计。

†††假设有一个合理的文件系统,没有故意使文件碎片化。


非常全面的答案,谢谢。也感谢您提醒大家喝杯咖啡,非常感谢。
哈辛

22

除了Nathanial Meek对HDD 的解释之外,SSD还有另一种情况。

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

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

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

这是一篇很棒的文章,解释了裁切和垃圾回收的功能


请注意,SSD可以通过读取部分数据并用更多写入的内容写回来写入部分填充的单元,但是只有在不可避免的情况下,它才会这样做。当然,这也很慢,通常表明驱动器的碎片非常严重,需要花费很多时间才能使其再次快速写入。
蓬松的

那也将取决于控制器。而且由于变化太多,所以我不想详细介绍。
2015年

您所说的15-25%被称为“超额配置”。一些驱动器已经为此分配了强制性空间(例如1TB EVO 840已保留9%,并且没有报告为免费的操作系统),对于那些您不需要留下任何可用空间的驱动器。我认为,在某些情况下,也必须对超额分配的空间进行未分区,并且仅在文件系统上保留可用空间不会削减该空间,实际上需要保留未分配的空间。
杰森C

过度配置是另外一回事。这些是待命的nand,用于替换有缺陷的nand。需要15-25%的空间来释放块(页面)和磨损平衡。你可能想在这里阅读详细内容==> thessdreview.com/daily-news/latest-buzz/...
WHS

@whs不是,您链接到的文章并不暗示它是。多余的空间(请参阅本节中引用的资源,或Google)是空闲块的池,该池中的块用于垃圾回收/快速写入,损耗均衡和缺陷单元的替换。至于更换有缺陷的电池,它们都放在同一个池中。一旦充满了有缺陷的单元格,您就会开始看到一致的错误。另请参阅LSI本演示文稿中的幻灯片12 ;整个过程都值得一读,它直接解决了这个话题。
詹森·C

12

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

考虑到这一点,有两种影响磁盘性能的因素会导致磁盘性能下降:“ 寻道时间”和“ 旋转速度”

寻求时间

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

几乎是空的驱动器将大部分数据放在同一位置或附近,通常在读/写磁头其余位置附近的外边缘。这减少了在磁盘上查找的需求,从而大大减少了查找所花费的时间。几乎已满的驱动器不仅需要更频繁地搜索磁盘,而且搜索动作更大/更长,而且可能难以将相关数据保持在同一扇区中,从而进一步增加了磁盘搜索。这称为碎片数据。

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

旋转速度

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

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

同样,清空磁盘空间可以通过允许碎片整理服务将数据移到磁盘外部进行读取和写入,从而使计算机更快。

有时,光盘实际上对于读取头移动得太快,并且这种效果减弱了,因为外边缘附近的扇区将错开……写入混乱,以便读取头可以跟上。但是总的来说,这是成立的。

这两种影响都归结为磁盘控制器首先将数据分组在磁盘较快的部分中,而不是在需要时才使用磁盘的较慢部分。随着磁盘装满,磁盘的较慢部分将花费越来越多的时间。

效果也适用于新驱动器。在所有其他条件相同的情况下,新的1TB驱动器比新的200GB驱动器快,因为1TB会将位存储得更近,并且不会以最快的速度填充到内部磁道中。但是,尝试使用此信息来指导购买决策几乎没有帮助,因为制造商可能使用多个磁盘来达到1TB大小,较小的磁盘将1TB系统限制为200GB,软件/磁盘控制器的限制将1TB磁盘限制为仅200GB。空间,或出售部分已完成/损坏的盘片的驱动器(1TB驱动器中有很多坏扇区)作为200GB驱动器。

其他因素

在这里值得注意的是,上述影响很小。计算机硬件工程师花费大量时间来研究如何最大程度地减少这些问题,并且诸如硬盘驱动器缓冲区,Superfetch缓存和其他系统之类的工作都可以将问题最小化。在具有足够可用空间的健康系统上,您甚至都不会注意到。此外,SSD具有完全不同的性能特征。但是,这种影响确实存在,并且随着驱动器的装满,计算机确实会变慢。在磁盘空间非常低的不正常系统上,这些影响会造成磁盘颠簸的情况,磁盘不断在分散的数据之间来回搜索,释放磁盘空间可以解决此问题,从而带来更加显着和明显的改进。

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

最后,磁盘性能是当今 PC整体性能的重要指标……甚至比CPU速度还要重要。甚至磁盘吞吐量的小幅下降通常也将等同于PC性能的实际整体下降。尤其是这样,因为硬盘性能并未真正跟上CPU和内存改进的步伐。7200 RPM磁盘已经成为桌面标准已有十多年了。传统的旋转磁盘比以往任何时候都更是计算机的瓶颈。


1
寻道时间的增加不是可用空间不足的结果,而是数据组织的结果。如果您的数据已经遍及驱动器,则释放磁盘空间不会减少查找时间。同样,用尽磁盘空间不会突然增加已经组织良好的无关数据的查找时间。更重要的是,要非常谨慎地将其中任何一个与“速度较慢的计算机”相关联。例如,您不会仅仅因为浏览器的可执行文件没有碎片并且位于机械驱动器的外部而更快地浏览Web,即使在最坏的情况下,MP3仍然可以流畅播放。
Jason C

2
@JasonC这些观点中的每一个都是孤立的,但是作为整个系统的一部分,它们的总和可能会加起来。一个例子是这样的声明:“ Freeing disk space won't decrease seek times if your data is already all over the drive.“我不能对此表示怀疑,但是我可以指出,碎片整理服务现在可以将这些数据移至驱动器的前端,并且现在这些事情缩短寻道时间。您评论中的其他观点也有类似的说法:磁盘空间用尽不会增加对组织良好的数据的搜索,但确实减少了数据保持组织的可能性。
Joel Coehoorn

1
@JasonC但是,我确实根据您的评论在答案中添加了几行,以更直接地解决标题问题。
Joel Coehoorn

当然; 但我的主要观点是:1)减慢是什么后果别的,即使低自由空间可能是多种因素之一,2)你必须非常小心这个话题,这是那几人缠上之一很快 如果临时用户注意到他们的计算机运行缓慢,实际上,碎片(例如)是真正的原因是非常不寻常的。但是后来他们在互联网上阅读了很多东西,安装了ccleaner,50个磁盘碎片整理程序,对注册表进行了一些错误的调整等。聪明的人不需要我们的答案。
杰森C

此答案暗示着短击(人为限制HD大小以将数据保留在较快的外部区域中)以及它的一些潜在问题。我也喜欢它,因为它并不否认在大多数情况下,对于大多数用户来说,驱动器变得越来越满,变得越来越分散。值得注意的是,可用空间并不是真正的问题,但是在处理一般用户体验问题时,忽略一般用户体验毫无意义。
Smithers

6

所有其他答案在技术上都是正确的-但是,我始终发现,这个简单的示例可以最好地说明这一点。

如果有足够的空间,对事物进行排序确实很容易 ...但是如果没有空间,则很难进行排序... 计算机也需要空间

这个经典的“ 15个难题 ”非常棘手/非常耗时,因为您只有1个免费的方块可以随机排列瓷砖以使它们以正确的1-15顺序排列。

困难的15个难题

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

易15难题

对于曾经玩过这个难题的人……理解类比似乎是自然而然的。;-)


2
但是,这与任何文件系统行为都不相似。我猜它有点像一般的碎片整理过程,尽管相对于这个难题类比而言,碎片整理可以使您从板上删除数字,并在解决时将其重新放置在所需的任何位置。
杰森C

2
除了上面Jason的评论外,我想指出一个显而易见的问题:这个答案与排序(碎片整理)有关,但是没有解释为什么第二个访问特定的随机图块(例如“ 3”图块)会更快情况比第一种情况。
CVn 2015年

因为您不仅仅访问“ 3”。您正在访问“ 1-15”。尽管我承认示例中的内容并不清楚,但我还是理解了这一点。可能值得特别指出,例如“此难题类似于单个碎片文件”。好的答案,使事情在心理上很容易获得!
Smithers

1
澄清一下:类推的主要问题在于,在实际的难题中,您只能将图块移动到相邻的空白空间。也就是说,在很小的示例中,只能将6或13移入空白空间。这就是使难题具有挑战性的原因。这是瓷砖游戏的重点。但是,在对硬盘驱动器进行碎片整理时,您可以将移动4到空白位置,将1移动到正确的位置,依此类推,很容易解决,就像移动很多空间一样。因此,这种类比真的崩溃了,因为难题的症结并不适用:没有文件系统可以这样工作。
杰森C

'因为您不只访问“ 3”。您正在访问“ 1-15”'-这是胡说。答案并不能解释为什么在第二种情况下访问特定的随机图块会比在第一种情况下更快,因为答案是完全错误的。碎片整理不仅不限制拼图的方式,而且“棘手/费时”的碎片整理与系统性能无关。
Jim Balter

5

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

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

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


一个好,干净,简单的答案也可以解决主要的核心问题。
Smithers

4

闪存磁盘已满或碎片化时,肯定会变慢,尽管减速的机制与物理硬盘驱动器不同。一个典型的闪存芯片将被划分为一定数量的擦除块,每个擦除块都包含大量(数百个,如果不是数千个)写页面,并且将支持三个主要操作:

  1. 阅读Flash页面。
  2. 写入以前空白的Flash页面。
  3. 擦除块中的所有闪存页面。

从理论上讲,每次写入闪存驱动器都可以读取一个块中的所有页面,更改缓冲区中的一个页面,擦除该块,然后将缓冲区写回到闪存设备中,但是这种方法非常有用。慢; 如果从擦除开始到写回完成之间断电,也很可能导致数据丢失。此外,磁盘的频繁写入部分将很快磨损。例如,如果FAT的前128个扇区存储在一个闪存块中,则对所有这些扇区的写入总数达到100,000次后,驱动器将死掉,这不是很多,特别是考虑到128个扇区将容纳大约16,384个FAT条目。

由于上述方法将非常可怕,因此驱动器将使其识别一些空白页,在其中写入数据,并以某种方式记录有关逻辑扇区存储在该位置的事实。只要有足够的空白页可用,此操作就可以快速进行。但是,如果空白页供不应求,驱动器可能需要查找包含相对较少的“活动”页的块,将其中的任何活动页移动到剩余的空白页中,并将旧副本标记为“死”; 完成此操作后,驱动器将能够擦除仅包含“死”页面的块。

如果驱动器只有一半已满,那么肯定会有至少一个块,其中最多有一半的活动页面已满(并且很可能会有一些块很少或根本没有)。如果每个块包含256页,最少的块包含64个活动页(中等程度的错误情况),则对于每192个请求的扇区写入,驱动器将必须执行64个额外的扇区副本和一个块擦除(因此平均成本)每个扇区的写入次数约为1.34页写入和0.005块擦除。即使在最坏的情况下,每128个扇区写入也将需要128个额外的扇区副本和一个块擦除(每次写入的平均成本为2页写入和0.01块擦除)

如果驱动器已满99%,而最少填充的块具有248/256个活动页面,则每8个扇区写入将需要248个额外的页面写入和一个块擦除,因此,每次写入的成本为32页写入和0.125块擦除-非常严重的减速。

根据驱动器有多少“额外”存储空间,它可能不会使情况变得如此糟糕。但是,即使在驱动器已满75%的情况下,最坏情况下的性能也可能是最坏情况下性能达到50%时的两倍以上。


3

你几乎钉牢了。您可以将SATA HDD视为一种半双工通信介质(即一次只能接受或传输数据。不能同时接受和传输)。因此,如果将驱动器长时间搁置,会寻找空闲位置进行写入,它无法读取任何数据给您。根据经验,由于这个原因,您不应将驱动器的容量加载超过80%。磁盘越完整,对文件进行分段的可能性就越高,这会导致驱动器在读取请求期间阻塞(从而阻止写入请求)。

您可以采取许多措施来解决这些问题:

  • 减少已存储的数据量并定期对驱动器进行碎片整理。
  • 切换到基于闪存的存储。
  • 将批量数据存储在与操作系统不同的驱动器上。
  • 等等等等...

1
当使用闪存时,驱动器几乎可以瞬时读取(同样,不能同时读取和写入)(9ms是HDD上相当标准的寻道时间,因为SSD通常在皮秒和纳秒级范围内具有“寻道时间”)磁盘上的位置。 en.wikipedia.org/wiki/…–
纳撒尼尔·米克

7
继续进行第2步:这就是例如$BitmapNTFS上的文件,或ext4中的位图分配器。也就是说,这个答案正在传播一些严重的错误信息。3.大量的读写缓冲和缓存正在进行中,这引起了很多争议。这个答案多少描述了碎片的影响,甚至仅限于较旧的文件系统,它肯定不是准确的可用空间。释放磁盘空间不会加快计算机的速度。
杰森C

4
@JasonC,您应该将您的评论变成答案。
Celos

6
不会发生“因此,当驱动器保持了较长一段时间寻找一个免费的位置写入,它无法读取任何数据给你” -它只是不。那不是文件系统的工作方式。请修改您的答案以停止传播错误信息。
RomanSt

2
@NathanialMeek您正在混合图层。:) SATA的半双工模式意味着它只能沿一个方向在电线上传输数据。在SATA指定的操作队列中,以较小的块(称为FIS)完成较高级别的读取和写入。它们可以是异步的,并且可以在板载高速缓存之间进行快速读写,并通过DMA直接到系统内存。SATA控制器还可以自由地对命令重新排序以优化效率。重点是:物理操作完成后,该线路不会处于繁忙状态,并且SATA的半双工模式没有您认为的效果。
Jason C

3

遵循简短而甜美的方法,我过于简单的回答(严格限于您的主要困惑)是:

只要你

  1. 操作系统有足够的空间(在最坏的情况下)可以完成诸如调页/交换/等任务。
  2. 其他软件也具有足够的空间来满足各自的需求。
  3. 硬盘碎片整理。

这样一来,您就无法区分80%空磁盘与30%空磁盘的性能差异,除了存储越来越多的新数据外,您不必担心其他任何事情。

其他任何需要更多存储空间的情况都会导致性能下降,因为现在可能会出现可用空间不足的情况。

当然,通过工具清理磁盘的优点如下:

  1. 应当定期清理临时文件以获得宝贵的磁盘空间。
  2. 旧日志文件不过是浪费空间。
  3. 已安装/未安装的软件的剩余部分非常讨厌。
  4. 如果您重视在线隐私,则必须清除Cookie。
  5. 无效的快捷方式等

所有这些(以及更多)原因导致性能较差,因为所有这些原因在寻找正确的位集时都会使操作系统感到困惑。


摘要不错,但对“ BUT”部分却不太确定。特别是:3)尽管有常见的怪异现象,但通常不会对性能产生明显影响。4)Cookies并不是天生的问题,并且不管意见如何,隐私都与性能或硬盘空间无关。5)快捷键坏了,但通常否则无关紧要。这些都没有真正“混淆”任何常见的操作系统。请注意您遵循的“技巧”和“调整”。还要警惕不必要的清理工具,尤其是注册表清理程序通常会冒着为零收益而遭受损害的风险。
杰森C

2

我从未提到过的对旋转驱动器的影响:磁盘的不同部分的访问速度和数据传输速度是不同的。

磁盘以固定速度旋转。磁盘外部的磁道更长,因此每个磁道比内部的磁道可容纳更多数据。如果您的驱动器可以从最外面的轨道读取100 MB /秒,则最里面的轨道的速度将低于50 MB /秒。

同时,磁盘外部磁道上1 GB数据之间的磁道少于最里面磁道上1 GB数据之间的磁道。因此,平均而言,与最内侧磁道上的数据相比,存储在外侧的数据所需的磁头移动更少。

如果可能,操作系统将尝试使用最外面的轨道。当然,如果磁盘已满是不可能的。删除数据将在传输速度较高的地方留出空间,并使数据运行更快。出于同样的原因,如果需要速度(只要价格合理),则应购买比所需容量更大的旋转硬盘驱动器,因为最终只会使用驱动器中最快的部分。


添加:en.wikipedia.org/wiki/Zone_bit_recording,其中对此进行了详细介绍。值得注意的是:现有数据将不会移动。这可能会影响新数据的存储(取决于驱动器上的位置,而不直接取决于可用空间),但不会“减慢”在内部写入之前愉快地访问的现有文件的速度。FWIW最便宜1TB 7200RPM 3.5"驱动器I在亚马逊发现具有144MB / s的用户基准的平均读取速率;甚至占上内,外磁道的差异,这可能不随便使用期间的瓶颈
詹森Ç

在实践中,@ JasonC的I / O性能(按顺序吞吐)几乎从来都不是问题。即使是慢速的4900 rpm驱动器,对于几乎任何个人用户来说也足够快。在大多数情况下,每秒读/写操作的I / O性能会降低性能。如果您愿意,请向本地的系统管理员询问有关多用户系统中的旋转存储IOPS的信息。这就是为什么如今几乎没有人为多用户系统部署旋转存储的主要原因。您甚至永远无法接近SSD的IOPS。
CVn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.