垃圾回收:保障SSD高速运行
宁道奇 发表于:11年06月17日 12:00 [转载] 小熊在线
垃圾回收:保障SSD高速运行
GC(Garbage collection) 垃圾回收
当所有的的SSD空闲空间被写满之后,SSD的主控芯片就会将所有标记为“无效”的块和页都统一进行擦除操作。将这些离散的数据整合起来重置为“空白”的块空间。这个操作就叫做垃圾回收。
很明显当SSD主控进行垃圾回收的时候,会消耗许多处理资源和数据带宽,这个时候用户会感到SSD不知道在干什么,性能下降非常明显,甚至是卡顿。由此聪明的工程师们想到利用SSD闲置时,自动进行垃圾回收操作。这样可以保证SSD中具有足够数量的“空白”空间,以应对未来的大宗数据读写任务。
但你可以想象,如果系统经常进行垃圾回收处理,频繁的将一些区块进行擦除操作,那么SSD的寿命反而也会进一步下降。由此把握这个垃圾回收的频繁程度,同时确保SSD中的闪存芯片拥有更高的使用寿命,这确实需要找到一个完美的平衡点。同时垃圾回收时增加的额外的擦除操作就被称作是“写入放大”。
对于GC垃圾回收而言,有两种方式,一个是主动,一个是被动。主动的方式比较容易理解,就是通过用户自己手动运行软件,进行垃圾回收操作。当SSD被写满之后,SSD不会自动进行垃圾回收操作。由此只有当性能下降剧烈,用户有所察觉的时候,才会进行手动的垃圾回收。
另一种被动垃圾回收就要高明的多。通过主控的固件程序算法,固态硬盘会自动为每一个经过擦除处理的“空白”块作一个标记。当SSD整盘的垃圾达到一定数量,需要进行GC垃圾回收的时候。主控芯片会自动寻找到标记等级较低的块进行垃圾回收。由此这样做就会做到磨损平衡,确保块的健康,减少某个块被频繁的GC。