第一个示例用于解释下面这些命令:
将一个或者多个用户的口令属性和限制信息打印到某个终端窗口
改变一列用户的限制属性或者删除其限制数据库条目
对操作模式以及系统范围的 Solaris Resource Manager 可调节的参数进行显示或者设置
显示 lnode 活动信息
请考虑将两个各自均运行某个数据库应用程序的服务器整合到单个机器的情形。简单地在单个机器上运行上述两个应用程序可以使系统工作起来;如果 没有 Solaris Resource Manager ,Solaris操作系统就将资源平均分配给两个应用程序,且并不对应用程序进行 保护,以使其免遭互相竞争损害。但是,Solaris Resource Manager 提供有用于避免应用程序缺乏资源的机制。 Solaris Resource Manager 启动每个数据库时均将其附加到指向该数据库的 lnode,即 db1 和 db2 ,从而取得上述效果。为此,必须创建三个新的管理性占位用户,例如 databases(数据库)、db1 以及 db2。这些被添加到 lnode 数据库;鉴于 lnode 对应于 UNIX UID,也还必须将其添加到 passwd 文件(如果系统是在运行某个名称服务,诸如 NIS 或者NIS+,则为口令映射)。假设是将 UID 添加到 passwd 文件或者口令映射,就使用下面的命令将占位用户 db1 和 db2 指派给 databases lnode 组:
% limadm set sgroup=0 databases % limadm set sgroup=databases db1 db2 |
其中假设 /usr/srm/bin 是在用户的路径中。
因为没有其它的已定义组,所以当前 databases 组完全使用机器。两个与数据库相关联的 lnode 正在运行,且在该数据库实例的启动正文中使用 srmuser 命令,就可以将运行数据库应用程序的进程附加到适当的lnode,例如:
% srmuser db1 /usr/bin/database1/init.db1 % srmuser db2 /usr/bin/database2/init.db2 |
当其中任何一个数据库,db1 或者 db2 被启动时,请使用 srmuser 命令,以确保该数据库被附加到正确的 lnode,且对其进行正确的收费(srmuser 并不影响进程进行此类操作的拥有权)。如要运行上述命令,用户必须拥有运行 init.db1 所需的许可,以及将进程附加到 lnode db1 的管理许可。随着用户登录并使用数据库,数据库所进行的活动就被计入 lnode db1 和db2。
借助每个 lnode 分配一个份额的默认方式,数据库组的利用率会最终平均开来,从而确保数据库 db1 和 db2 收到平等的机器资源分配。特别是,有一个未决份额-用于 databases 组-,且 databases 拥有它。lnode db1 和db2 中的每一个也会得到一个份额的默认分配。在数据库组内部,有两个未决份额,因而 db1 和 db2 获得 databases 的资源的平等分配(在上述简单示例中,没有竞争分配,因而 数据库可以访问整个系统)。
如果结果是 Database1 上的活动需要机器的 CPU 容量的百分之60,而 Database2 需要上述容量的百分之20,则管理员可以通过增加分配给 db1的 cpu.shares 的数目,指定系统至少提供上述数量(假设应用程序要求得到该数量):
% limadm set cpu.shares=3 db1 |
目前在 databases 组中有四个未决份额;db1 有三个,而 db2 有一个。一旦执行上述命令,则该变更立即生效。还将有一个决算期,lnode db1(Database1)才会真正收到比其应得的百分之60多的机器资源,因为 Solaris Resource Manager 将随着时间的推移对利用率进行平均,但是,该时间不会太长,这取决于衰变全局参数。
如要在任意点对该活动进行监测,请在不同的窗口中使用 liminfo 和 srmstat 命令:
% liminfo -c db1 # limit information shows all the data and # settings for the lnode db1. |
参阅 "典型的应用程序服务器"。
另外,srmstat 提供了一个定期更新的显示:
% srmstat -ac # srmstat shows the server activity and the # flag -ac sets a screen default update period # of 4 seconds to display the results. |
您现在拥有一个运行有两个数据库应用程序的机器,一个程序收到百分之75的资源,另一程序收到百分之25。请记住,超级用户(根)是顶级的组头目用户。因而作为根而运行的进程如果要求的话,就可以访问整个系统。应当相应地为正在运行的备份程序、守护程序以及其它的正文创建附加的 lnode,以使根进程无法接管整个机器,而如果是以传统方式运行的话,则根进程就有可能接管整个机器。