以下要点是关于调度树的结构的,这是要求中央管理员特别考虑的一个方面:
调度树就是被 Solaris Resource Manager 用来实施资源的分层结构和特权控制的结构。如果某个次级管理员获得了对该次级管理员一般不能访问的调度树的一个子树的控制,则该次级管理员无需中央管理员的许可就能获得对附加资源利用率和特权的访问权。发生这种情况的一种方式就是某个管理员删除了一个 lnode,但留下一个被孤立的子树。
中央管理员可使用 limreport(1SRM) 命令并通过采用内置孤立标识符辨别调度树的孤立部分。发现的任何孤立都必须立即重新附加。
当创建了一个新的 lnode 时,它大多是填充为零,这样就使多数标志具有 inherit 的缺省值。这对于多数标志来说都是期望的效果,因为它们被用于表示设备特权。有两种标志是在创建 lnode 是公开清空的,即 - uselimadm 和 admin 标志。这样就能防止新的用户自动获得任何管理特权。
下面所示的树定义了包括若干组长和若干一般用户的结构。该树的顶部就是 root 用户。组长 lnode 采用两个整数表示,分别表示其 cpu.shares 和 cpu.myshares 属性的值。leaf lnode 采用一个整数表示,只表示其 cpu.shares 属性的值。
利用前面的示意图作为例子,节点 A、C 和 N 目前有附加在其上的进程。在最顶层,CPU 只需在 A 和 M 之间共享,因为没有针对 W 或调度组 W 的任何成员的进程。A 和 M 之间份额的比例为 3:1,所以最顶层的已分配份额对于组 A 为百分之 75,而对于组 M 则为百分之 25。
分配给 A 组的百分之 75 又会由其活动用户(A 和 C)分享,比率为其在 A 组中的份额(即 1:2)。注意,确定 A 的相对于其子用户的份额时使用的是 myshares 属性。A 因而获得组所分配的份额的三分之一,而 C 获得其余的三分之二。为 M 组分配的份额全部归于 lnode N,因为它是唯一带有进程的 lnode。
可用 CPU 的已分配份额的整体分配因此为:A 是0.25,C 是 0.5,而 N 是 0.25。
请进一步设想 A、C 和 N 进程都不断地要求得到 CPU,而系统最多只有两个 CPU。这样,Solaris Resource Manager 就对三方进行调度,以使单个的进程获得整个可用 CPU 的上述的百分比:
对于两个 A 进程:每个为百分之 12.5
对于 C 进程:百分之 50
对于三个 N 进程:每个为百分之 8.3
单个进程的进度速率得到控制,以满足每个 lnode 的目标。在拥有两个以上 CPU 和唯独这六个可运行进程的系统上,C 进程将无法消耗其百分之 50 的权利,剩余权利由 A 和 N 按比例分享。