是否可以为特定用户设置 CPU 亲和性?

是否可以为特定用户设置 CPU 亲和性?

我的意思是,我们有没有办法为特定用户、他当前正在运行的所有进程或者他稍后将启动的进程设置 CPU 亲和性?

答案1

是的,这是可能的。

我会将用户的流程执行到控制群组由您希望使用的 CPU 核心组成。根据您的 RHEL 版本(5 或 6),您可以通过以下方式使用 CPU 防护罩cpuset/cset或者尝试cgroup 方法EL6 中已记录。后一个示例使用一个/etc/cgrules.conf文件来定义 cgroup 资源的规则(例如,属于杰罗姆将在指定的 cgroup 中运行)。前者允许您直接在 CPU 屏蔽中执行进程。

对于使用的示例cset,我只需为用户执行一个 bash shell 即可进入正确的 CPU 屏蔽。它们的所有子进程都将包含在其中。请参阅这里

答案2

以下小的 bash 脚本将执行此操作:

u=username # do not set this to root!
c=logical processor number you want to bind to
for p in $(pgrep -u $u)
  do
    taskset -cp $c $p
done

绑定进程的子进程将保持与该 CPU 集的绑定。

相关内容