最近在玩linux任务调度器。
现在我想了解一下任务调度器的负载均衡机制和CFS算法。首先,我在__schedule()
中找到了功能idle_balance(cpu, rq)
如果当前运行队列为空,则调用它尝试进行一些负载平衡。
然后我又在core.c
中找到了文件中有一个函数scheduler_tick()
这似乎是定期调用的,更新 rq 和其他数据结构,并且还进行负载平衡(调用函数 trigger_load_balance(rq, cpu)
)。我对吗?但是 scheduler_tick()
是如何做到的?工作?计时器在哪里?我知道 CFS 不是基于刻度的。所以可能在启动后创建了一个计时器,它将调用 scheduler_tick()
定期?
这似乎是一个幼稚的问题,但我现在是linux系统的菜鸟。
最佳答案
它是由系统定时器定期生成的中断请求触发的。 1
关于linux - 在linux任务调度程序中,sheduler_tick()在哪里调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172867/