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

第 1 章 概述

Solaris Resource Manager 软件确保用户、组以及应用程序可以使用资源。提供有对主要的系统资源进行分配和控制的能力,诸如 CPU、虚拟内存以及进程的数目。另外还实施管理策略,对不同的用户可以访问的资源,特别是允许每个用户可以消耗这些资源的级别,进行管理。 Solaris Resource Manager 产品对于服务器整合和资源利用增强来讲,是一个关键的启用程序。

Solaris Resource Manager 产品基于澳大利亚 Softway 有限公司的 ShareIITM 技术。

Solaris Resource Manager 介绍

所解决的组织目标

企业经常需要 IT 组织对企业应用的费用进行控制并保证其服务水准。资源管理提供了若干步骤,降低了整个费用总额,为谁使用系统以及如何使用提供了更为精确的控制,并且有时达到了两个目标。

管理员借助 Solaris Resource Manager 软件对利用率进行分类和划分优先级,可以在非高峰时间段有效地利用能力储备,从而经常可以消除增加处理能力的需要。

Solaris Resource Manager 借助在系统内部分割工作负荷,使得系统管理员可以在单一系统上运行和管理彼此不同的应用程序,而不是将整个系统 -连同其整个峰值能力-交给每个应用程序。传统上,用于确保可预见服务和响应时间的最为常见的方法是让每个系统主管一种功能。该方法有效,但数据中心中系统的迅速扩充昂贵而难于管理。

数据中心管理者想要的是将多个应用程序整合在单个 UNIX 服务器上的能力,从而充分利用所有现成的资源。同时,所有的用户必须得到与其服务水准及其工作的相对重要性相当的资源。

何时使用 Solaris Resource Manager

Solaris Resource Manager 可以在各种各样的情形下提供有效的资源控制,其中包括服务器整合,因特网服务提供商(ISP)万维网寄存,管理用户人数众多且种类各样的网站,以及制定策略,以确保关键性的应用程序得到其所需的响应时间。

Solaris Resource Manager 最适合于在单一服务器上整合多个应用程序的环境。管理众多机器的费用和复杂性,使得系统管理员倾向于在一个较大而更具伸缩性的系统上整合应用程序。有了 Solaris Resource Manager ,要取得伸缩性所带来的经济性就很容易。

举例来讲,单一的 Sun TM服务器可以为拥有多种需求的客户提供应用程序、文件和打印服务器功能、信件/邮件服务、万维网服务,以及任务关键型的数据库应用程序,鉴于 Sun EnterpriseTM 服务器可以在1到64个处理器之间进行伸缩,一个服务器可以配置成为多个部门所共享,或者为整个企业所使用。其它的服务器整合努力还有,将开发、原形制作以及生产环境合并在单一的大型机器上,诸如 Sun Enterprise 10000 或者 Sun Enterprise 6500,而不是寄存在三个彼此分离的服务器上。整合项目另外还有,将数据库和应用程序服务器结合成为单一的机器,或者多个数据仓库。 Solaris Resource Manager 与应用程序类型或配置无关,从而有助于确保根据所制定的策略,将系统的资源分配给所有的用户、应用程序和组。关键性的应用程序受到保护,保证可以得到其所需要的可用系统资源份额。

同样,ISP 借助 Solaris Resource Manager ,可以把握十足地在单一的机器上为许多的万维网服务器提供寄存服务(可以多达成千上万)。 Solaris Resource Manager 允许管理员对每个网站所关联的资源消耗进行控制,从而使每个网站受到保护,避免其它网站可能出现的过多占用情况。 Solaris Resource Manager 还防止某一存在问题的 CGI 正文用尽 CPU 资源,或者防止某一用户应用程序漏失所有可用的虚拟内存。在过去,ISP 必须给每个客户指派专用的机器,其费用和复杂性是相当可观的。

Solaris Resource Manager 可以用于管理任何用户众多的系统中的资源。教育机构就是服务于人数众多且种类多样的用户群的很好的例子。(实际上, Solaris Resource Manager 源于一个在悉尼和新南威尔士大学开发的较早的 CPU 资源调度器。)在工作负载较为庞杂的情况下, Solaris Resource Manager 可以配置为向某些用户倾斜。在大型的贸易公司,交易员时不时地需要进行快速访问,以执行一个查询或者进行一项计算。然而,其它系统用户的工作负载则较为连贯。如果交易员被赋予较大比例的处理能力,则 Solaris Resource Manager 可以确保其获得所需的响应。

主要特性

Solaris Resource Manager 提供了对系统中各种重要资源的消耗情况进行管理的能力,诸如处理器时间、虚拟内存、进程计数、登录计数以及连接时间。 Solaris Resource Manager 管理模块允许在分层结构中进行管理权限委派,使数据中心不必过多地介入组内管理事务处理,从而更具灵活性。另外, Solaris Resource Manager 还提供有收集资源利用率数据的机制,可以用于容量规划或者收取费用目的。

操作系统的一个基本任务就是确定哪个进程可以访问系统资源。默认的 Solaris 分时调度器试图给每个进程几乎平等的系统资源访问时限。施加访问限制的对象包括没有实在内存资源的进程,该进程是不允许运行的,以及其 I/O 请求等待处理的进程,该进程遭到封锁。

这一方案构成了大多数现代操作系统的基础;只要"人人平等访问"对单位来讲是一个合适的策略的话,则该方案就行之有效。但是,如要实现不同的策略,就需要更为精密的机制。例如,某一制造部门可能拥有一个大型系统,但由于波动的季节性需求原因,该系统只得到些许使用。同时,工程部门几乎总是需要更多的计算周期。尽管大型机器资源利用不足属于浪费,但与工程部门一起分享制造系统在传统上总是有一些问题。利用简单的调度策略,就没有办法向操作系统表示制造部门的用户比同一系统上的工程部门的用户更为重要。如果制造部门目前有一项关键性的任务,消耗百分之75的系统资源,则在所有其它任务请求百分之25或者更少的系统资源的情况下,该任务就会合理地进行下去。但是,如果某个设计任务到来,需要百分之50的系统资源,则该关键性的制造任务就有可能无法获得维持充足前进动力所需的系统资源,原因在于系统会试图在平等的基础上为两个任务提供服务。

现在假设管理员确定制造部门的常规处理需求可以用机器能力的百分之80加以满足。系统管理员借助 Solaris Resource Manager ,就能够指定制造部门的用户在需要的情况下,可以拥有高达百分之85的系统处理能力,而调度器将其余的系统处理能力分配给任何其他的用户。一个更加极端但同样有效的配置就是,指定制造部门的用户在需要的情况下,可以拥有高达百分之100的系统资源,从而一旦制造部门真的需要整个系统,就可以有效地阻止任何其它组的进程的运行。

Solaris Resource Manager 提供有一个新的 CPU 调度类,用于替换标准的分时调度器。该模块称为 SHR 调度器类,所实施的是一种名为公平共享调度器的方案。该名词命名错误,因为是系统管理员本人指定什么才是"公平"的。在上面的例子中,"公平"的意思是制造部门可以得到百分之100的系统资源。SHR 调度器负责根据管理定义文件中所部署的方案分配资源。

Solaris Resource Manager 维护着一个资源消耗和相关限制的数据库。

SHR 调度器将用于资源保证的管理指定考虑在内。它能够对可更新资源(诸如 CPU 时间)或者固定资源(诸如登录的数目)进行管理。

其它 Solaris Resource Manager 模块对各种资源的消耗进行限制。例如,连接时间和用户登录的数目,这些是通过一个可插鉴别模块(PAM)加以管理的。 每当某个用户试图登录时,PAM模块就向 Solaris Resource Manager 数据库进行咨询。一旦系统完成对用户的鉴别(一般是通过口令匹配),就检查该用户的连接时间以及当前登录的数目是否超过限制。如果超过了两个限制中的任何一个,就拒绝登录。

与其它 Solaris Resource Manager 控制特性的关系

Solaris 操作环境包含多个其它的特性,用于对某些类型的资源进行控制。有些特性,诸如实时调度、nice(1)、限额以及处理器集,是基础 Solaris 操作系统的一部分。

带宽分配器是一个未捆绑的软件程序包,动态系统域是 Sun Enterprise 10000 系统平台的特性,而动态重新配置则是 Sun Enterprise 系统平台的一个特性。

所有这些部件均提供了几种资源管理,但其在某个方面都不同于 Solaris Resource Manager 功能。

标准的Solaris操作系统将分时(TS)调度类用于大多数的常规工作。但是,其也为拥有足够特权的用户提供实时(RT)调度。RT 调度类实施了一个十分不同的(同时也有意做得加权性十分强的)调度策略,以确保具体的工作负载或者进程可以快速访问处理器。 Solaris Resource Manager 可以与 RT 调度类共存于同一系统上,但其并不控制任何正在 RT 类中运行的进程。 Solaris Resource Manager 的公平共享调度器只能够管理并非在 RT 调度类中运行的进程的 CPU 时间资源。例如,在一个四处理器的系统上,一个单线程的进程可以消耗一整个的处理器;实际上,如果请求进程是 CPU 绑定的,则所发生的情形正是这样。如果该系统还运行 Solaris Resource Manager ,则常规的用户进程将争用实时进程尚未消耗的三个 CPU。(注意,RT 进程可能并非持续使用 CPU。当其空闲时, Solaris Resource Manager 将控制所有四个处理器)。

nice(1)命令允许用户操纵自己执行优先权。如果没有超级用户特权,该命令就只允许用户降低其优先权。在有些情况下,这是一个有用的特性(例如,当某个用户从其交互式登录会话时间启动一个低优先权的批处理工作时),但其依赖于用户的合作。 Solaris Resource Manager 强制执行管理策略,即使得不到用户的合作。

Solaris 文件系统具有限额机制,使得管理员可以对单个用户的磁盘消耗加以限制。该功能独立于 Solaris Resource Manager 。

处理器集是在 Solaris 2.6 中引进的。该特性允许管理员将多处理器的系统分为逻辑组,并允许用户启动进程到这些组。其优点在于,在一个处理器集中运行的工作负载受到保护,免受正在任何其它处理器集中发生的 CPU 活动的影响。在某些方面,这与 Solaris Resource Manager 的性能相类似,但是这两种特性是在完全不同的基础上运行的。处理器集只控制CPU 的活动。该控制处于一种粒度相对粗糙的硬件水平,因为处理器在一个时间确实可以只属于一个处理器集。粒度间隔可能会相当高,特别是在较小的系统上:在一个四处理器的系统上,可以指派的最小资源为系统的百分之25。

Solaris Resource Manager 拥有粒度精细得多的控制;每个用户均分得系统的一定份额。可以任意将份额分布在精细的粒度上,而调度器将据此进行资源分配。例如,如果赋予50份额,而某个用户拥有其中40,则该用户将获得资源的40/50=百分之80。同理,如果赋予67的份额总数,则拥有57份额的某个用户将获得资源的百分之85。另外, Solaris Resource Manager 还可以对 CPU 之外的其它资源进行控制。

Sun Enterprise 10000 拥有一个称作动态系统域的特性,允许管理员在逻辑上将单一的系统机架分成一个或者多个独立的系统,而每个系统运行其自己的 Solaris 副本。例如,一个在8个系统插板上有32个 CPU 的系统,可以用作一个带有16个 CPU 的系统,以及另外2个分别带有8个 CPU 的系统。在这种情况下,将运行三个 Solaris 副本。动态系统域特性还允许对进出每个 Solaris 映象的资源进行控制,从而为管理实在资源创造出一个粒度相对粗糙的设施。(域间分配的最小单位为整个系统插板。) Solaris Resource Manager 向管理员提供了分配资源的机制,在这一点上与动态系统域相似,但其作法却十分不同。 Solaris Resource Manager 在单一 Solaris 实例中运行,提供有对系统中资源的精细的管理控制。动态系统域将单一的硬件分成多个 Solaris 实例;提供有工具,用于对同一 Sun Enterprise 10000 框架中运行的实例之间的资源传递进行管理。 Solaris Resource Manager 与动态系统域互不相关,可以协同使用。 Solaris Resource Manager 可以在 Sun Enterprise 10000 系统内的每个 Solaris 实例中运行。

Sun Enterprise 服务器的动态重新配置特性使得用户可以动态添加和删除系统插板,这些插板包含硬件资源,诸如处理器、内存以及 IO 设备。出于调度目的,某次动态重新配置操作对内存的作用,并不对 Solaris Resource Manager的内存限制检查构成影响。

带宽分配器是一个非捆绑的程序包,用于与 Solaris 核心一同工作,对网络带宽的消耗实行限制。带宽分配器是一种资源管理软件,可以用于不同类的资源。 Solaris Resource Manager 和带宽分配器拥有不同的互不关联的管理域: Solaris Resource Manager 在逐用户或者逐应用程序的基础上运行,而带宽分配器在逐端口、逐服务或者逐协议的基础上进行管理。

Solaris Resource Manager 和类似产品之间的区别

Solaris Resource Manager 与系统中可能存在的许多其它软件部件相关,但又不替代其中任何一个。正如所述,带宽分配器管理一类不同的资源。可以将 Solaris Resource Manager 看成是拥有某些系统管理和监测功能,但其又不是 Sun Enterprise SyMONTM 2.0 意义上的一个系统监测器。 Solaris Resource Manager 也不是一个真正的容量规划工具:它帮助管理员管理容量,而其记帐功能又建造利用率记录,从而管理人员可以用来进行趋势分析,但它并不进行传统意义上的容量规划。 Solaris Resource Manager 也不是一个任务调度器;它控制的是某一进程如何在其主机系统上运行,而不是何时以及何地运行。最后,因为 Solaris Resource Manager 只是在单一的系统上运行,它也不是一个用于实现跨簇成员负载平衡的的机制。但是, Solaris Resource Manager 可以有效地用于对一个簇中的每个成员的工作负载单个进行管理。例如,可以作出安排,使来自某一高可用性簇的一个失败成员的工作,优先于待机成员上所运行的背景工作负载。