我一直在看很多视频,现在对计算机的工作原理有了更好的了解。我更好地了解了什么是RAM,易失性和非易失性内存以及交换过程。我也明白为什么增加RAM可以加快计算机速度。
我不明白为什么清理磁盘空间可以加快计算机的速度。可以?为什么呢 它与寻找可用空间来保存东西有关吗?还是通过移动物体来留出足够长的连续空间来保存东西?我应该在硬盘上留出多少可用空间?
speeds up the experience of using a PC
。
我一直在看很多视频,现在对计算机的工作原理有了更好的了解。我更好地了解了什么是RAM,易失性和非易失性内存以及交换过程。我也明白为什么增加RAM可以加快计算机速度。
我不明白为什么清理磁盘空间可以加快计算机的速度。可以?为什么呢 它与寻找可用空间来保存东西有关吗?还是通过移动物体来留出足够长的连续空间来保存东西?我应该在硬盘上留出多少可用空间?
speeds up the experience of using a PC
。
Answers:
在这里,我偶然写了一本书。先喝杯咖啡。
为什么清空磁盘空间可以加快计算机速度?
它不是,至少不是靠它自己。这是一个非常普遍的神话。它之所以是一个常见的误解是因为填满你的硬盘驱动器经常发生在同一时间,传统上其他的东西可以慢下来†您的计算机。随着驱动器的装满,SSD性能的确会下降,但这是一个相对较新的问题,是SSD独有的,并且对于休闲用户而言并不十分明显。通常,可用磁盘空间不足只是一个红鲱鱼。
例如,诸如:
文件碎片。文件碎片是一个问题††,但是缺少可用空间虽然绝对是众多促成因素之一,但并不是造成这种情况的唯一原因。这里的一些关键点:
文件被分割了的机会都没有涉及到的剩余可用空间的驱动器上的金额。它们与驱动器上最大的连续自由空间块的大小(例如,自由空间的“孔”)有关,自由空间的大小恰好使上限处于上限。它们还与文件系统处理文件分配的方式有关(请参见下文)。请考虑:单个连续块中所有可用空间都占满95%的驱动器有0%的机会分割一个新文件†††(而对附加文件进行分割的机会独立于可用空间)。5%的驱动器已满,但数据均匀分布在该驱动器上的机会很高。
请记住,文件碎片只会在访问碎片文件时影响性能。考虑:您有一个不错的,经过碎片整理的驱动器,其中仍然有许多空闲的“孔”。常见情况。一切运行顺利。最终,尽管如此,您到达的地步是不再有更多的可用自由空间。您下载了一部大电影,文件最终变得碎片化。这不会降低计算机的速度。您所有的应用程序文件以及以前可以使用的文件都不会突然变得零散。这可能使电影加载需要更长的时间(尽管与硬盘驱动器读取速率相比,典型的电影比特率是如此之低,以至于很可能不会引起注意),并且它可能会在电影加载时影响I / O限制的性能,但除此之外,没有什么变化。
尽管文件碎片肯定是一个问题,但通常情况下,操作系统和硬件级别的缓冲和缓存会减轻这种影响。延迟的写入,预读,Windows中的预取器之类的策略等都有助于减少碎片的影响。通常,在碎片变得严重之前,您实际上并不会真正受到重大影响(我什至敢说,只要交换文件没有碎片,您可能就永远不会注意到)。
搜索索引是另一个示例。假设您启用了自动索引编制,并且操作系统无法正常处理此问题。随着您将越来越多的可索引内容(例如文档等)保存到计算机中,建立索引的时间可能越来越长,并且可能开始影响计算机在运行时的I / O和CPU使用率。这与可用空间无关,与您拥有的可索引内容的数量有关。但是,用尽可用空间与存储更多内容密切相关,因此绘制了错误的连接。
防毒软件。与搜索索引示例相似。假设您已经设置了防病毒软件来对驱动器进行后台扫描。当您拥有越来越多的可扫描内容时,搜索将占用更多的I / O和CPU资源,可能会干扰您的工作。同样,这与您拥有的可扫描内容的数量有关。更多的内容通常等于更少的可用空间,但是没有可用空间不足不是原因。
已安装的软件。假设您安装了许多在计算机启动时加载的软件,从而减慢了启动时间。之所以会变慢,是因为正在加载许多软件。但是,已安装的软件占用硬盘驱动器空间。因此,硬盘驱动器的可用空间在发生这种情况的同时减少,并且再次可以容易地建立错误的连接。
上面的例子说明了这是一个如此普遍的神话的另一个原因:虽然可用空间不足并不是造成速度减慢的直接原因,但有时(但不总是)卸载各种应用程序,删除索引或扫描的内容等(但并非总是如此)答案)由于与剩余可用空间量无关的原因而再次提高了性能。但这自然也会释放硬盘空间。因此,同样,可以在“更多可用空间”和“更快的计算机”之间建立明显的连接(但错误的连接)。
考虑:如果由于大量安装的软件等原因使计算机运行缓慢,并且将硬盘驱动器精确地克隆到较大的硬盘驱动器,然后扩展分区以获取更多的可用空间,则该计算机将无法神奇地加速起来 相同的软件负载,相同的文件仍以相同的方式进行碎片处理,相同的搜索索引器仍在运行,尽管具有更多的可用空间,但没有任何变化。
它与寻找用于保存内容的内存空间有关吗?
不,不是的。这里有两个非常重要的事情值得注意:
您的硬盘驱动器不会四处寻找放置物品的地方。您的硬盘很笨。没什么。这是一个很大的寻址存储块,它会将内容盲目地放置在OS告诉它的地方,并读取要求它的内容。现代驱动器具有复杂的缓存和缓冲机制,旨在根据我们随着时间的推移获得的经验来预测操作系统的要求(某些驱动器甚至意识到其上的文件系统),但从本质上讲,您的驱动器只是一个笨拙的存储砖,偶尔还会有额外的性能表现。
您的操作系统也不会搜索放置东西的地方。没有“搜索”。解决此问题已经付出了很多努力,因为这对文件系统性能至关重要。数据在驱动器上的实际组织方式由文件系统决定。例如,FAT32(旧的DOS和Windows PC),NTFS(后来的Windows),HFS +(Mac),ext4(某些Linux)以及许多其他文件。甚至“文件”和“目录”的概念也仅仅是典型文件系统的产物-硬盘驱动器并不了解被称为“文件”的神秘野兽。详细信息不在此答案的范围内。但是从本质上讲,所有常见的文件系统都具有跟踪驱动器上可用空间的位置的方法,因此在正常情况下(即运行状况良好的文件系统),无需搜索可用空间。例子:
还是随处移动以构成足够长的连续空间来保存某些东西?
不。至少在我所知道的任何文件系统上都不会发生这种情况。文件只是碎片化而已。
“将事物四处移动以形成足够长的连续空间来保存某些东西”的过程称为碎片整理。写入文件时不会发生这种情况。当您运行磁盘碎片整理程序时,会发生这种情况。至少在更新的Windows上,这是按计划自动发生的,但绝不会通过写入文件来触发。
能够避免这种移动是文件系统性能的关键,也是为什么发生碎片和碎片整理作为单独步骤存在的原因。
我应该在硬盘上留出多少可用空间?
这是一个比较棘手的问题,而且这个答案已经变成了一本小书。
经验法则:
对于所有类型的驱动器:
特定于SSD:
就我个人而言,当我剩余约20-25%的可用空间时,我通常会抓住更大的驱动器。这与性能无关,只是到了这一点,我预计很快我可能会用完数据空间,现在是时候获得更大的驱动器了。
与观察可用空间相比,更重要的是确保在适当的地方(而不是在SSD上)启用计划的碎片整理,这样您就永远不会陷入严重影响您的境地。同样重要的是避免错误的调整,让操作系统来做事,例如,不要禁用Windows预取器(SSD除外)等。
最后一件事值得一提。这里的另一个答案之一是SATA的半双工模式阻止同时进行读写。的确如此,但是这大大简化了,并且与此处讨论的性能问题无关。简而言之,这意味着不能同时在导线的两个方向上传输数据。但是,SATA具有相当复杂的规范,涉及极小的最大块大小(我认为线路上每个块大约8kB),读写操作队列等,并且不排除在读取进行中,交错时发生对缓冲区的写操作操作等
发生的任何阻塞都是由于争用物理资源,通常可以通过大量缓存来缓解。SATA的双工模式在这里几乎完全无关。
† “减速”是一个广义术语。在这里,我用它来指代受I / O约束的事物(例如,如果您的计算机坐在那儿,数字紧缩,硬盘的内容没有影响),或者受CPU约束并且与切向相关的事物竞争高CPU使用率(例如,防病毒软件扫描大量文件)。
††固态硬盘是由碎片在顺序访问速度的影响通常比随机访问更快一些,但尽管没有面临的机械设备同样的限制(即使如此,缺乏碎裂并不能保证顺序访问,由于损耗均衡,固态硬盘等。 ,就像詹姆斯·斯内尔(James Snell)在评论中指出的那样。但是,实际上在每种通用情况下,这都是没有问题的。由于SSD碎片化而导致的性能差异通常对于加载应用程序,启动计算机等而言可以忽略不计。
†††假设有一个合理的文件系统,没有故意使文件碎片化。
除了Nathanial Meek对HDD 的解释之外,SSD还有另一种情况。
由于对SSD上任何位置的访问时间相同,因此SSD对分散的数据不敏感。SSD的典型访问时间为0.1ms,而HDD的典型访问时间为10到15ms。但是,它对已写入SSD的数据敏感
与可以覆盖现有数据的传统HDD不同,SSD需要完全空白的空间来写入数据。这是通过称为Trim and Garbage Collection的函数完成的,该函数清除了标记为已删除的数据。垃圾回收与SSD上一定数量的可用空间结合使用时效果最佳。通常建议使用15%到25%的可用空间。
如果垃圾回收无法及时完成工作,则在每个写入操作之前都会清理应该写入数据的空间。这会使每个写入操作的时间加倍,并降低整体性能。
这是一篇很棒的文章,解释了裁切和垃圾回收的功能
传统硬盘内部的某个地方是旋转的金属盘,其中各个位和字节实际上已编码。当数据添加到磁盘时,磁盘控制器首先将其存储在磁盘外部。随着新数据的添加,最后将空间移到磁盘内部。
考虑到这一点,有两种影响磁盘性能的因素会导致磁盘性能下降:“ 寻道时间”和“ 旋转速度”。
要访问数据,传统硬盘必须将读/写磁头物理地移动到正确的位置。这需要时间,称为“寻找时间”。制造商发布其磁盘的查找时间,通常只有几毫秒。听起来可能并不多,但是对于计算机而言,这是永恒的。如果您必须读取或写入许多不同的磁盘位置以完成一项任务(这很常见),那么那些寻找时间可能会导致明显的延迟或延迟。
几乎是空的驱动器将大部分数据放在同一位置或附近,通常在读/写磁头其余位置附近的外边缘。这减少了在磁盘上查找的需求,从而大大减少了查找所花费的时间。几乎已满的驱动器不仅需要更频繁地搜索磁盘,而且搜索动作更大/更长,而且可能难以将相关数据保持在同一扇区中,从而进一步增加了磁盘搜索。这称为碎片数据。
释放磁盘空间可以通过允许碎片整理服务不仅更快地清理碎片文件,而且还可以将文件移到磁盘外部,从而缩短寻道时间,从而平均寻道时间更短。
硬盘驱动器以固定速率旋转(计算机通常为5400rpm或7200rpm,而服务器为10000rpm甚至15000 rpm)。它还需要驱动器上的固定空间量(或多或少)来存储单个位。对于以固定旋转速度旋转的磁盘,磁盘外部的线性速率将比磁盘内部更快。这意味着磁盘外边缘附近的位以比磁盘中心附近的位更快的速度经过读取头,因此读/写头可以读取或写入磁盘外边缘附近的位的速度比磁盘外边缘快。内。
几乎是空的驱动器将花费大部分时间来访问磁盘较快的外边缘附近的位。快要装满的驱动器将花费更多时间访问光盘较慢的内部区域附近的位。
同样,清空磁盘空间可以通过允许碎片整理服务将数据移到磁盘外部进行读取和写入,从而使计算机更快。
有时,光盘实际上对于读取头移动得太快,并且这种效果减弱了,因为外边缘附近的扇区将错开……写入混乱,以便读取头可以跟上。但是总的来说,这是成立的。
这两种影响都归结为磁盘控制器首先将数据分组在磁盘较快的部分中,而不是在需要时才使用磁盘的较慢部分。随着磁盘装满,磁盘的较慢部分将花费越来越多的时间。
效果也适用于新驱动器。在所有其他条件相同的情况下,新的1TB驱动器比新的200GB驱动器快,因为1TB会将位存储得更近,并且不会以最快的速度填充到内部磁道中。但是,尝试使用此信息来指导购买决策几乎没有帮助,因为制造商可能使用多个磁盘来达到1TB大小,较小的磁盘将1TB系统限制为200GB,软件/磁盘控制器的限制将1TB磁盘限制为仅200GB。空间,或出售部分已完成/损坏的盘片的驱动器(1TB驱动器中有很多坏扇区)作为200GB驱动器。
在这里值得注意的是,上述影响很小。计算机硬件工程师花费大量时间来研究如何最大程度地减少这些问题,并且诸如硬盘驱动器缓冲区,Superfetch缓存和其他系统之类的工作都可以将问题最小化。在具有足够可用空间的健康系统上,您甚至都不会注意到。此外,SSD具有完全不同的性能特征。但是,这种影响确实存在,并且随着驱动器的装满,计算机确实会变慢。在磁盘空间非常低的不正常系统上,这些影响会造成磁盘颠簸的情况,磁盘不断在分散的数据之间来回搜索,释放磁盘空间可以解决此问题,从而带来更加显着和明显的改进。
此外,将数据添加到磁盘意味着某些其他操作(例如索引或AV扫描和碎片整理过程)将在后台进行更多工作,即使其运行速度与以前相同或接近。
最后,磁盘性能是当今 PC整体性能的重要指标……甚至比CPU速度还要重要。甚至磁盘吞吐量的小幅下降通常也将等同于PC性能的实际整体下降。尤其是这样,因为硬盘性能并未真正跟上CPU和内存改进的步伐。7200 RPM磁盘已经成为桌面标准已有十多年了。传统的旋转磁盘比以往任何时候都更是计算机的瓶颈。
Freeing disk space won't decrease seek times if your data is already all over the drive.
“我不能对此表示怀疑,但是我可以指出,碎片整理服务现在可以将这些数据移至驱动器的前端,并且现在这些事情将缩短寻道时间。您评论中的其他观点也有类似的说法:磁盘空间用尽不会增加对组织良好的数据的搜索,但确实减少了数据保持组织的可能性。
所有其他答案在技术上都是正确的-但是,我始终发现,这个简单的示例可以最好地说明这一点。
如果有足够的空间,对事物进行排序确实很容易 ...但是如果没有空间,则很难进行排序... 计算机也需要空间!
这个经典的“ 15个难题 ”非常棘手/非常耗时,因为您只有1个免费的方块可以随机排列瓷砖以使它们以正确的1-15顺序排列。
但是,如果空间更大,则可以在10秒内解决此难题。
对于曾经玩过这个难题的人……理解类比似乎是自然而然的。;-)
闪存磁盘已满或碎片化时,肯定会变慢,尽管减速的机制与物理硬盘驱动器不同。一个典型的闪存芯片将被划分为一定数量的擦除块,每个擦除块都包含大量(数百个,如果不是数千个)写页面,并且将支持三个主要操作:
从理论上讲,每次写入闪存驱动器都可以读取一个块中的所有页面,更改缓冲区中的一个页面,擦除该块,然后将缓冲区写回到闪存设备中,但是这种方法非常有用。慢; 如果从擦除开始到写回完成之间断电,也很可能导致数据丢失。此外,磁盘的频繁写入部分将很快磨损。例如,如果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%时的两倍以上。
你几乎钉牢了。您可以将SATA HDD视为一种半双工通信介质(即一次只能接受或传输数据。不能同时接受和传输)。因此,如果将驱动器长时间搁置,会寻找空闲位置进行写入,它无法读取任何数据给您。根据经验,由于这个原因,您不应将驱动器的容量加载超过80%。磁盘越完整,对文件进行分段的可能性就越高,这会导致驱动器在读取请求期间阻塞(从而阻止写入请求)。
您可以采取许多措施来解决这些问题:
遵循简短而甜美的方法,我过于简单的回答(严格限于您的主要困惑)是:
只要你
这样一来,您就无法区分80%空磁盘与30%空磁盘的性能差异,除了存储越来越多的新数据外,您不必担心其他任何事情。
其他任何需要更多存储空间的情况都会导致性能下降,因为现在可能会出现可用空间不足的情况。
当然,通过工具清理磁盘的优点如下:
所有这些(以及更多)原因导致性能较差,因为所有这些原因在寻找正确的位集时都会使操作系统感到困惑。
我从未提到过的对旋转驱动器的影响:磁盘的不同部分的访问速度和数据传输速度是不同的。
磁盘以固定速度旋转。磁盘外部的磁道更长,因此每个磁道比内部的磁道可容纳更多数据。如果您的驱动器可以从最外面的轨道读取100 MB /秒,则最里面的轨道的速度将低于50 MB /秒。
同时,磁盘外部磁道上1 GB数据之间的磁道少于最里面磁道上1 GB数据之间的磁道。因此,平均而言,与最内侧磁道上的数据相比,存储在外侧的数据所需的磁头移动更少。
如果可能,操作系统将尝试使用最外面的轨道。当然,如果磁盘已满是不可能的。删除数据将在传输速度较高的地方留出空间,并使数据运行更快。出于同样的原因,如果需要速度(只要价格合理),则应购买比所需容量更大的旋转硬盘驱动器,因为最终只会使用驱动器中最快的部分。