【问题标题】:gzip on multiple cores with pv progression bargzip 在多核上使用 pv 进度条
【发布时间】:2018-08-26 09:50:56
【问题描述】:

根据这个 2010 年的问题 Gzip with all cores,我想使用多核 gzip 文件并使用 pv 工具指示进度条。

如何改进此代码?

CORES=$(grep -c '^processor' /proc/cpuinfo)
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9

我想显示剩余时间并显示并行运行的进度条。

截至 2018 年,您还有其他最佳选择吗?

谢谢。

【问题讨论】:

  • 使用参数-c-N 可以让多个管道视图并行运行。在任何情况下,您都没有在所有内核上运行 gzip。您正在运行许多 gzip,每个内核中都有一个。要在多核中运行 gzip 算法,请使用 pigz

标签: bash gzip xargs pv


【解决方案1】:

使用具有进度条或etaGNU Parallel

find ... -print0 | parallel -0 --progress gzip -9 {}

或者

find ... -print0 | parallel -0 --eta ...

或者

find ... -print0 | parallel -0 --bar ...

【讨论】:

  • 这也是我的首选解决方案。提示如果您正在使用 CPU 密集型的所有内核,例如 gzip -9,您可能需要 nice 一些东西。您可以在gzip 之前或者在parallel 之前直接添加nice -n10,并且所有子pid 都继承了并行的优点。或者,您可以使用比具有parallel -j$(($(nproc)-1)) 的内核少一个线程并行运行,从而牺牲一点吞吐量。我只是更喜欢niceing 方法,因此您可以充分利用空闲资源,但在正常任务需要 CPU 时间时让步。
【解决方案2】:

您实际上并不是在多个内核上运行 gzip,而是在运行多个 gzip。

pv 在管道上运行。我不相信它可以同时在多个管道上运行并提供所有管道的摘要。

【讨论】:

  • 我正在使用 htop 跟踪 CPU 条的进度,但它不提供 pv 提供的视觉反馈
猜你喜欢
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
相关资源
最近更新 更多