【发布时间】:2012-08-25 04:50:40
【问题描述】:
可能重复:
CPU Affinity
在运行 Linux (fc12) 的 x86 机器上,我可以创建一个进程在多处理器系统的特定内核上运行吗?我知道有一个函数sched_setaffinity 可以帮助选择处理器,但我想在处理器的特定内核上执行该进程。
【问题讨论】:
-
很好奇,这是什么用例?
-
@anio 我认为 sched_setaffinity 用于设置处理器的亲和力,我想设置内核的亲和力
-
“我想使用所有内核以获得更好的性能”——你很可能会得到相反的结果。除非您确切知道自己在做什么,否则不要篡改处理器关联性。最好不要碰它们(唯一允许的例外是在 NUMA 系统上运行多个重量级进程)。操作系统本身将使用多个内核,并且对可以使用哪些内核没有硬性限制,从而总体上提供了更好的资源利用率(如果您担心的话,有一些机制可以防止线程在 CPU 之间无意义地跳动)。
-
@ankur 内核被视为处理器。
-
@taz:我是说在 CPU 空闲时执行代码而不是不执行它更快,更好(很明显)。唯一的问题是缓存不会很热。但是,如果每秒不发生十亿次,这不是问题。例如,默认情况下,Linux 永远不会在 0.5 微秒之后迁移线程,这大约是一百万条左右的指令。这使得缓存效果的影响可以忽略不计,但同时允许线程及时运行,否则它可能不得不等待几毫秒。
标签: linux operating-system multiprocessing