下面几点讲述调度树的结构,这是一个需要中央管理员予以特别考虑的方面:
调度树是 Solaris Resource Manager 对资源和特权实现分层结构控制所使用的结构。如果某一分管理员取得对调度树的某一子树的控制,而其通常又无法对该子树进行访问,则该分管理员未经中央管理员的许可就可以访问更多的资源利用率和特权。其中一个操作方法就是某一管理员删除了某一 lnode,留下一个孤立的子树。分管理员可以在其自己的组重新创建该丢失的 lnode,因 而使之前面控制树中孤立的部分。
中央管理员可以使用 limreport(1SRM)命令,借助内置的孤立识别符来识别调度树中孤立的部分。任何孤立子树一经发现,就立刻得到附加。但是,limreport 命令也可以被分管理员用于发现孤立子树,以便将其添加到自己的组,如上所述。这就为违反安全性提供了可能。
一个新创建的 lnode ,通常是空的,这样就促使大多数的标志默认拥有继承得来的值。对大多数标志来讲,这正是所要的效果。因为上述标志是用来指示设备特权的。在 lnode 创建时就明确加以清除的标志是 uselimadm 和 admin 标志。这是为了防止新的用户自动获得任何的管理特权。
下面所显示的树定义了一个由多个组头目和多个普通用户组成的结构。树的顶层是根用户。一个组头目 lnode 是用两个整数显示的,分别代表的是它的 shares 和 myshares 属性。叶 lnode 是用单个整数显示的,代表的只是其 shares 属性的值。
lnode 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 按比例分享。