限制CPU调度

时间:2011-03-31 21:03:30

标签: linux scheduling

(在最近的Ubuntu linux上运行......)

所以我有一个多线程程序,我希望获得可靠的时序数。我可以使用sched_setaffinity以我喜欢的方式将每个线程固定到特定的核心(例如,所有在同一个套接字上)。

但是我担心系统中的其他进程会在这些CPU上进行调度并取代我的代码......我需要高度准确的数字。此外,系统有超线程处理器,如果我在核心0上有一个线程,我不想让任何人安排核心0的超线程兄弟。有没有办法告诉内核“除了这套处理器允许这个进程外什么都没有?”

一个想法是renice -20,这将使得更有可能没有出现任何问题,至少,但它对超线程兄弟姐妹没有任何作用,我更喜欢让我能够直接控制哪些时间表的地方。< / p>

3 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是Linux内核的control groups系统,更具体地说是它的cpusets子系统。它允许您使用特定的CPU(或其时间百分比)来执行特定任务。

答案 1 :(得分:1)

Boot your Ubuntu machine into single-user mode。那么你可以保证当时没有其他任何东西在运行。

如果您的程序需要其他系统服务,那么这将无效。

答案 2 :(得分:0)

如果您确实想要给予流程绝对优先权,您可以使用sched_setscheduler()将其置于SCHED_FIFO vs SCHED_RR调度策略之下。