Solaris Resource Manager 1.3 系统管理指南

借助 srmadm 的通用 Solaris Resource Manager 参数

srmadm 命令使管理员可以设置、修改或显示通用 Solaris Resource Manager 参数。有关所有参数的详细介绍,请参阅 srmadm(1MSRM) 手册页。

srmadm 命令可被调用任何次数,并用于设定各类参数。并不一定要在单一调用中包括所有设置。也就是说,srmadm 可被用来在运行中更改正在运行的 Solaris Resource Manager 系统的操作参数,但在操作时应加以小心。

对管理员来讲尤其重要的是 srmadm 选项,用来启用或者禁用 Solaris Resource Manager 的主要特性。其中有:

fileopen[={y|n}]

缺省的数据库为 /var/srm/srmDB;可以用 -f 选项作为 limreport 的输入。注意,在操作中间关闭 Solaris Resource Manager 数据库文件应当视作一项紧急行动。这有多个不良后果:所有的进程将继续在替代 root lnode 上运行,从而获得比平常更多的特权;SHR 调度程序遭到禁用;Solaris Resource Manager 限制强制执行终止。如果被禁用,则 Solaris Resource Manager 当前没有打开的任何限制数据库,其高速缓存只包含所有进程所附加的替代 root lnode。

share[={y|n}]

如果被启用,则使用 Solaris Resource Manager SHR 调度程序,且根据 Solaris Resource Manager 的动态利用率和衰变算法进行 CPU 调度。除非 fileopen(文件打开)模式被启用,否则无法设置该模式。如果被禁用,则冻结 SHR 调度程序的利用率计算,且进程被调度为"不分先后"拥有固定平等优先权。

limits[={y|n}]

如果被启用,则 Solaris Resource Manager 强制执行虚拟内存和进程限制。除非 fileopen (文件打开)模式被启用,否则无法设置该模式。如果被禁用,则 Solaris Resource Manager 将使利用率属性保持为最新,但不强制执行限制。

adjgroups[={y|n}]

如果被启用,则使用 Solaris Resource Manager SHR 调度程序的通用组有效份额调整。建议在大多数情形下使用启用状态。在每次运行的间隔,所有限制条目的正常化使用得到重新计算。如果 adjgroups 调度模式被启用,则对正常化使用进行如下的附加处理。调度程序在调度树上进行逾越,将每个组最近所收到的有效份额与其权利进行比较。所收到的比其组权利少的组受到特别对待,并将在下一个运行间隔收到较多的有效份额。这就确保组尽可能地收到其应得的 CPU 服务,而不论其成员有何操作。

limshare[={y|n}]

如果被启用,则 SHR 调度程序应用其优先权最高的特性,对所有用户的有效份额加以限制,以防止利用率极端低下的用户短暂地获得几乎 CPU 的百分之百。建议使用启用状态。

某个用户的 CPU 服务的比率,大体与该用户的利用率成反比。如果用户已有较长一段时间没有处于活动状态,则其利用率衰变到接近零。当这样的一个用户登录(或者 lnode 以无论任何方式成为活动)时,则在下次运行间隔期间,该用户的进程可以拥有极高的优先权,乃至垄断 CPU。

启用 limshare 调度标志使调度程序可以估算某个 lnode 将在下一次运行间隔以前接收的有效份额。如果结果超过该用户分配特权一定的程度(请参阅 maxushare),则该用户的正常化利用率将被重新调整,以预防这种情况。

有两个针对 srmadm 的可选参数对管理员来说也是有用的:

下面的例子介绍典型的 srmadm 命令。

要打开 Solaris Resource Manager,则应启用 SHR 调度程序和资源限制:

# srmadm set -f /var/srm/srmDB fileopen=y:share=y:limits=y 

要把 CPU 利用率的衰减率设置为 5 分钟的半寿命:

# srmadm set usagedecay=300s 

要显示当前标志设置和收费:

% srmadm 

要显示所有缺省设置:

% srmadm show-dv 

禁用 Solaris Resource Manager

srmadm(1MSRM) 命令通过清除 fileopen 标志来禁用 Solaris Resource Manager:所有进程均被移动到替代 root lnode 上,高速缓存中的其它被更改 lnode 均被存入磁盘,限制数据库被关闭。这将自动迫使 sharelimits 标志关闭,并分别禁用 SHR 调度程序和限制强制。在必要时,sharelimits 标志可以单独关闭,而使限制数据库仍保持打开。这比关闭文件更好,因为所有进程仍可保持附加在其正确的 lnode 上。

注意:如果在操作中间单独禁用 Solaris Resource Manager 调度程序,则结果只是暂停利用率和衰变算法。调度程序仍旧继续处理 SHR 调度类中的进程,但是由于向其中每个指派了更新的优先权,使用的是同样的值,导致简单的"不分先后"调度。

通过在文件关闭后打开文件并设置 share 和/或 limits 标志,重新启用 Solaris Resource Manager 不会造成现有进程移出 root lnode。最好不要在正常运行过程中关闭 Solaris Resource Manager 数据库。如果该数据库被关闭,则必须重新启动系统,以确保进程能正确地附加到 lnode 上。