安装和管理 Solaris Container Manager 3.6

资源管理

通常情况下,资源表示可与进程绑定的操作系统实体。更多情况下,资源是指提供某种形式分区的内核子系统所构建的对象。还可以将资源视作为了影响应用程序的行为可以对其进行处理的计算系统的一个方面。资源的实例包括物理内存、CPU 或网络带宽。

Container Manager 与 Solaris 8、Solaris 9 和 Solaris 10 发行版中的资源管理实用程序协同运行。在 Solaris 8 发行版中,资源管理由 Solaris Resource Manager 1.3 提供。每个服务均由一个 lnode 表示。lnode 用于记录资源分配策略和累计资源使用数据。lnode 与 UNIX 用户 ID (User IDs, UID) 对应。UID 在默认情况下可以表示单独的用户和应用程序。有关 lnode 和资源管理的更多信息,请参见《Solaris Resource Manager 1.3 System Administration Guide》中的“Limit Node Overview”

在 Solaris 9 和 Solaris 10 发行版中,资源管理功能由 Resource Manager 提供。在此发行版中,项目lnode 类似。项目为相关的工作提供了网络级管理标识符。在一个容器中运行的所有进程具有相同的项目标识符,也称为项目 ID。Solaris 内核通过项目 ID 来跟踪资源的使用情况。使用相同跟踪方法的扩展记帐可以用于收集历史数据。在 Container Manager 中,项目表示容器。

图 1–3 主机上的项目示例

显示主机上的项目示例的图示。周围的文本描述了环境。

有关在容器中运行的进程的信息可以从 Container Manager GUI 中获取。使用此软件创建和管理容器时,数据的收集对于您是透明的。

创建容器边界可以使用不同的方法。一种方法是使用资源池对系统进行分区。另一种方法是通过资源控制建立对项目的限制。

资源池

资源池(或)是一种 Solaris 9 和 Solaris 10 软件的配置机制,用于对主机的资源进行分区。资源集是可与进程绑定的资源。内存集和处理器集是资源集的实例。在 Solaris 9 和 Solaris 10 发行版中当前只有处理器集可用。资源池可将主机上可用的各种资源集绑定到一起。

一个资源池中可以容纳一个或多个项目。如果只包含一个项目,则链接到该池的资源会专用于该项目。如果包含多个项目,则链接到该池的资源会由这些项目共享。

在 Solaris 10 操作系统上,此产品具有一个称为“动态资源池”的功能。动态资源池允许您根据系统事件和负荷变化对每个池的资源分配进行调整,从而帮助您获取更好的性能。在动态资源池中对此功能进行了描述。

在 Solaris 8 操作系统上运行时,一台主机只能具有一个资源池。这个资源池被称为 pool_default。由于在此版本的操作系统中不存在资源池,因此 pool_default 是手动创建的。在运行 Solaris 8 发行版的主机上,所有 CPU 通常都被视为位于单个池内。

有关使用 Container Manager 管理资源池的更多信息,请参见第 5 章,管理资源池

资源控制

如果有多个项目绑定到单个资源池,则可以针对单个项目设置保障或限制。这些限制称为资源控制。资源控制的实例是设置最小 CPU 限制,就如使用合理分配调度程序 (Fair Share Scheduler, FSS) 的情况一样。另一个实例是设置物理内存容量,就如使用 rcapd 守护进程的情况一样。设置最小 CPU 保障后,一个项目中的空闲 CPU 周期就可以由其他项目中的应用程序使用。