Process 在一个cpu上绑定一个进程,并在其他cpu上移动所有IRQ、DEAMIN、rpci
我有一台16核的Linux机器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个过程 当我说完全专注的时候,
// 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上的所有中断
我希望有帮助