我有一个主线程M和几个工作线程W1,W2,...,Wn,其中N是多个核心 - 1.主线程M具有默认优先级,工作线程具有5 + i的良好值/ N * 15.例如,当N = 4时,工人将有5,10,15,20。
当只有一个进程在运行时,每个线程(一个主线程和4个工作线程)很好地占用一个内核并使用100%;因此加起来高达500%。
多个时,例如2,进程正在运行,两个进程的所有线程很好地共享cpu利用率。主线程占100%,工作线程约占50%,40%,10%,5%;总计高达600%左右。
这肯定是默认调度的预期行为,但我想更改此行为以严格优先于优先级较高的工作者而不是优先级较低的工作者。由于工人线程'局部变量非常大,我希望更高优先级的工作人员尽可能地运行并重用它们。也就是说,期望的行为是主要的100%,工人的100%,工人的100%2,工人3的20%(或0到100%之间),工人4的0%等等,...当3个核心可用时。
我认为我需要更改调度策略,可能不是SCHED_RR。在不影响其他工作的情况下,哪种政策最适合这一流程?