Process 在一个cpu上绑定一个进程,并在其他cpu上移动所有IRQ、DEAMIN、rpci

Process 在一个cpu上绑定一个进程,并在其他cpu上移动所有IRQ、DEAMIN、rpci,process,linux-kernel,scheduled-tasks,affinity,Process,Linux Kernel,Scheduled Tasks,Affinity,我有一台16核的Linux机器 // uname -a Linux lndbxdev01 2.6.24.7-108.el5rt #1 SMP PREEMPT RT Mon Mar 23 10:58:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux // OS detail Red Hat Enterprise Linux Server release 5.3 (Tikanga) 我想安排进程关联,以便1个CPU 完全致力于1个过程 当我说完全专注的时候,

我有一台16核的Linux机器

// uname -a
Linux lndbxdev01 2.6.24.7-108.el5rt #1 SMP PREEMPT RT 
Mon Mar 23 10:58:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

// OS detail
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
我想安排进程关联,以便1个CPU 完全致力于1个过程

当我说完全专注的时候,我的意思是我真的想被束缚 所有CPU的任何其他正在运行的deamons、
IRQ nnnn、rpciod/nn等
除了我的流程感兴趣的一个。
(在我的操作系统上,我可以计算大约500个进程)

  • 这样做是安全的,还是我应该让它们中的一些放在当前运行的CPU上
  • 如果我至少绑定IRQ,性能会更好吗
  • 由于它们与频繁触发的中断相连接, 它们导致频繁的进程上下文切换,因为内核必须调用它们

    我期待以下好处:

  • 因为只有一个进程运行一个CPU 根本不会有进程上下文切换
  • 分配给该CPU上进程的时间片 将增加,以便在流程上下文切换(如果有)之前运行更长时间
  • 问候
    AFG

    我想cpusets可以帮助你克服这个问题。您可以为其中一个CPU定义专用cpuset,并将进程绑定到该特定cpuset

    您可能会发现cset非常有用:

    如果您不愿意使用它们中的任何一个,那么您需要编写自己的c代码来调度特定cpu上的进程(使用sched_setaffinity)并禁用该特定cpu上的所有中断

    我希望有帮助