为什么固态驱动器在你装满它们的时候慢下来?
基准测试是很清楚的:当你将固态驱动器填满时,它们的速度会减慢。将您的固态驱动器填充到接近容量,其写入性能将急剧下降.原因在于SSD和NANDFlash存储的工作方式。
用固态驱动器填充驱动器是你永远不应该做的事情之一。几乎完全固态驱动器将有更慢的写入操作,减慢您的计算机.
空块和部分填充块
当您将文件写入固态驱动器时,它会查找空块并填充它们。写入空块是最快的写入操作。这就是为什么新的操作系统(Windows 7及更高版本)支持TRIM功能,一旦删除操作系统中的文件,就会自动从固态驱动器中删除文件的数据。这与磁性硬盘的工作方式不同,磁性硬盘上有一些被删除的文件。
他们不会坐在一个固态驱动器修剪,以确保块是空的,以便SSD可以快速写入新的数据,在未来的空块。写一个已经写好的扇区就像在机械硬盘上写空扇区一样快,但是一个固态驱动器在写它之前必须擦除一个块。
NANDFlash内存将数据写入256 KB块内的4 KB页中。若要向部分填充的块添加其他页面,固态驱动器必须在将数据写回之前擦除整个块。
当你的固态驱动器满了,可用的空块越来越少.取而代之的是部分填充的街区。固态驱动器不能仅仅将新的数据写入这些部分填充的块–这将擦除现有的数据。与简单的写操作不同,固态驱动器必须将块的值读取到缓存中,用新数据修改值,然后将其写回。请记住,编写一个文件可能需要写入许多块,因此这可能会导致大量的额外延迟。
TRIM不会巩固部分填充的区块。
如果您将驱动器填充到容量或接近容量,那么在删除文件之后,很可能会有许多部分填充的块。当文件被删除时,TRIM命令只指示固态驱动器删除文件数据。它不会强迫驱动器执行任何类型的清理操作。
换句话说,在删除文件之前,将一个固态驱动器填充到容量中,您可能会得到许多部分填充的块。驱动器不会采取其方式,以巩固这些部分填充块为完整的区块,释放空块。驱动器将仍然充满部分填充块和写性能将下降。
超额供应和垃圾收集
为了防止消费者填满他们的固态硬盘,并最终导致性能严重下降,ssd制造商正想方设法解决这一问题。
消费者级的固态硬盘通常会预留大约7%的闪存,让用户无法使用。这就是所谓的“过度供应”-额外的存储硬件被添加到驱动器,但在计算机上是不可见的,因为它可以使用可用的存储。备用区域确保驱动器永远不会完全满-将始终有一些备用能力,以帮助保持写性能稳定。
每个固态驱动器的控制器都有一个垃圾收集算法来缓解这个问题。当驱动器变得满时,它将寻找部分填充的块,并开始巩固它们,释放尽可能多的空块。不同的固态驱动器在不同的时间和阈值运行这些操作,这取决于驱动器的控制器。
基准证据
AnandTech用不同的驱动器执行了各种基准测试,以梳理出固态驱动器的备用区域与其写入操作性能的一致性之间的关系。当填充一个空驱动器时,他们发现在这个过程的早期,他们发现了很高的写性能,并且随着写操作继续填充驱动器,他们发现了很大的下降。
在驱动器上留出更多的备用空间有助于性能保持一致,因为它确保驱动器始终有足够的空块准备就绪。
他们发现,“一旦这些[消费者]驱动器的备用面积达到25%,最低性能就会大大提高。”他们最后的建议是,如果你想要在性能一致性和容量之间保持一个良好的平衡,你应该“计划只使用大约75%的[你的驱动器]容量。”
如果你有一个固态驱动器,你应该尽量避免使用超过75%的容量。购买一个比您需要更多存储空间的更大的驱动器,您将确保始终具有一致的写入性能。幸运的是,SSD正逐渐变得更便宜,因此它不再像以前那么昂贵了。
原文链接:https://www.701z.com/10804.html,转载请注明出处。
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
评论0