是否可以使用SCHED_FIFO进程"挂起"Linux盒子?

Pab*_*nio 4 linux scheduling real-time process linux-kernel

我希望有一个实时的过程接管我的电脑.:)

我一直在玩这个.我创建了一个基本上是一个进程while (1)(从不阻塞也不会产生处理器)并用于schedtool运行SCHED_FIFO策略(也尝试过chrt).但是,该过程也允许其他进程运行.

然后有人告诉我关于sched_rt_runtime_ussched_rt_period_us.所以我将运行时设置-1为使实时进程接管处理器(并尝试使两个值相同),但它也不起作用.

我在Linux 2.6.27-16服务器上,只有一个CPU的虚拟机.我究竟做错了什么?

谢谢,

编辑:我不想要一个叉炸弹.我只想让一个进程永远运行,而不让其他进程运行.

Pab*_*nio 5

还有另一种我不知道的保护措施.

如果你只有一个处理器并想要一个SCHED_FIFO像这样的进程(一个永远不会阻塞也不会自动生成处理器)来独占它,除了给它一个高优先级(在大多数情况下不是必需的,但不会受到伤害)你必须:

  1. 设置sched_rt_runtime_us-1或中的值sched_rt_period_us
  2. 如果已配置组调度,请设置/cgroup/cpu.rt_runtime_us-1(如果您安装了cgroup文件系统/cgroup)

显然,我已经配置了组调度,并没有绕过最后一次保护.

如果你有N处理器,并希望你的N进程独占处理器,你只需要做同样的事情,但是从你的shell启动所有这些(shell应该不会被卡住,直到你启动最后一个,因为它将有运行的处理器).如果您想确定每个进程将转到不同的处理器,请相应地设置其CPU关联.

感谢大家的回复.