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

配置约束和目标

更改配置时,poold 会针对您提供的指示执行操作。可以将这些指示指定为一系列约束和目标。poold 根据您指定的内容,来确定其他可能配置相对于现有配置的相对值。然后,poold 更改当前配置的资源分配,以生成新的候选配置。

配置约束

约束通过排除某些可能会对配置进行的潜在更改来影响可能配置的范围。在 libpool 配置中指定的以下约束均可用。

有关池属性的更多信息,请参见 libpool(3LIB) 手册页和池属性

pset.minpset.max 属性约束

这两个属性用于限制可以为处理器集分配的最小和最大处理器数。有关这些属性的更多详细信息,请参见表 12–1

在遵守这些约束的情况下,可以将资源分区的资源分配给同一 Solaris 实例中的其他资源分区。通过将资源绑定到与资源集关联的池,可获取对此资源的访问权限。绑定可以在登录时执行,也可以由拥有 PRIV_SYS_RES_CONFIG 权限的管理员手动执行。

cpu.pinned 属性约束

cpu-pinned 属性指明,DRP 不应从特定 CPU 所在的处理器集中移动该 CPU。您可以设置此 libpool 属性,以最大化在处理器集中执行的特定应用程序的高速缓存利用率。

有关此属性的更多详细信息,请参见表 12–1

pool.importance 属性约束

pool.importance 属性描述了池的相对重要性,该重要性由管理员定义。

配置目标

目标的指定方式与约束类似。表 12–1 中记录了完整的一组目标。

有两种类别的目标。

与工作负荷有关

与工作负荷有关的目标是指将随系统上运行的工作负荷的性质而变化的目标。utilization 目标便是一个示例。资源集的使用率数字将随此集中的活动工作负荷的性质而变化。

与工作负荷无关

与工作负荷无关的目标是指不会随系统上运行的工作负荷的性质而变化的目标。CPU locality 目标便是一个示例。资源集邻近性的评估标准不随此集中的活动工作负荷的性质而变化。

您可以定义三种类型的目标。

名称 

有效元素 

运算符 

值 

wt-load

system

N/A 

N/A 

locality

pset

N/A 

loose | tight | none

utilization

pset

< > ~

0100%

目标存储在 libpool 配置内的属性字符串中。这些属性名如下所示:

目标的语法如下:

所有目标都有可选的重要性前缀。重要性用作目标的乘数,因此可增加它对目标函数评估的影响程度。范围从 0 到 INT64_MAX (9223372036854775807)。如果未指定,则缺省的重要性值为 1

某些元素类型支持多种目标类型。pset 便是一个示例。您可以为这些元素指定多种目标类型,还可以针对单个 pset 元素指定多个使用率目标。

有关使用情况的示例,请参见如何定义配置目标

wt-load 目标

wt-load 目标优先考虑资源分配与资源使用率匹配的配置。当此目标处于活动状态时,将为使用多个资源的资源集提供更多资源。wt-load 表示加权负载

使用此目标的前提是:满足使用最小和最大值属性建立的约束,并希望守护进程在遵守这些约束的情况下自由处理资源。

locality 目标

locality 目标会影响由地址组 (lgroup) 数据度量的邻近性对选定配置的影响。邻近性的另一个定义是延迟。lgroup 描述了 CPU 资源和内存资源。Solaris 系统使用 lgroup 以时间为度量值来确定资源之间的距离。有关地址组摘要的更多信息,请参见《编程接口指南》中的“地址组概述”

此目标可采用以下三个值之一:

tight

如果设置,则优先考虑最大化资源邻近性的配置。

loose

如果设置,则优先考虑最小化资源邻近性的配置。

none

如果设置,则优先考虑配置时不受资源邻近性的影响。这是 locality 目标的缺省值。

通常,locality 目标应设置为 tight。但是,为了最大化内存带宽或最小化 DR 操作对资源集的影响,可以将此目标设置为 loose,也可以使其保留缺省设置 none

utilization 目标

utilization 目标优先考虑将资源分配给未满足指定使用率目标的分区的配置。

此目标使用运算符和值来指定。运算符如下:

<

“小于”运算符表明指定的值为最大目标值。

>

“大于”运算符表明指定的值为最小目标值。

~

“约等于”运算符表明指定的值是可在一定程度上上下浮动的目标值。

对于每种运算符类型,pset 只能设置一个 utilization 目标。

您可以同时设置 <> 运算符来创建一个范围。要验证值以确保它们不重叠。

配置目标示例

在以下示例中,poold 将为 pset 评估这些目标:


示例 12–1 poold 目标示例

pset.poold.objectives "utilization > 30; utilization < 80; locality tight"


有关其他使用情况的示例,请参见如何定义配置目标

poold 属性

有四种类别的属性:

表 12–1 定义的属性名

属性名 

类型 

类别 

说明 

system.poold.log-level

字符串 

配置 

日志级别 

system.poold.log-location

字符串 

配置 

日志位置 

system.poold.monitor-interval

uint64 

配置 

监视抽样间隔 

system.poold.history-file

字符串 

配置 

决策历史记录的位置 

pset.max

uint64 

约束 

此处理器集的最大 CPU 数 

pset.min

uint64 

约束 

此处理器集的最小 CPU 数 

cpu.pinned

布尔型 

约束 

固定到此处理器集的 CPU 

system.poold.objectives

字符串 

目标 

遵循 poold 的目标表达式语法的格式化字符串

pset.poold.objectives

字符串 

目标 

遵循 poold 的表达式语法的格式化字符串

pool.importance

int64 

目标参数 

用户指定的重要性