Lines Matching refs:CPU

18 每个CPU有一个“基”调度域(struct sched_domain)。调度域层次结构从基调度域构建而来,可
19 通过->parent指针自下而上遍历。->parent必须以NULL结尾,调度域结构体必须是per-CPU的,
22 每个调度域管辖数个CPU(存储在->span字段中)。一个调度域的span必须是它的子调度域span的
23 超集(如有需求出现,这个限制可以放宽)。CPU i的基调度域必须至少管辖CPU i。每个CPU
24 顶层调度域通常将会管辖系统中的全部CPU,尽管严格来说这不是必须的,假如是这样,会导致某些
25 CPU出现永远不会被指定任务运行的情况,直到允许的CPU掩码被显式设定。调度域的span字段意味
26 着“在这些CPU中做进程负载均衡”。
28 每个调度域必须具有一个或多个CPU调度组(struct sched_group),它们以单向循环链表的形式
29 组织,存储在->groups指针中。这些组的CPU掩码的并集必须和调度域span字段一致。->groups
30 指针指向的这些组包含的CPU,必须被调度域管辖。组包含的是只读数据,被创建之后,可能被多个
31 CPU共享。任意两个组的CPU掩码的交集不一定为空,如果是这种情况,对应调度域的SD_OVERLAP
32 标志位被设置,它管辖的调度组可能不能在多个CPU中共享。
35 管辖的每个CPU的负载之和。仅当组的负载不均衡后,任务才在组之间发生迁移。
37 在kernel/sched/core.c中,trigger_load_balance()在每个CPU上通过scheduler_tick()
42 后一个函数有两个入参:当前CPU的运行队列、它在scheduler_tick()调用时是否空闲。函数会从
43 当前CPU所在的基调度域开始迭代执行,并沿着parent指针链向上进入更高层级的调度域。在迭代
47 起初,load_balance()查找当前调度域中最繁忙的调度组。如果成功,在该调度组管辖的全部CPU
48 的运行队列中找出最繁忙的运行队列。如能找到,对当前的CPU运行队列和新找到的最繁忙运行
49 队列均加锁,并把任务从最繁忙队列中迁移到当前CPU上。被迁移的任务数量等于在先前迭代执行
55 基调度域会管辖CPU层次结构中的第一层。对于超线程(SMT)而言,基调度域将会管辖同一个物理
56 CPU的全部虚拟CPU,每个虚拟CPU对应一个调度组。
58 在SMP中,基调度域的父调度域将会管辖同一个结点中的全部物理CPU,每个调度组对应一个物理CPU
60 CPU掩码对应一个调度组。亦或,你可以使用多级NUMA;举例来说Opteron处理器,可能仅用一个