为什么文件夹删除没有并行化?

为什么文件夹删除没有并行化?

当我按住 Shift 键删除一个大文件夹时,我看到以下 CPU 使用率:

在此处输入图片描述

并非所有盒子都得到利用。这样效率低下吗?

在我看来,通过分而治之,这很容易实现并行化。我尝试手动选择并删除一半的内容,然后再删除另一半,结果让更多的盒子满了。

我听说回收表现出不同的行为,尽管我自己没有测试过。

答案1

现代文件系统试图确保在写入过程中始终保持数据完整性。过去我听说这被称为“原子”写入,因为它要么成功完成,要么根本不完成。

您一次只能向实际磁盘发送一个命令,忽略磁盘队列和缓存,并且删除操作将进行几次读取(扫描目录等)等,然后最终写入从目录树中删除该项目并将空间标记为可用。

结合现代日志记录的使用(允许磁盘任务根据中断时间向前或向后滚动),瓶颈很可能在于磁盘控制器的实际排队任务(读取/查找/写入)。

将某些内容移至回收站只是移动文件夹,这种方式比“删除”某些内容要简单得多,因为您只是修改了文件夹结构,而不是将大量数据标记为不再需要。不过,当您清空回收站时,您最终还是需要再次释放磁盘空间。

答案2

此操作的瓶颈不是 CPU,而是磁盘。您无法让 CPU 的速度超过磁盘存储更改的速度。因此,CPU 会等待磁盘完成其工作后再提交更多工作。

对于许多小文件的操作,这种影响尤其明显,因为文件系统的开销大于文件本身的大小,因此处理它们似乎需要异常长的时间。

相关内容