(在最近的Ubuntu linux上运行......)
所以我有一个多线程程序,我希望获得可靠的时序数。我可以使用sched_setaffinity以我喜欢的方式将每个线程固定到特定的核心(例如,所有在同一个套接字上)。
但是我担心系统中的其他进程会在这些CPU上进行调度并取代我的代码......我需要高度准确的数字。此外,系统有超线程处理器,如果我在核心0上有一个线程,我不想让任何人安排核心0的超线程兄弟。有没有办法告诉内核“除了这套处理器允许这个进程外什么都没有?”
一个想法是renice -20
,这将使得更有可能没有出现任何问题,至少,但它对超线程兄弟姐妹没有任何作用,我更喜欢让我能够直接控制哪些时间表的地方。< / p>
答案 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调度策略之下。