2

我正在运行taskset大量的pid(500+)。总时间为 30s+。有没有一种快速的方法可以将多个 pid 设置为同一个 cpu?并行运行任务集进程并不能大大提高性能。 [1] 谢谢!

[1] 我尝试了&通过 gnu 进行后台处理和并行化parallel

4

1 回答 1

3

在我的计算机上运行taskset单个 pid 需要 2 毫秒。GNU Parallel 的开销为 2-10 毫秒,因此会减慢运行它们的速度。在我的系统上,我可以在 5 秒内运行 500 个任务集:

seq 500 | time parallel taskset -p {} $$

(显然,您需要将输入更改为 PID 而不是掩码,并将命令模板更改为 PID)。

因此,如果您的系统需要> 30 秒才能完成相同操作,我会感到困惑。

如果 5 秒太长,xargs则安全功能较少,但速度更快:

seq 500 | time xargs -P4 -n1 -I{} taskset -p {} $$

如果这仍然太慢,您正在考虑制作自己的 C 程序。

于 2020-01-16T02:41:42.847 回答