Linux中的任务计划程序和CPU隔离

时间:2019-01-29 12:49:26

标签: linux linux-kernel scheduler

我是一个包括调度程序在内的内核菜鸟。我知道这里有一个IO调度程序和一个任务调度程序,根据post IO调度程序使用正常的任务,这些任务最终由任务调度程序处理。

  
      
  1. 因此,如果我运行分配给隔离内核的用户空间线程(使用isolcpus),它将执行一些IO操作,   IO调度程序创建的任务是否在隔离的内核上执行?
  2.   
  3. 由于CFS似乎支持用户交互,这是否意味着从长远来看,CPU密集型线程可能会减少CPU时间?   隔离内核可以帮助缓解此问题?
  4.   
  5. 隔离内核可以减少调度延迟(用于标记为可运行的线程被执行所需的时间)   固定在隔离核心上的线程是什么?
  6.   

1 个答案:

答案 0 :(得分:1)

  

因此,如果我运行分配给隔离内核的用户空间线程   (使用isolcpus),它将执行一些IO操作,将任务   由IO调度程序创建的代码是否可以在隔离的内核上执行?

isolcpus的工作是将特定的内核从cpu的内核列表中删除,以便在该内核中调度任务。因此,一旦您将CPU从内核的cpus列表中隔离出来,它将永远不会在该内核上调度任何任务,无论该内核是空闲的还是正在由其他进程/线程使用。

  

由于CFS似乎更喜欢用户交互,这是否意味着CPU   从长远来看,密集线程可能会减少CPU时间吗?   隔离内核可以帮助缓解此问题?

在我看来,隔离cpu的用途完全不同。基本上,如果您的应用程序同时具有快速线程(不带系统调用的线程,并且对延迟敏感)和慢速线程(带系统调用的线程),则需要为快速线程使用专用的cpu内核,以使它们不会因内核调度而中断流程,因此可以毫无噪音地运行到完成。快速线程通常对延迟敏感。另一方面,慢速线程或对延迟不真正敏感并且正在为您的应用程序提供支持逻辑的线程不需要专用的CPU内核。如前所述,分配CPU服务器具有不同的用途。我们一直在组织中做所有这一切。

  

隔离内核可以减少调度延迟(花费的时间)   对于标记为可运行以执行的线程)   固定在隔离核心上的线程?

由于您是从内核的cpus列表中获取cpus,所以这肯定会影响其他线程和进程,但是再次,您将需要特别注意和注意延迟敏感代码的真正含义,并希望将其与您的非延迟敏感代码。

希望有帮助。