如果我有一个具有 4 个核心的 CPU(例如,一个 Intel I5)和一个,我需要让一个进程在这些核心中独占运行,而不会被 Linux 调度程序中断,即使是几毫秒。
我需要做什么 ?
为了补充这个问题,我做了一个研究,所以我有一个理论。
- 将进程 CPU 亲和力设置为独占我想要的核心。并设置所有其他进程来避开这些核心。
- 设置Linux调度程序对进程使用FIFO策略,这意味着进程在释放CPU时不会停止。
- 将所有其他进程设置为空闲以避免与 FIFO 策略竞争。
- 设置 isolcpus 内核选项以避免内核使用这些 CPU Core。
我不确定是否可以避免进程被停止,因为如果我了解Linux Scheduler,它们的设计就是挂起进程以避免它们独占CPU核心。
这个问题很重要,因为在一些研究和科学应用中需要运行封装实时应用程序的虚拟机,因此如果Linux停止虚拟机来检查进程列表或释放CPU核心给另一个进程,应用程序也将被停止。