在阅读有关提高 SSD 耐久性的方法时,我偶然发现了一个英特尔白皮书关于 SSD 过度配置(限制驱动器上的主机可寻址空间或不将部分可寻址空间包含在分区中,让控制器管理传入数据,减少写入放大并提高驱动器的耐用性)。奇怪的是,该论文还提到过度配置可以提高随机写入性能。为了测试这一点,我在 256GB Intel 545s SSD 上的几个不同配置上运行了 sysbench 随机写入测试。
- 256/256GB 可寻址(27.5 MiB/s 随机 4k 写入)
- 200/256GB 可寻址(26.5 MiB/s 随机 4k 写入)
- 256/256GB 可寻址,包含 200GB 分区(26.5 MiB/s 随机 4k 写入)
- 256/256GB 可寻址,包含 150GB 分区(26.8 MiB/s 随机 4k 写入)
令我失望的是,配置 2-4 的性能都略逊于非用户过度配置的配置。为什么我没有看到性能提升?是我测试错了吗,还是说这种差异可以用客户端 SSD 固件与英特尔论文中作为示例的数据中心驱动器的行为不同来解释?
测试是在运行 ext4 文件系统的 Linux 系统上进行的
sysbench --test=fileio --file-total-size=64G --file-test-mode=rndwr --init-rng=on --max-time=300 --max-requests=0 run
该驱动器除了 sysbench 为测试创建的文件外不包含任何其他内容。
答案1
从正常意义上讲,过度配置驱动器不会使驱动器“更快”。宣传的峰值速度不会增加。但它会使 SSD 在高使用率情况下表现更好。驱动器将在更长时间内更接近峰值性能。您链接的白皮书对此进行了解释。
这将通过两种方式实现:
耐力。由于用于存储的驱动器空间较少,因此可以回收的可用空间更多,因此使用寿命比具有相同配置空间但备用区域较少的驱动器更长。这是因为存储单元在其使用寿命内具有固定的写入量。
写入放大。SSD 以块和页面为单位工作,而不是像传统硬盘那样以扇区为单位工作。SSD 在后台完成日常管理任务,例如在写入新数据之前对页面进行重新排列和清除块。在此期间,客户端操作会暂停。更多的备用区域可以减少这种情况的发生,从而提高性能。
要真正看到此设置的性能优势,您需要向驱动器写入更多数据。仅将 64GB 数据写入具有 256GB 或 200GB 可寻址空间的 SSD 不会显示差异,因为它不会超出驱动器的分配区域。