gpt4 book ai didi

linux - 是否可以将具有 SCHED_FIFO 进程的 Linux 机器设置为 "hang"?

转载 作者:IT王子 更新时间:2023-10-29 00:59:33 25 4
gpt4 key购买 nike

我想让一个实时进程接管我的电脑。 :)

我一直在玩这个。我创建了一个本质上是 while (1) 的进程(从不阻塞或产生处理器)并使用 schedtoolSCHED_FIFO 策略运行它(也试过 chrt)。但是,该进程也让其他进程运行。

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

我在 Linux 2.6.27-16-server 上,在只有一个 CPU 的虚拟机中。我做错了什么?

谢谢,

编辑:我不想要 fork 炸弹。我只希望一个进程永远运行,而不让其他进程运行。

最佳答案

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

如果你只有一个处理器并且想要一个像这样的 SCHED_FIFO 进程(一个从不阻塞也不会主动让出处理器的进程)来独占它,除了给它一个高优先级(在大多数情况下并不是真正必要的)例,但不会造成伤害)你必须:

  1. sched_rt_runtime_us 设置为 -1sched_rt_period_us 中的值>
  2. 如果配置了组调度,将/cgroup/cpu.rt_runtime_us设置为-1(以防万一你将 cgroup 文件系统挂载到 /cgroup)

显然,我配置了组调度并且没有绕过最后的保护。

如果您有 N 个处理器,并希望您的 N 个进程独占处理器,您只需执行相同的操作,但从您的 shell 中启动它们(shell 应该在你启动最后一个之前不会卡住,因为它有处理器可以运行)。如果您想真正确定每个进程都将转到不同的处理器,请相应地设置其 CPU 亲和性。

感谢大家的回复。

关于linux - 是否可以将具有 SCHED_FIFO 进程的 Linux 机器设置为 "hang"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com