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 的可选参数对管理员来说也是有用的:
-v 参数可以标准输出方式打印出关于所有当前参数设置的格式化报告。提供更多的-v 参数(-V 1, -V 2和-V 3)可产生更详细的报告。调用没有变量的 srmadm 就相当于提供一个 -v 选项作为 limreport 的输入。
-d 参数可采用缺省值对 Solaris Resource Manager 系统结构进行初始化,而不是读取当前的内核设置。主要提供对调度行为的控制的缺省值是嵌入在 srmadm 之中的,并提供了对 Solaris Resource Manager 进行定制的非常好的起点。内核也采用预设的相同的值开始。
下面的例子介绍典型的 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 |
srmadm(1MSRM) 命令通过清除 fileopen 标志来禁用 Solaris Resource Manager:所有进程均被移动到替代 root lnode 上,高速缓存中的其它被更改 lnode 均被存入磁盘,限制数据库被关闭。这将自动迫使 share 和 limits 标志关闭,并分别禁用 SHR 调度程序和限制强制。在必要时,share 和 limits 标志可以单独关闭,而使限制数据库仍保持打开。这比关闭文件更好,因为所有进程仍可保持附加在其正确的 lnode 上。
注意:如果在操作中间单独禁用 Solaris Resource Manager 调度程序,则结果只是暂停利用率和衰变算法。调度程序仍旧继续处理 SHR 调度类中的进程,但是由于向其中每个指派了更新的优先权,使用的是同样的值,导致简单的"不分先后"调度。
通过在文件关闭后打开文件并设置 share 和/或 limits 标志,重新启用 Solaris Resource Manager 不会造成现有进程移出 root lnode。最好不要在正常运行过程中关闭 Solaris Resource Manager 数据库。如果该数据库被关闭,则必须重新启动系统,以确保进程能正确地附加到 lnode 上。