Linux调度程序会抢占低优先级线程太长时间

时间:2013-06-19 16:18:03

标签: linux arm scheduler thread-priority

我正在开发一个多进程应用程序,它运行在运行linux 3.0.35的iMX6四核CPU上。 我正在运行的其中一个进程/线程需要比其他进程/线程更高的优先级。

所以我对那个线程使用SCHED_FIFO,为其他线程使用SCHED_OTHER。

虽然机器负载很重,但我注意到以下情况(使用DS5 Streamline分析工具):

  • 低优先级线程被CPU上的高优先级线程抢占 X
  • 当高优先级线程在CPU x中时,其他低优先级线程在其他CPU上获得CPU时间。但不是原始线程 - 它不会在很长时间内(甚至几秒钟)获得CPU时间
  • 当使用CPU x完成高优先级线程时,即使机器负载很重(10多个线程需要CPU),CPU仍然长时间保持IDLE(最多2秒)(CPU为在分析工具中标记为IDLE)

我正在寻找理解这意味着什么的方法   - linux调度程序是否应该在被抢出CPU x之后给予抢占线程CPU时间?   - 即使有许多线程需要CPU时间,CPU如何空闲这么长时间?

我在看什么?

如果有帮助的话,我可以完全访问内核代码和一些更多的分析工具。

谢谢, 奥弗

0 个答案:

没有答案