避免守护进程在专用的cpu核心中运行

时间:2016-10-17 08:34:39

标签: linux linux-kernel

我的linux 3.10.0-327.el7.x86_64中有grub set isolcpus = 2,我想要的是 避免内核调度程序不将任务调度到cpu core 2,然后我有

perf  record -e  sched:sched_switch -C 2  

看看核心2中发生了什么,然后运行我的ap(哪个CPU_SET(2), 和以下命令:

perf report --show-total-period -i perf.data

得到结果:

  48.85%            85  swapper         [kernel.kallsyms]  [k] __schedule
  18.97%            33  kworker/u384:0  [kernel.kallsyms]  [k] __schedule
  11.49%            20  :4594           [kernel.kallsyms]  [k] __schedule
  11.49%            20  smartd          [kernel.kallsyms]  [k] __schedule
   4.60%             8  watchdog/2      [kernel.kallsyms]  [k] __schedule
   3.45%             6  sshd            [kernel.kallsyms]  [k] __schedule
   1.15%             2  kworker/2:2     [kernel.kallsyms]  [k] __schedule

我知道kworker / 2,看门狗/ 2是内务处理任务,线程ID 4594是我用CPU_SET(2)运行我的应用程序,但我确实想避免sshd,在core 2中运行的smartd守护进程,有没有配置文件或方法我可以告诉内核避免在核心2中运行守护进程?!

编辑:

编辑grub后,应该有update-grub命令然后重启, 我将尝试弄清楚如何更新grub,我认为grub配置isolcpus = 2但它尚未启用,我将在我使isolcpus = 2工作后更新结果。

1 个答案:

答案 0 :(得分:1)

该计划' schedtool'可能有帮助,它可以限制在指定的cpu上运行的进程。 根据该实用程序的帮助。  设置流程'仅与第一个CPU(CPU0)的亲和性:  #> schedtool -a 0x1 根据您的具体要求替换参数0x1和PID。