如何设置 Linux 调度程序不停止 Linux 进程?

如何设置 Linux 调度程序不停止 Linux 进程?

如果我有一个具有 4 个核心的 CPU(例如,一个 Intel I5)和一个,我需要让一个进程在这些核心中独占运行,而不会被 Linux 调度程序中断,即使是几毫秒。

我需要做什么 ?

为了补充这个问题,我做了一个研究,所以我有一个理论。

  1. 将进程 CPU 亲和力设置为独占我想要的核心。并设置所有其他进程来避开这些核心。
  2. 设置Linux调度程序对进程使用FIFO策略,这意味着进程在释放CPU时不会停止。
  3. 将所有其他进程设置为空闲以避免与 FIFO 策略竞争。
  4. 设置 isolcpus 内核选项以避免内核使用这些 CPU Core。

我不确定是否可以避免进程被停止,因为如果我了解Linux Scheduler,它们的设计就是挂起进程以避免它们独占CPU核心。

这个问题很重要,因为在一些研究和科学应用中需要运行封装实时应用程序的虚拟机,因此如果Linux停止虚拟机来检查进程列表或释放CPU核心给另一个进程,应用程序也将被停止。

答案1

我需要保持一个进程在这些核心中独占运行,而不会被 Linux 调度程序中断,即使是几毫秒。

这是不可能的(对于用户态应用程序)。 Linux(如大多数常用操作系统)使用先发制人调度。

但是,请阅读更多有关实时Linux&泽诺迈

(当然,内核部分往往是不被抢占的,但你不想为了这样的目的而编写内核模块)

在实践中,我确信您将能够配置您的系统,以便抢占对于您的基准测试目标来说可以忽略不计。调度开销可能(或可以配置为)以微秒为单位,而不是毫秒。

(否则放弃使用Linux)

预定(7)

相关内容