我如何将stream程转移到核心或将stream程专用于处理器?

我有一个英特尔E5620处理器。 我用cat /proc/[pid]/stat来确定上次运行的进程(第39个字段)。 我如何确保一个进程专用于一个处理器(我有8个可用)或更好,我怎样才能把一个进程专用于一个核心(我有4个)?

根据你对MikeyB的回答的评论,你试图解决这个错误的方式恕我直言 –

numactltaskset都会将你的进程locking到一个CPU上,但是他们不会把这个CPU的其他进程closures。
如果有其他人在你的进程需要它的CPU上,你将不得不等待。

一个更好的解决scheme是设置你的进程的价值很高的东西,会导致它积极抢夺他的CPU(如-20),如果这还不足以使用rtprio您的进程realtime priority 级 ,让调度程序必须确保您的进程在请求时始终拥有CPU周期。

正如MikeyB指出的那样,试图智能调度程序通常是一个坏主意。 让它做它devise要做的事情,并要求CPU周期的正确方式( nice值和rtprio )。

numactl允许您将进程绑定到核心或物理CPU,并强制执行内存分配策略。

通常情况下,这是没有必要的。 不要试图超越智能调度器。

如果你已经安装了,你可以使用taskset命令

 taskset -c 2 -p 2345 

在cpu 2上运行进程2345

阅读man taskset – 它拥有你需要的一切

要将进程PID 12345绑定到第一个处理器,请尝试以下操作:

 # taskset -p 0x00000001 12345