我试图在脚本的开头编写一些代码,以确保脚本中的每个命令都只在几个特定的核心上运行。即使许多命令以多个并行运行,例如: [command] & [command] & [command] & [command] & [command] ,我希望它们只在少数选定的核心上运行。
目前,脚本在启动时会查找自己的 PID,然后将其输入任务集,我告诉它它的 PID 只允许使用核心 1 到 3。
一个示例任务集命令如下所示:
taskset -c 1-3 -p 45678
但是一旦一些并行命令开始,它们每个都会到达那里自己的 PID,并且知道不再局限于分配的内核。
如何确保脚本中的所有内容都保留在所需的核心中?
如果您为调用进程设置 CPU,那么看起来每个子进程都将具有相同的设置。
例如,给定:
使用启动的
screen
会话taskset 4 screen
在会话中,启动了
screen
3 个实例top
当我(在另一个终端)查看
top
实例的状态时:这是完成这项工作的 bash 脚本示例:
结果输出: