unix du命令用于计算磁盘空间的算法是什么?

unix du命令用于计算磁盘空间的算法是什么?,unix,du,Unix,Du,我已经尝试使用du在单个目录上计算今天的磁盘使用率。目录大小为6GB,计算时间如下: prompt> time du -sh . 6.0G . real 1m32.405s user 0m2.053s sys 0m16.552s unix du命令用于计算磁盘空间的算法是什么?为什么这么慢?是否有其他方法可以更有效地计算磁盘空间?调用的平台是Sun。计算大小的目录是NFS挂载的。我认为它只是递归地遍历目录,同时将找到的文件大小相加。很简单,真的,但当然需要时间。

我已经尝试使用
du
在单个目录上计算今天的磁盘使用率。目录大小为6GB,计算时间如下:

prompt> time du -sh .
6.0G   .

real    1m32.405s
user    0m2.053s
sys     0m16.552s

unix du命令用于计算磁盘空间的算法是什么?为什么这么慢?是否有其他方法可以更有效地计算磁盘空间?调用的平台是
Sun
。计算大小的目录是NFS挂载的。

我认为它只是递归地遍历目录,同时将找到的文件大小相加。很简单,真的,但当然需要时间。如果文件系统使这些操作更快,则可能会更快。

du必须列出所有目录并统计找到的每个文件,以便最终读取整个磁盘

在获取文件大小时,它对文件进行求和,完成后打印求和

例如,在这个目录上,sshfs文件系统上有大约200万个文件:

prompt$ time du -sh .
367G    .

real    12m53.093s
user    0m3.848s
sys     0m14.265s
但由于第二次运行需要缓存,因此只需:

prompt$ time du -sh .
367G    .

real    4m56.875s
user    0m4.136s
sys     0m15.257s

其速度取决于文件/目录数。如果您有一个包含6个1Gb文件的目录,则计算所需的时间将少得多。它计算给定目录中的文件大小,并递归计算每个子目录的文件大小。

没有时间分析确切的算法,尽管您可以在