可以在 linux 中为每个线程在每个内核上运行的多线程程序设置 cpu 亲和性,从而有效地阻止任何其他进程被该内核上的操作系统调度。实际上,我想保证在我的进程中使用一个核心,并将所有其他非关键程序绑定到最少数量的核心。
或者我是否缺少 linux 调度程序的某些内容,或者我需要自己的调度程序。
可以在 linux 中为每个线程在每个内核上运行的多线程程序设置 cpu 亲和性,从而有效地阻止任何其他进程被该内核上的操作系统调度。实际上,我想保证在我的进程中使用一个核心,并将所有其他非关键程序绑定到最少数量的核心。
或者我是否缺少 linux 调度程序的某些内容,或者我需要自己的调度程序。
可以在 linux 中为多线程程序设置 cpu 亲和性,其中每个线程在每个内核上运行有效地阻止任何其他进程被该内核上的操作系统调度
不,设置 cpu 亲和性会阻止调度程序为您的线程使用一些内核。也就是说,它只会在某些核心上安排你的线程——它不会对其他线程做任何事情。
您可能可以使用setpriority
. 如果您的要求如此严格,您可能会考虑sched_setscheduler
并选择SCHED_RR
or SCHED_FIFO
。
当调度器积极参与时,taskset 和 nice 只会向调度器提示您的偏好。调度程序可以根据工作负载自由地重新调度任何可用内核上的任何线程。您可以使用perf来监控上下文切换和 cpu 迁移。
你有两个选择:
我希望它有所帮助。