为 Btrfs 提供了 DISCARD 的异步实现

对于 btrfs 文件系统 提出 DISCARD 操作的异步实现(标记不再需要物理存储的已释放块),由 Facebook 工程师实现。

问题的本质是:在原来的实现中,DISCARD是与其他操作同步执行的,这在某些情况下会导致性能问题,因为驱动器必须等待相应命令完成,这需要额外的时间。如果驱动器的 DISCARD 执行速度很慢,这可能会成为问题。

通过异步实现,在正常的 FS 操作期间无需等待驱动器完成 DISCARD,从而通过将此操作转移到后台来消除该问题。所提出的实现还执行了一些优化。例如,它会等待一段时间,因为担心该块可能很快就会被使用,以致执行 DISCARD 过程根本没有意义,并且它还会在实际执行 DISCARD 之前尝试合并区域,以减少操作总数。

来源: opennet.ru

添加评论