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

技术描述

每个 lnode 有四个与 Solaris Resource Manager 调度器相关联的属性:cpu.sharescpu.mysharescpu.usage 以及 cpu.accrueliminfo(1SRM)的输出所显示的是这些属性以及其它有用的值。

Solaris Resource Manager 调度是借助 SHR 调度类加以实现的。其中包含对dispadmin(1M)priocntl(1)nice(1)以及 renice(1)命令的支持,在系统调用层,SHR 与 TS 调度类兼容。

份额

用户的 cpu.shares 属性用于相对于用户的父节点和活动的同级用户,分配 CPU 权利。用户的 cpu.myshares 属性只在用户拥有活动的子用户时才有意义;用于相对于这些子用户,确定 CPU 权利的比例。

例如,如果用户 A 和 B 是父节点 P 的唯一的两个子用户,则A、B 和 P 每个均拥有组 P 内的一个份额(即,A 和 B 的 cpu.shares 设置为1,而 P 的 cpu.myshares设置为1),因而三方各自均拥有合组的权利合计之三分之一的 CPU 权利。

这样,某一用户的实际 CPU 权利取决于其父节点的相对权利。而后者又取决于父节点相对于父节点的同级用户以及相对于祖父节点的 cpu.myshares 的父节点的 cpu.shares 相对值,依此在调度树往上类推。

出于系统管理的原因,附加到根 lnode 的进程并不受制于份额属性。任何附加到根 lnode 的进程如果要求的话,总是被给予几乎全部的 CPU 资源。

没有将任何 CPU 密集型的进程附加到根 lnode 这一点很重要,否则其它进程的执行会收到严重影响。为了加以避免,应当注意下列事项:

并不是所有的调度树中的组头目都必须代表正在运行进程的实际用户,因而在这种情形下,就没有必要向它们分配 CPU 份额。可以通过将其 cpu.myshares 属性设置为零来指示此类 lnode。此类组头目中的 CPU 应计属性仍旧包含对其组内所有成员所征的收费。

已分配份额

cpu.shares cpu.myshares 属性用于确定每个活动 lnode 的当前分配的 CPU 份额,形式是一个百分比。非活动用户的已分配份额对已分配份额没有任何区别。如果只有一个用户在活动,则该用户将拥有百分之100的可用 CPU 资源。如果只有同一组内份额相等的两个用户在活动,则每个用户将分得百分之50的份额。请参考 "已分配份额的计算",了解更多有关已分配份额的计算方法的信息。

利用率和衰变

每为一个 CPU 周期而对附加到 lnode 的某个进程进行收费时,cpu.usage的属性就随之增加。利用率属性值呈指数性衰变,其速率由利用率衰变的全局 Solaris Resource Manager 参数确定。利用率衰变速率(以半衰期形式以秒钟为单位加以描述)是由 srmadm(1MSRM)命令加以设置的。

尽管所有的进程都拥有一个 lnode,无论其当前的调度类如何,但从来不对 SHR 调度类之外的进程进行收费。

应计利用率

应计利用率属性的增加数量与利用率属性相同,但从不衰变。因此它代表的是从上次属性复位以来附加到 lnode 及其成员的所有进程的累计利用率总额。

有效份额

某一 lnode 的已分配份额,与其 cpu.usage 属性一起,就确定了它的当前有效份额。 Solaris Resource Manager 调度器对附加到某一 lnode 的所有进程的优先权进行调整,使其工作速率与 lnode 的有效份额成正比,与附加到该 lnode 的可运行进程的数目成反比。

每一进程份额优先权(sharepri

每个附加到某一 lnode 的进程,均拥有内部的针对 Solaris Resource Manager 的数据,由操作系统核心为其进行维护。对于调度来讲,这些值中最为重要的是sharepri 值。在任何时候,sharepri 值最低的进程,将最有权得到调度,运行于某一 CPU。