Solaris Resource Manager 1.3 系统管理指南

资源控制

Solaris Resource Manager 软件可对以下系统资源进行控制:CPU(处理器速率)利用率、虚拟内存、物理内存(仅限于 Solaris 8)、进程数目、一个用户和/或一个调度组同时登录的数目,以及终端连接时间。

表 2-1 Solaris Resource Manager 功能

系统 

资源 

分配 

政策 

控制 

测量 

利用率数据 

CPU 利用率 

是 

(每个用户 ID) 

是 

是 

(每个用户 ID) 

是 

虚拟内存 

是 

(每个用户及每个进程) 

是 

(每个用户及每个进程) 

是 

(每个用户及每个进程) 

是 

物理内存(仅限于 Solaris 8) 

是 

是 

是 

是 

进程数目 

是 

是 

是 

是 

用户/调度组登录 

是 

是 

是 

是 

连接时间 

是 

是 

是 

是 

 

 

 

 

 

Solaris Resource Manager 可对每个用户的每个资源利用率进行跟踪。它可硬性限制除 CPU 以外的所有资源的使用率。如果用户使利用率达到限制,则硬限制会造成资源耗用尝试失败。硬限制是由内核或负责管理相应资源的软件直接强制执行的。

限制值为零表示没有限制。root lnode 的所有限制属性都应设定为零。

一般地,所有系统资源都应划分为以下两类之一:固定(不可更新)资源可更新资源。但是,在 Solaris 8 环境下的 Solaris Resource Manager 1.3 中,还有第三类:软限制。驻留大小 (RSS) 软限制由资源上限执行守护程序间接强制执行,意味着利用率可以临时超过此限制。有关详情,请参阅 第 8 章,使用资源上限守护程序管理物理内存

Solaris Resource Manager 不同地管理固定资源和可更新资源。

固定资源

固定资源或不可更新资源就是数量有限的资源。例如,虚拟内存、进程数目、一个用户和/或一个调度组的同时登录,以及连接时间。固定资源可以耗用(分配)和放弃(撤消分配),但在所有者撤消分配固定资源之前,其它实体不能使用该资源。Solaris Resource Manager 采用利用率和限制模型来控制固定资源的使用量。利用率 定义为当前正在使用的资源,限制是指 Solaris Resource Manager 允许的利用率最大水平。

可更新资源

可更新资源就是可连续供应的资源(如 CPU 时间)。可更新资源只能耗用,一旦耗用,就不能重新获得。可更新资源在任何时间都是有限可用的,如果在该时间没有使用,则不再可用。(一个恰当的比喻就是阳光。在任何给定时刻,来自太阳的光能都只有特定数量,但在今后几百万年里肯定会有更多光能辐射到地球。)因此,可更新资源无需公开重新分配即可重新指定给其他用户,从而确保没有浪费。

Solaris Resource Manager 采用利用率、限制和衰减速率来控制用户对可更新资源的耗用速率。利用率定义为所使用的总资源,并设定利用率与组中其他用户对比的限制。 衰减率是指历史利用率被折算的时期。下一个资源份额(如时钟信号)将被分配给相对其分配的份额具有最低衰减总利用率数值的活动 lnode。衰减利用率值可计算为:单位时间的总利用率与由半衰期模型确定的历史利用率的一部分之差。

CPU 资源管理

可更新 CPU 资源的分配通过一种被称作 Solaris Resource Manager SHR 调度程序的公平份额调度程序进行控制。

调度程序方法

每个 lnode 均被分配一定数量的 CPU 份额。根据未决活动份额(活动是指 lnode 附加了正在运行的进程)的总数,按比例将与每个 lnode 相关联的进程分配给 CPU 资源。在分配资源时只考虑活动 lnode,因为只有它们才有正在运行的活动进程,并需要 CPU 时间。

当某个进程耗用 CPU 资源时,其 lnode 的 CPU 利用率属性就会增加。调度程序可定期调节所有进程的优先权,以强制 CPU 利用率的相对比率,将 CPU 份额的相对比率集中在各级别的所有活动 lnode 上。这样,用户至少可以期望最后总能获得使用 CPU 服务的授权,而无需考虑其他用户的行为。

该调度程序采用分层结构,因为它还能确保各组无需考虑其成员的行为而接收组授权。Solaris Resource Manager SHR 调度程序是一种长期运行的调度程序;它可确保所有用户和应用程序都能在该调度程序运行期间接收到公平的份额。这意味着,当一个小负荷用户开始请求 CPU 时,该用户就会收到比大负荷用户更多的资源,直到二者的相对利用率与其相对“公平”份额的分配比率相当为止。所以,您现在对自己的授权使用的越多,将来能使用的授权就越少。

此外,Solaris Resource Manager 有一个由系统管理员设定的、不跟踪过去利用率的衰减期。衰减模型是半衰期模型之一,即在寿命达到一半时有 50% 的资源已经衰减。这就能确保稳定而平均的用户不会受到短期且与进程密切相关的用户的惩罚。半衰期设定了调度程序的响应模式或期限;缺省值为 120 秒钟。长半衰期对较长的批任务等平均利用率更有益,而短半衰期则对交互用户更有益。较短的数值可在系统上产生更平均的响应,但是在系统内资源分配的计算和维护方面精度较低。无论管理设置如何,调度程序都会尝试防止资源缺乏,并确保甚至在极端条件下的合理行为。

调度程序优点

Solaris Resource Manager SHR 调度程序相对于标准 Solaris 调度程序的主要优点在于,它是对用户或应用程序而非个别进程进行调度。与 lnode 相关联的每个进程都受到一组限制的制约。对于运行一个活动进程的单个用户的简单情形来说,这就相当于使每个进程都受到相应 lnode 中所列出的限制的制约。当有多个进程附加到一个 lnode 上时,如运行多个进程的组中的成员,则所有进程都受到列出的限制的制约。这样,用户或应用程序耗用的 CPU 不能超过其授权允许的范围,无论他们运行多少个并发进程。以份额数目对授权进行分配的方法既简单又容易理解,而更改某个用户的份额所造成的影响也是可以预测的。

SHR 调度程序的另一个优点就是,在管理各个线程的调度(从技术上看,在 Solaris 中被调度的实体是一个轻量进程 (LWP))的同时,可以在用户之间按比例分配 CPU 资源。

这些概念可通过以下方程进行阐述:

方程显示,新的 Solaris Resource Manager 优先权等于当前优先权加上份额数与 CPU 利用率之商。

然后,new_SRM_priority 被映射到系统优先权。Solaris Resource Manager 优先权越高,系统优先权就越低,反之亦然。 CPU_usage 等每个衰减期都减少一半,并以最当前的利用率递增。

每个用户还有一组标志,这些标志是类似布尔的变量,可用于启用或禁用所选择的系统优先权(如登录)。这些标志可针对每个用户分别设定,也可从一个父节点 lnode 中继承而来。

某个用户的利用率、限制和标志可被任何用户阅读,但只能由有正确管理优先权的用户修改。

消除 CPU 浪费

Solaris Resource Manager 从不浪费 CPU 可用性。无论某个用户的分配有多低,只要没有竞争用户,他就能使用所有可用 CPU。这样做的一种结果就是,用户可能会注意到性能不象通常那样平稳。如果某个具有非常低的 有效份额的用户正在没有竞争的条件下运行一个交互进程,则任务看起来会运行的很快。但是,只要有更高有效份额的另一个用户请求 CPU 时间,则该用户就能得到比第一个用户更高的优先权,这样,第一个用户就会注意到任务执行的速度明显放慢。尽管如此,Solaris Resource Manager 仍会继续运行一段时间,以确保合法用户不会被断开,而无法进行任何工作。由 Solaris Resource Manager 调度的所有进程(具有最大 nice 数值的进程除外)都将由该调度程序定时分配 CPU。另外,还有一种逻辑算法可预防刚刚登录的新用户被分配到从数学上看似“公平”,但实际上过多的 CPU 份额,并对现有用户产生影响。

虚拟内存(针对每个用户和每个进程的限制)

虚拟内存使用固定资源模型进行管理。虚拟内存限制应用于所有附加到 lnode 的进程的内存大小的总和。另外,也有针对每个进程的虚拟内存限制,用于对进程的虚拟地址空间大小的总额加以限制,其中包括所有的代码、数据、堆栈、文件映射以及共享库。两种限制都是分层结构的。限制虚拟内存有助于避免虚拟内存缺乏。例如,对于因消耗未经授权数量的虚拟内存而使内存流失和所有用户受损的应用程序,Solaris Resource Manager 将予以终止。此类进程只会使其自身的资源缺乏,或者更糟的话,也使其资源组内其它进程的资源缺乏。

物理内存

如果在 Solaris 8 操作环境中使用的是 Solaris Resource Manager 1.3,则可以按附加至 lnode 或项目的进程集合来规定物理内存的资源消耗。有关此功能的详情,请参阅 第 8 章,使用资源上限守护程序管理物理内存

进程数目

用户可以同时运行的进程的数目是借助一种带有分层结构限制的固定资源模型加以控制的。

终端与登录连接时间限制

系统管理员和组长可设置终端登录特权、登录数目、和由 Solaris Resource Manager 以分层结构方式强制的连接时间限制。当某个用户接近连接时间限制时,就会有警告信息发送到该用户的终端。当达到该限制时,用户就会被通知,并在短时间内被强制退出。

Solaris Resource Manager 连续地对以往的连接时间利用率进行衰减,并确保只有最新的利用率可用。系统管理员设定一组能控制衰减速率的半衰期参数。较长的半衰期对平均利用率有益,而较短的半衰期则对交互用户有益。