在大量进程上设置进程亲和性

Set the process affinity on a large number of processes

我 运行宁 taskset 大量的 pids (500+)。总时间30s+。有没有一种快速的方法可以将许多 pid 设置为相同的 cpu?对于 运行 任务集并行处理,它并没有提高多少性能。[1]谢谢!

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

进行并行化

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

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

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

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

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

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

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