我的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工作后更新结果。
答案 0 :(得分:1)
该计划' schedtool'可能有帮助,它可以限制在指定的cpu上运行的进程。 根据该实用程序的帮助。 设置流程'仅与第一个CPU(CPU0)的亲和性: #> schedtool -a 0x1 根据您的具体要求替换参数0x1和PID。