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

动态资源分配如何工作

本节介绍了 poold 用来动态分配资源的进程和因素。

关于可用资源

可用资源即为可在 poold 进程的范围内使用的所有资源。控制的范围最多为一个 Solaris 实例。

在启用区域的系统上,poold 执行实例的范围限制为全局区域。

确定可用资源

资源池包含可供应用程序使用的所有系统资源。

对一个单独执行的 Solaris 实例来说,必须将单一类型的资源(如 CPU)分配到单个分区上。对于每种资源类型,可以有一个或多个分区。每个分区包含一个唯一的资源集。

例如,装有四个 CPU 和两个处理器集的计算机可以具有以下设置:

pset 0: 0 1

pset 1: 2 3

其中,冒号后的 0、1、2 和 3 表示 CPU ID。请注意,这两个处理器集包含了所有四个 CPU。

同样的计算机不能具有以下设置:

pset 0: 0 1

pset 1: 1 2 3

不能使用这种设置,因为 CPU 1 一次只能出现在一个 pset 中。

不能从资源所属分区以外的任何分区来访问资源。

要搜索可用资源,poold 需要询问活动池的配置来查找分区。所有分区内的所有资源的总和决定所控制的每种资源类型的可用资源总量。

此资源量是 poold 操作过程中使用的基本数字。但是,对此数字存在一些约束,限制了 poold 在进行分配时的灵活性。有关可用约束的信息,请参见配置约束

识别资源不足

poold 的控制范围定义为 poold 对其有效分区和管理具有主要责任的可用资源集。但是,其他可在此控制范围内处理资源的机制仍会影响配置。如果在 poold 处于活动状态时某个分区不受控制,则 poold 会尝试通过对可用资源的审慎操作来恢复控制。如果 poold 在其范围内无法找到其他资源,则守护进程将记录有关资源不足的信息。

确定资源利用率

poold 通常情况下会使用最多的时间在其控制范围内观察资源的使用情况。执行这种监视是为了验证是否满足了与工作负荷有关的目标。

例如,对于处理器集来说,在此集中的所有处理器都会进行度量。资源利用率显示了在抽样间隔内资源被使用的时间比例。资源利用率显示为 0 到 100 的百分比。

识别控制违规

配置约束和目标中所述的指令用于检测系统即将出现的进而无法满足其目标的故障。这些目标与工作负荷直接相关。

未满足用户配置目标的分区即为控制违规。控制违规的两种类型为同步违规和异步违规。

以下事件将导致异步目标违规:

假定与工作负荷无关的目标的影响在目标函数的评估期间保持不变。与工作负荷无关的目标仅在其中一个异步违规触发重新评估时才会再次评估。

确定适当的补救措施

当资源控制器确定某个资源使用者的资源不足时,第一反应就是增加资源以改善性能。

此时将检查并评估在控制范围的配置中指定的满足目标的备用配置。

由于针对响应监视了变化的资源并评估了每个资源分区,因此,此进程会随着时间不断完善。可参阅决策历史记录,以避免再次使用过去在获取目标函数方面未带来任何改进的配置。其他信息(如进程名称和数量)用于进一步评估历史数据的实用性。

如果守护进程不能进行更正操作,则会记录此情况。有关更多信息,请参见poold 日志信息