- 论坛徽章:
- 0
|
本帖最后由 l4rmbr 于 2015-08-26 18:40 编辑
回复 1# liglei
先给你举个例子。中央有某个政策要下发到地方去试点执行,它只要把该文件下发到各省级行政单位就行了。
问题是,省级行政单位体量可有差别啊。像上海,是省级行政单位,但也是一个城市;像河北省,是省级行政单位,
它下面还有多个城市。但中央不管,对它来说,它只要(也只能,要不要你地方政府何用?)把该文件下发到各省级
行政单位就行了。对上海来说,就简单了,就在上海市区试点运行;对河北省来说,它要选择一个城市来试点。
如果是要在县一级试点呢,那就是上面的过程,在进一步在县级选择。
组调度的情况下, rq 上看到的是 sched_entity, 这个 entity 可能是单个进程, 也可能是一个进程组(包含多个进程)。
但 rq 不管,它只有 sched_entity 这一个整体概念, 对它来说, 它要在它看到的队列(即 rq->cfq) 选定某个 sched_entity 来运行;
而真正能在 CPU 上运行的,是单个进程,所以,如果 sched_entity 是单个进程,那么搞定,就是这个进程;
如果 sched_entity 是个进程组,要在进程组中选择,这个选择是进程组内部的行为了。 所以, 对于进程组来说,它又有一级cfq,
要在这一级 cfq 上选一个 sched_entity. 假设此时, sched_entity 是一个进程,那么搞定;否则,继续递归下去。
所以,在没有组调度的情况下, 所有 sched_entity 都是进程; 在有组调度的情况下,存在层级,所以有多层cfq.
|
|