首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux cpu_affinity保证单机使用

Linux cpu_affinity保证单机使用
EN

Stack Overflow用户
提问于 2012-06-04 14:32:20
回答 2查看 284关注 0票数 1

可以在linux中为其中每个线程在每个核上运行的多线程程序设置cpu亲和性,从而有效地阻止由该核上的os调度的任何其它进程。实际上,我希望保证我的进程使用一个核心,并将所有其他非关键程序绑定到最少数量的核心。

或者我错过了linux调度器,或者我需要我自己的调度器。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-04 14:38:18

可以在linux中为多线程程序设置cpu亲和性,其中每个线程在每个核心上运行,从而有效地阻止操作系统在该核心上调度任何其他进程。

不可以,设置cpu亲和性可以防止调度程序为您的线程使用某些核心。也就是说,它只会在某些核心上调度你的线程--它不会对其他线程做任何事情。

您可能可以使用setpriority实现您想要的功能。如果您的要求很苛刻,您可以查看sched_setscheduler并选择SCHED_RRSCHED_FIFO

票数 4
EN

Stack Overflow用户

发布于 2012-06-05 02:15:55

当调度程序积极参与时,taskset和nice只会向调度程序提供有关您的首选项的提示。调度器可以根据工作负载自由地重新调度任何可用核心上的任何线程。您可以使用perf来监控上下文切换和cpu迁移。

您有两个选择:

由于cgroup/ sugggested.

  • You可以使用cgroup/
  1. 来定义两个cpuset (比如系统cpuset和隔离cpuset),并通过将所有系统线程移到系统cpuset来隔离目标核心,因此您可以通过sched_setscheduler强制调度程序遵循您的顺序,并在隔离的cpuset上使用cgexec运行您的程序。您可以将内核和内存分配给一个cpuset,为了隔离它,设置cpu_exclusive位,您就都设置好了。如果您正在使用较旧的内核自动执行此过程,您也可以使用cset (http://code.google.com/p/cpuset/)。

我希望它能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10877183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档