首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行运行du

并行运行du
EN

Stack Overflow用户
提问于 2014-07-07 08:00:51
回答 3查看 4.1K关注 0票数 14

我有一个很大的存储盘(16T)。我想在上面运行'du‘来计算每个子目录的开销。然而,这需要很长时间。幸运的是,我有一群电脑可供我支配。因此,我可以并行地运行'du‘,每个作业在一个单独的子目录上运行,并编写一个简单的脚本。是不是已经有这样的事情了,还是必须我自己来写?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-26 17:45:58

使用GNU并行操作很简单:

代码语言:javascript
复制
parallel du ::: */*
票数 12
EN

Stack Overflow用户

发布于 2014-07-07 08:18:42

从您的问题中还不清楚您的存储是如何设计的(RAID数组、NAS、NFS或其他东西)。

但是,几乎不管实际技术如何,并行运行du可能不是一个好主意--它很可能实际上会减慢速度。

磁盘阵列的IOPS容量有限,多个du线程都将从该池中取出。更糟糕的是,即使du进程不消耗大量磁盘吞吐量,单个du也会多次减缓任何其他IO操作。

相比之下,如果您只有一个CPU,运行并行make (make -j N)将减慢构建过程,因为进程切换有相当大的开销。

同样的原理也适用于磁盘,尤其是旋转盘。只有当N个驱动器安装在独立的目录中(比如/mnt/disk1/mnt/disk2、.、/mnt/diskN)时,才能获得相当大的速度增长。在这种情况下,您应该在N个线程中运行du,每个磁盘一个线程。

提高du速度的一个常见改进是使用noatime标志挂载磁盘。如果没有此标志,大量磁盘扫描会创建大量的写入活动来更新访问时间。如果使用noatime标志,则可以避免编写活动,而du的工作速度要快得多。

票数 3
EN

Stack Overflow用户

发布于 2017-11-16 16:27:51

是不是已经有这样的事情了,还是必须我自己来写?

我给自己写了sn,但你可能也很感激。

代码语言:javascript
复制
sn p .

将给出当前目录中所有内容的大小。它并行运行,比大型目录上的du更快。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24605656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档