适用于 Solaris 2.6 (SPARC 平台版) 的 Solaris Resource Manager 1.0 系统管理指南

CPU 资源管理

对可更新 CPU 服务分配的控制,是借助公平共享调度器进行的。每个lnode 被指派若干的 CPU 份额,这类似于某个公司的股份。与每个 lnode相关联的进程分得与其未使用活动份额的总量成正比的 CPU 资源;这里的活动指的是该 lnode 附加有正在运行的进程。只有活动的 lnode 才考虑为其分配资源,因为只有它们正在运行某一进程并需要 CPU 时间。随着一个进程消耗 CPU 周期,其 lnode 的 CPU 利用率属性也在增加。调度器不断地调整所有进程的优先级,以便使各自级别上的所有活动 lnode 的CPU 利用率相对速率与其 CPU 份额相吻合。这样,就长期而言,用户就至少有望得到其应得的CPU服务,而无论其它的用户的性能如何。调度器是分层结构的,这样就确保组可以独立于各成员的性能而收到组的权利。 Solaris Resource Manager 是一个长期的调度器;它确保所有的用户以及应用程序在"调度器的期限"内收到公平的份额。这意味着,当一个轻的用户开始请求 CPU 时,该用户将相应地收到比重用户多的资源,直到其比较性利用率与其相对的"公平"份额分配取得一致。您超出权力使用得越多,您在将来所能获得的就越少。另外, Solaris Resource Manager 有一个衰变期,由系统管理员设置,忘却过去的利用率。衰变模型属于半衰期类型,即在半个周期内,资源的百分之50发生衰变。这就确保稳定、均匀的用户不会受到短期、进程密集型的用户的不良影响。半衰期对调度器的响应或者"期限"进行设置;默认值为120秒钟。较短的值倾向于在整个系统范围内提供更加均匀的响应,其代价就是在计算和维护全系统的资源分配方面有点不太精确。无论管理设置如何,即使是在极端的情况下,调度器均试图避免孤立(资源饥荒),并确保合理的性能。

Solaris Resource Manager 调度器相对于标准调度器的的主要优势,在于其调度的是用户或者应用程序,而不是单个的进程。与某一 lnode 相关联的每一个进程都要受到一定的限制。在一个用户运行单一活动进程的简单情况下,这与让每个进程受到相对应的 lnode 中所列出的限制的情形一样。当有多于一个的进程附加到 lnode 上时,例如当某个组的成员均各自运行多个进程时,所有的进程作为一个整体,均受到所列出的限制。这意味着,无论当前其所运行的进程的数目,用户或者应用程序无法以超出其权利所允许达到更高的速率消耗 CPU。将权利指派为若干份额的作法,简单而易于理解,且对一个用户的份额进行更改的效果也是可以预测的。

Solaris Resource Manager 从不浪费 CPU 的可用性。无论某个用户的分配所得有多低,如果没有竞争用户的话,该用户就总能得到可用 CPU 的全部。其后果之一就是用户可能会注意到性能没有以前那样流畅了。如果某个拥有很低的有效份额的用户正在没有竞争的情况下运行一个交互式的进程,则看起来运行得很快。但是,一旦其他某个拥有较高有效份额的用户要求得到一些 CPU 时间,则会优先于第一个用户而给予该用户,因而第一个用户会注意到其工作速度明显减慢。但是, Solaris Resource Manager 会采取某些措施,以确保合法用户没有因遭到孤立而完全无法工作。 Solaris Resource Manager 所调度的所有进程(带有最大 nice 值的进程除外),将由调度器经常性地进行 CPU 分配。另外还有逻辑,用于防止某个刚刚登录的新用户获得算术上"公平"但是比例过大的 CPU,从而避免现有用户受损。