【问题标题】:How to choose a processor in Linux? [closed]如何在 Linux 中选择处理器? [关闭]
【发布时间】:2013-09-03 06:12:42
【问题描述】:

我正在使用具有 n 个处理器(/proc/cpuinfo 列出的 15 个)的 Linux 计算机 (Ubuntu)。我必须运行多个应用程序,并希望在每个处理器中运行一个。有没有办法为每个应用程序分配一个处理器,或者它是 Linux 自动执行的?

非常感谢

【问题讨论】:

  • 15 是一个有趣的 CPU 数量,你确定不是 16 吗?
  • 你最好让内核为每个进程选择处理器(实际上是内核)。实际上,内核会(随意)将进程从一个内核迁移到另一个内核。
  • 你为什么要问? Linux 的默认行为到底是什么让你不满意???
  • @cnicutar:你说得对,我有 16 个核心。
  • @BasileStarynkevitch 我正在计时几种算法,并希望节省时间并将它们中的每一个分配给并行处理器。不过知道内核会随意迁移进程真的很有帮助,谢谢!

标签: linux unix ubuntu terminal


【解决方案1】:

您要查找的内容称为affinity

Linux 应该已经自行处理了这个问题,但是有一些方法可以更改进程的亲和性 (sched_setaffinity) 以及命令行工具 taskset(1)

taskset 用于设置或检索某个任务的 CPU 亲和性 运行进程给定它的 PID 或启动一个新的命令 给定 CPU 亲和性。

使用taskset,您可以启动一个只能在您指定的内核上运行的进程。


我不完全确定它们是完成这项工作的最佳工具,但您可能还想调查cgroups。我几乎可以肯定它们还允许在某些 CPU 上固定进程。

【讨论】:

  • 其实你应该避免使用sched_setaffinity,除非你有很好的理由。在实践中,内核会很好地将任务分配给处理器。
  • @BasileStarynkevitch 我完全同意。调度器已经做得很好了。
  • @cnicutar 谢谢!这已经足够有用了!
猜你喜欢
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2019-08-20
  • 1970-01-01
  • 2014-06-24
相关资源
最近更新 更多