有什么方法可以阻止linux内核将线程迁移到其他cpu上

jrw*_*jrw 5 pthreads linux-kernel

有没有办法阻止linux内核将线程迁移到其他cpu上?使用 hwloc(它又使用 pthread_setaffinity_np),我将线程绑定到内核。然而,有时我看到内核启动了昂贵的迁移任务。有什么办法可以阻止内核这样做吗?我没有在 hwloc / pthreads 库中找到任何标志,也没有将 kernel/sched_nr_migrate 设置为 0 导致所需的行为。任何建议都将受到高度赞赏。谢谢

Mik*_*ord 1

您可以设置进程(而不是线程)的 CPU 亲和力,据我了解,内核将尽力尊重这一点。如果您希望特定进程生成的所有线程都在同一 CPU 上运行,那么这是一个可接受的解决方案。

以下是 IBM 的一篇文章,提供了一些额外的背景知识和特定的系统调用:

http://www.ibm.com/developerworks/library/l-affinity/index.html