系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones

资源管理概述

现代计算环境必须针对系统上不同应用程序产生的不同的工作负荷做出灵活的响应。工作负荷是一个或一组应用程序的所有进程的集合。如果没有使用资源管理功能,Solaris 操作系统通过动态适应新的应用程序请求来对工作负荷需求做出响应。该缺省响应通常表示系统上的所有活动都对资源具有同等的访问权。使用 Solaris 资源管理功能,您可以分别对待各个工作负荷。其中包括:

最大限度地减少工作负荷之间的性能影响以及监视资源使用情况和利用率的功能,称为资源管理。资源管理通过一组算法来实现。算法处理应用程序在执行过程中提出的一系列功能请求。

使用资源管理功能,您可以针对不同的工作负荷修改操作系统的缺省行为。行为主要是指应用程序向操作系统提出一个或多个资源请求时操作系统算法所做出的一组决定。可以使用资源管理功能进行以下操作:

实现使用资源管理功能的系统配置的目的有若干种。其中包括:

在规划资源管理配置时,主要要求如下:

识别合作的工作负荷和冲突的工作负荷后,可以在系统功能允许的范围内,创建对业务服务目标影响最小的资源配置。

通过提供控制机制、通知机制和监视机制,可在 Solaris 系统中实现有效资源管理。上述许多功能都是通过增强现有机制来提供的,例如 proc(4) 文件系统、处理器集和调度类。而其他功能是资源管理所特有的。这些功能将在后续章节中介绍。

资源分类

资源是可进行处理以更改应用程序行为的计算系统的任何方面。因此,资源就是应用程序隐式或显式请求的功能。如果拒绝或约束了此类功能,则强大的应用程序在执行时会慢很多。

相对于资源标识,可以按多种标准对资源进行分类。这些标准可以是隐式请求相对于显式请求,基于时间(例如 CPU 时间)相对于与时间无关(例如指定的 CPU 份额等)。

一般情况下,基于调度器的资源管理应用于应用程序可隐式请求的资源。例如,要继续执行,应用程序会隐式请求更多 CPU 时间。要将数据写入网络套接字,应用程序会隐式请求带宽。可针对隐式请求的资源的总使用量设置约束。

也可提供其他接口,以便显式协商带宽或 CPU 服务级别。明确请求的资源(例如请求附加线程)可以通过约束进行管理。

资源管理控制机制

Solaris 操作系统可用的三种控制机制为约束、调度和分区。

约束机制

使用约束,管理员或应用程序开发者可以对工作负荷所占用的特定资源设置限定。限制已知时,建立资源占用方案模型变得简单得多。也可使用限定控制不良应用程序,否则它们会通过发出无法控制的资源请求影响系统的性能或可用性。

约束确实给应用程序带来了复杂因素。它有可能会修改应用程序和系统之间的关系,导致应用程序无法再正常工作。降低这种风险的一种途径是用未知的资源行为逐渐减少对应用程序的约束。第 6 章中介绍的资源控制功能提供了一种约束机制。可通过编写新的应用程序来了解其资源约束,但是并不是所有应用程序编写者都选择这样做。

调度机制

调度是指按特定间隔做出一系列分配决定。所做的决定基于可预测的算法。不需要当前分配的应用程序会将资源留给其他应用程序使用。基于调度的资源管理可确保在配置的资源充裕时全部进行利用,在配置的资源处于临界或过量使用状态时提供控制分配。基础算法定义了如何解释术语“控制”。在某些情况下,调度算法可能会保证所有应用程序都对资源具有一定的访问权限。第 8 章中介绍的公平份额调度器 (fair share scheduler, FSS) 能够以可控的方法管理应用程序对 CPU 资源的访问权限。

分区机制

分区用于将工作负荷绑定到系统可用资源的子集。该绑定保证工作负荷总是能够使用一定量的资源。使用第 12 章中介绍的资源池功能,您可以将工作负荷限定为使用计算机的特定资源部分。

使用分区的配置可避免整个系统的资源缺乏。但是,避免资源缺乏的同时,也降低了实现高利用率的能力。对于保留的资源组(例如处理器),即使其绑定的工作负荷处于闲置状态,也不能由其他工作负荷使用。

资源管理配置

部分资源管理配置可能位于网络名称服务中。该功能允许管理员在一组计算机集合中应用资源管理约束,而不是专门基于单个计算机应用。相关工作可共享一个通用标识符,可以通过记帐数据将此工作的总使用量制成表格。

第 2 章中更加全面地介绍了资源管理配置和面向工作负荷的标识符。第 4 章中介绍了将这些标识符与应用程序资源使用相链接的扩展记帐功能。

与 Solaris Zones 交互

资源管理功能可与 Solaris Zones 结合使用来进一步完善应用程序环境。将在本指南的适当章节中介绍这些功能与 Solaris Zones 之间的交互。