`xargs -P 0` 到底在做什么,使用它是个好主意吗?

`xargs -P 0` 到底在做什么,使用它是个好主意吗?

xargs 提供了一个命令xargs -P 0,文档提到它会生成尽可能多的进程来并行运行命令。但它是否会停止,例如,在可用 CPU 数量或几乎几万个线程时?如果是第二种选择,是不是比围绕 CPU 线程数生成的效率要低?我想在进程之间不断地改变会花费不可忽视的时间,对吗?

答案1

我最终自己做了测试。因此,-P 0尝试同时运行所有进程(限制大约是每个操作系统允许的最大线程数,我认为可能是几千个),但在 CPU 密集型任务上使用它是一个非常糟糕的主意因为这会使系统变得非常慢。

我对大约 200 个pdflatex进程进行了测试,总体运行时间实际上比使用 200 个进程时的进程要长(2:05 分钟而不是 1:10 分钟)-P 16(我猜在进程之间切换的额外时间解释了这一点)。此外,-P 0整个操作系统滞后且难以使用,而-P 16. (我的CPU有8个CPU线程。)

相关内容