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文件的目录,则计算所需的时间将少得多。它计算给定目录中的文件大小,并递归计算每个子目录的文件大小。没有时间分析确切的算法,尽管您可以在