本章讨论以下功能:
资源池,用于对计算机资源进行分区
动态资源池 (dynamic resource pool, DRP),可动态调整每个资源池的资源分配,以实现所建立的系统目标
从 Solaris 10 11/06 发行版开始,资源池和动态资源池已成为 Solaris 服务管理工具 (service management facility, SMF) 中的服务。其中,每项服务都是单独启用的。
本章包含以下主题:
有关使用此功能的过程,请参见第 13 章。
Solaris 10:现在,资源池提供了一种机制,可调整每个池的资源分配,以响应系统事件和应用程序负荷的变化。动态资源池简化了管理员需要做出的决策并减少了决策数。调整是自动进行的,目的是确保始终达到管理员指定的系统性能目标。
现在,您可以使用 projmod 命令在 /etc/project 文件中设置 project.pool 属性。
有关 Solaris 10 新增功能的完整列表以及 Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》。
Solaris 10 11/06: 资源池和动态资源池现在是 SMF 服务。
通过资源池可以分散工作负荷,以便工作负荷占用的特定资源不会重叠。在具有混合工作负荷的系统上,这种资源预留有助于获得可预测的性能。
资源池提供了一种持久性配置机制,可配置处理器集 (pset),还可选择性分配调度类。
可以将池视为系统上可用的各种资源集的特定绑定。您可以创建表示各种可能的资源组合的池:
pool1: pset_default |
pool2: pset1 |
pool3: pset1, pool.scheduler="FSS" |
通过对多个分区进行分组,池可以提供一个与已标记的工作负荷关联的句柄。/etc/project 文件中的每个项目条目都可以有一个与其关联的池,该池使用 project.pool 属性指定。
启用池时,缺省池和缺省处理器集构成了基本配置。可以创建其他用户自定义的池和处理器集并将它们添加到配置中。一个 CPU 只能属于一个处理器集。可以销毁用户自定义的池和处理器集,不能销毁缺省池和缺省处理器集。
缺省池的 pool.default 属性设置为 true。缺省处理器集的 pset.default 属性设置为 true。因此,即使更改了缺省池和缺省处理器集的名称,仍可以识别它们。
用户自定义的池机制主要用于 CPU 超过四个的大型计算机。但是,小型计算机仍可以利用此功能。在小型计算机上,您可以创建共享非关键资源分区的池。池仅按关键资源进行分隔。
动态资源池提供了一种机制,可动态调整每个池的资源分配,以便响应系统事件和应用程序负荷的变化。DRP 简化了管理员需要做出的决策并减少了决策数。调整是自动进行的,目的是确保始终达到管理员指定的系统性能目标。对配置所做的更改将会记录。这些功能主要通过资源控制器 poold 来实施,它是一种系统守护进程,需要进行动态资源分配时此进程应始终处于活动状态。poold 会定期检查系统负荷,并确定是否需要人为介入,以使系统在资源利用方面保持最佳性能。poold 配置保存在 libpool 配置中。有关 poold 的更多信息,请参见 poold(1M) 手册页。
要启用和禁用资源池和动态资源池,请参见启用和禁用池功能。
Solaris 10 8/07: 除了将区域与系统中已配置的资源池建立关联外,还可以使用 zonecfg 命令来创建一个临时池,以在该区域运行时生效。有关更多信息,请参见Solaris 10 8/07:dedicated-cpu 资源。
在启用了区域的系统上,可以将非全局区域与一个资源池关联,虽然不需要将池专门分配给特定区域。此外,您不能使用全局区域中的 poolbind 命令将非全局区域中的单个进程绑定到其他池。要将非全局区域与池关联,请参见配置、检验并提交区域。
请注意,如果您为池设置了调度类并将该池与非全局区域关联,则缺省情况下,此区域会使用此调度类。
如果使用动态资源池,则 poold 执行实例的范围限制为全局区域。
在非全局区域中运行的 poolstat 实用程序仅显示与该区域关联的池的相关信息。在非全局区域中运行的不带参数的 pooladm 命令仅显示与此区域关联的池的相关信息。
有关资源池命令的信息,请参见用于资源池功能的命令。
资源池提供了一种通用机制,可应用于许多管理方案。
使用池功能可以将一个服务器分为两个池。一个池由分时用户用于登录会话和交互式工作,另一个池用于通过批处理系统提交的作业。
根据交互式应用程序的要求对用于这些应用程序的资源进行分区。
确定用户期望。
您最初可能将计算机部署为仅运行计算机最终应提供的服务的一部分。如果在计算机联机时未建立基于预留的资源管理机制,则用户可能会遇到问题。
例如,公平份额调度器会优化 CPU 使用率。仅运行一个应用程序时,计算机的响应速度可能会很快,但这仅是误导性的现象。如果装入多个应用程序,则用户将不会看到如此快的响应速度。通过为每个应用程序使用单独的池,您可以对可用于每个应用程序的 CPU 数设定一个上限,然后再部署所有的应用程序。
对支持大量用户的服务器进行分区。对服务器进行分区提供了一种隔离机制,可使每个用户的响应更具可预测性。
通过将用户分为绑定到各个池的不同组,并使用公平份额调度 (fair share scheduling, FSS) 功能,您可以调整 CPU 分配以优先满足具有较高优先级的用户组。可以基于用户角色、记帐费用分摊等进行这种分配。
使用资源池适应变换的需求。
您的站点在工作负荷需求方面可能会出现长周期性(例如每月、每季度或每年)的可预测变化。如果您的站点出现这些变化,则可以通过从 cron 作业中调用 pooladm 在多个池配置之间进行切换。(请参见资源池框架。)
使用 RT 调度程序和指定的处理器资源创建实时池。
执行建立的系统目标。
使用自动执行池守护进程这一功能识别可用的资源,然后监视工作负荷以检测何时不能再满足指定的目标。守护进程可以执行更正操作(如有可能),或者可以将情况记录下来。
/etc/pooladm.conf 配置文件说明了静态池配置。静态配置表示管理员根据资源池功能配置系统的方法。可以指定备用文件名。
当使用服务管理工具 (service management facility, SMF) 或 pooladm -e 命令启用资源池框架时,如果 /etc/pooladm.conf 文件存在,则将该文件中包含的配置应用到系统中。
内核包含有关资源池框架中资源部署的信息。这称为动态配置,它表示特定系统在某个时刻的资源池功能。可以使用 pooladm 命令查看动态配置。请注意,池和资源集的属性显示顺序可以改变。可按以下方法对动态配置进行修改:
间接方法,通过应用静态配置文件
直接方法,使用带有 -d 选项的 poolcfg 命令
可以存在多个静态池配置文件,在不同时间进行激活。您可以通过从 cron 作业中调用 pooladm 在多个池配置之间进行切换。有关 cron 实用程序的更多信息,请参见 cron(1M) 手册页。
缺省情况下,资源池框架不处于活动状态。必须启用资源池才能创建或修改动态配置。即使禁用了资源池框架,仍可以使用 poolcfg 或 libpool 命令处理静态配置文件。如果池功能不处于活动状态,则无法创建静态配置文件。有关配置文件的更多信息,请参见创建池配置。
以下手册页中描述了用于资源池和 poold 系统守护进程的命令:
影响系统整体行为的属性
资源池定义
处理器集定义
处理器定义
可以处理所有这些元素的属性,以更改资源池框架的状态和行为。例如,池属性 pool.importance 表示指定池的相对重要性。此属性用于可能的资源争用解决方案。有关更多信息,请参见 libpool(3LIB)。
池功能支持可用于池、资源或组件的已命名的类型化属性。管理员可以存储各种池元素的其他属性。可以使用与项目属性类似的名称空间属性。
例如,以下注释表示指定的 pset 与特定的 Datatree 数据库关联。
Datatree,pset.dbname=warehouse
有关属性类型的其他信息,请参见poold 属性。
许多特殊属性将保留供内部使用,不能进行设置或删除。有关更多信息,请参见 libpool(3LIB) 手册页。
引导 Solaris 软件时,init 脚本会检查 /etc/pooladm.conf 文件是否存在。如果找到此文件,并且启用了这些池,则会调用 pooladm 以使此配置成为活动池配置。系统将创建动态配置以反映 /etc/pooladm.conf 中请求的组织,并相应地对计算机的资源进行分区。
当 Solaris 系统运行时,既可以在不存在池配置时激活一个池配置,也可以使用 pooladm 命令修改池配置。缺省情况下,对 /etc/pooladm.conf 执行 pooladm 命令。但是,您可以选择指定备用位置和文件名,并使用此文件更新池配置。
有关启用和禁用资源池的信息,请参见启用和禁用池功能。如果正在使用用户自定义的池或资源,则不能禁用池功能。
要配置资源池,您必须拥有超级用户权限,或者在配置文件列表中拥有进程管理配置文件。系统管理员角色包括进程管理配置文件。
poold 资源控制器使用动态资源池功能来启动。
可以将 project.pool 属性添加到 /etc/project 文件中的项目条目,以便将单个池与该条目相关联。针对项目启动的新工作将绑定到相应的池。有关更多信息,请参见第 2 章。
例如,您可以使用 projmod 命令为 /etc/project 文件中的项目 sales 设置 project.pool 属性:
# projmod -a -K project.pool=mypool sales |
通过动态重新配置 (Dynamic Reconfiguration, DR),可以在系统运行的同时重新配置硬件。DR 操作可以增大、减小对指定资源类型的影响,或者对其没有任何影响。由于 DR 会影响可用的资源量,因此,这些操作中必须包括池功能。启动 DR 操作之后,池框架便会执行操作以验证配置。
如果 DR 操作可以继续而不会导致当前池配置变为无效,则会更新专用配置文件。无效配置是指可用资源无法支持的配置。
如果 DR 操作导致池配置无效,则操作会失败,并且系统会通过向消息日志发送消息来通知您。如果您要强制完成配置,则必须使用 DR 强制选项。池配置然后会修改以符合新的资源配置。有关 DR 进程和强制选项的信息,请参见 Sun 硬件的动态重新配置用户指南。
如果使用动态资源池,请注意当 poold 守护进程处于活动状态时,分区可能不受该守护进程控制。有关更多信息,请参见识别资源不足。
配置文件中包含要在系统上创建的池的说明。此文件描述了可以处理的元素。
system
pool
pset
cpu
有关要处理的元素的更多信息,请参见 poolcfg(1M)。
启用池之后,您可以通过两种方法创建结构化的 /etc/pooladm.conf 文件。
可以使用带有 -s 选项的 pooladm 命令搜索当前系统上的资源,并将结果放入配置文件。
此方法为首选方法。系统上所有可以通过池功能处理的活动资源和组件都将被记录。这些资源包括现有的处理器集配置。然后您可以修改配置以重命名处理器集或创建其他池(如有必要)。
可以使用带有 -c 选项以及 discover 或 create system name 子命令的 poolcfg 命令创建新的池配置。
保留这些选项是为了向下兼容早期发行版。
使用 poolcfg 或 libpool 可以修改 /etc/pooladm.conf 文件。请勿直接编辑此文件。
可以使用带有 -d 选项的 poolcfg 命令直接在动态配置中处理 CPU 资源类型。可以使用两种方法传送资源。
您可以发出常规请求,以便在处理器集之间传送任何已识别的可用资源。
您可以将具有特定 ID 的资源传送到目标集。请注意,更改资源配置时或重新引导系统之后,可以更改与资源关联的系统 ID。
有关示例,请参见传送资源。
请注意,资源传送可能会触发 poold 执行操作。有关更多信息,请参见poold 概述。
池资源控制器 poold 使用系统目标和可查看的统计信息,来保持您指定的系统性能目标。当需要动态分配资源时,此系统守护进程应始终处于活动状态。
poold 资源控制器先识别可用资源,再监视工作负荷,以确定不再满足系统使用率目标的时刻。然后,poold 根据目标考虑其他配置,并采取补救措施。如有可能,会重新配置资源以满足目标。如果无法执行此操作,则守护进程会记录不能再实现用户指定的目标。重新配置之后,守护进程恢复监视工作负荷目标。
poold 将维护它可以检查的决策历史记录。决策历史记录用于避免再次使用以前未带来任何改进的配置。
请注意,如果更改工作负荷目标或修改可用于系统的资源,还可以异步触发重新配置。
DRP 服务由服务管理工具 (service management facility, SMF) 管理,其服务标识符为 svc:/system/pools/dynamic。
可以使用 svcadm 命令对此服务执行管理操作,如启用、禁用或请求重新启动。可以使用 svcs 命令查询服务状态。有关更多信息,请参见 svcs(1) 和 svcadm(1M) 手册页。
SMF 接口是控制 DRP 的首选方法,但对于向后兼容性,还可使用以下方法。
如果不需要动态分配资源,则可以使用 SIGQUIT 或 SIGTERM 信号停止 poold。这两种信号都可以正常终止 poold。
poold 会自动检测资源或池配置中的更改,但是,您也可以使用 SIGHUP 信号强制进行重新配置。
更改配置时,poold 会针对您提供的指示执行操作。可以将这些指示指定为一系列约束和目标。poold 根据您指定的内容,来确定其他可能配置相对于现有配置的相对值。然后,poold 更改当前配置的资源分配,以生成新的候选配置。
约束通过排除某些可能会对配置进行的潜在更改来影响可能配置的范围。在 libpool 配置中指定的以下约束均可用。
最小和最大 CPU 分配量
无法从集中移动的固定组件
有关池属性的更多信息,请参见 libpool(3LIB) 手册页和池属性。
这两个属性用于限制可以为处理器集分配的最小和最大处理器数。有关这些属性的更多详细信息,请参见表 12–1。
在遵守这些约束的情况下,可以将资源分区的资源分配给同一 Solaris 实例中的其他资源分区。通过将资源绑定到与资源集关联的池,可获取对此资源的访问权限。绑定可以在登录时执行,也可以由拥有 PRIV_SYS_RES_CONFIG 权限的管理员手动执行。
cpu-pinned 属性指明,DRP 不应从特定 CPU 所在的处理器集中移动该 CPU。您可以设置此 libpool 属性,以最大化在处理器集中执行的特定应用程序的高速缓存利用率。
有关此属性的更多详细信息,请参见表 12–1。
pool.importance 属性描述了池的相对重要性,该重要性由管理员定义。
目标的指定方式与约束类似。表 12–1 中记录了完整的一组目标。
有两种类别的目标。
与工作负荷有关的目标是指将随系统上运行的工作负荷的性质而变化的目标。utilization 目标便是一个示例。资源集的使用率数字将随此集中的活动工作负荷的性质而变化。
与工作负荷无关的目标是指不会随系统上运行的工作负荷的性质而变化的目标。CPU locality 目标便是一个示例。资源集邻近性的评估标准不随此集中的活动工作负荷的性质而变化。
您可以定义三种类型的目标。
名称 |
有效元素 |
运算符 |
值 |
---|---|---|---|
wt-load |
system |
N/A |
N/A |
locality |
pset |
N/A |
loose | tight | none |
utilization |
pset |
< > ~ |
0–100% |
目标存储在 libpool 配置内的属性字符串中。这些属性名如下所示:
system.poold.objectives
pset.poold.objectives
目标的语法如下:
objectives = objective [; objective]*
objective = [n:] keyword [op] [value]
所有目标都有可选的重要性前缀。重要性用作目标的乘数,因此可增加它对目标函数评估的影响程度。范围从 0 到 INT64_MAX (9223372036854775807)。如果未指定,则缺省的重要性值为 1。
某些元素类型支持多种目标类型。pset 便是一个示例。您可以为这些元素指定多种目标类型,还可以针对单个 pset 元素指定多个使用率目标。
有关使用情况的示例,请参见如何定义配置目标。
wt-load 目标优先考虑资源分配与资源使用率匹配的配置。当此目标处于活动状态时,将为使用多个资源的资源集提供更多资源。wt-load 表示加权负载。
使用此目标的前提是:满足使用最小和最大值属性建立的约束,并希望守护进程在遵守这些约束的情况下自由处理资源。
locality 目标会影响由地址组 (lgroup) 数据度量的邻近性对选定配置的影响。邻近性的另一个定义是延迟。lgroup 描述了 CPU 资源和内存资源。Solaris 系统使用 lgroup 以时间为度量值来确定资源之间的距离。有关地址组摘要的更多信息,请参见《编程接口指南》中的“地址组概述”。
此目标可采用以下三个值之一:
如果设置,则优先考虑最大化资源邻近性的配置。
如果设置,则优先考虑最小化资源邻近性的配置。
如果设置,则优先考虑配置时不受资源邻近性的影响。这是 locality 目标的缺省值。
通常,locality 目标应设置为 tight。但是,为了最大化内存带宽或最小化 DR 操作对资源集的影响,可以将此目标设置为 loose,也可以使其保留缺省设置 none。
utilization 目标优先考虑将资源分配给未满足指定使用率目标的分区的配置。
此目标使用运算符和值来指定。运算符如下:
“小于”运算符表明指定的值为最大目标值。
“大于”运算符表明指定的值为最小目标值。
“约等于”运算符表明指定的值是可在一定程度上上下浮动的目标值。
对于每种运算符类型,pset 只能设置一个 utilization 目标。
如果设置了 ~ 运算符,则不能设置 < 和 > 运算符。
如果设置了 < 和 > 运算符,则不能设置 ~ 运算符。请注意,< 运算符和 > 运算符的设置不能互相冲突。
您可以同时设置 < 和 > 运算符来创建一个范围。要验证值以确保它们不重叠。
在以下示例中,poold 将为 pset 评估这些目标:
utilization 应保持在 30% 到 80% 之间。
应将处理器集的 locality 最大化。
目标应采用缺省重要性 1。
pset.poold.objectives "utilization > 30; utilization < 80; locality tight"
有关其他使用情况的示例,请参见如何定义配置目标。
有四种类别的属性:
配置
约束
目标
目标参数
属性名 |
类型 |
类别 |
说明 |
---|---|---|---|
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 |
目标参数 |
用户指定的重要性 |
监视间隔
日志级别
日志位置
这些选项在池配置中指定。您也可以通过调用 poold,从命令行控制日志级别。
使用属性名 system.poold.monitor-interval 可以指定以毫秒为单位的值。
配置
监视
优化
使用属性名 system.poold.log-level 可以指定日志参数。如果未指定此属性,则缺省的日志级别为 NOTICE。参数级别具有层次结构。设置 DEBUG 的日志级别会让 poold 记录所有定义的消息。INFO 级别为多数管理员提供了有用的信息平衡。
您可以使用带有 -l 选项的 poold 命令以及参数在命令行中指定生成的日志信息级别。
以下参数为可用参数:
ALERT
CRIT
ERR
WARNING
NOTICE
INFO
DEBUG
参数级别直接映射到其 syslog 对等项上。有关使用 syslog 的更多信息,请参见日志位置。
有关如何配置 poold 日志的更多信息,请参见如何设置 poold 日志级别。
可以生成以下类型的消息:
访问 libpool 配置时出现的问题,或者是 libpool 功能的其他一些基本、无法预测的故障。它会导致守护进程退出,需要管理员立即关注。
由于无法预测的故障产生的问题。它会导致守护进程退出,需要管理员立即关注。
用于控制操作的用户指定参数出现的问题,如资源集的相互冲突且无法解决的使用率目标。需要管理性介入来更正目标。poold 尝试通过忽略相冲突的目标来采取补救措施,但有些错误会导致守护进程退出。
与配置参数的设置相关的警告,即使从技术角度来说是正确的,但可能不适合指定的执行环境。例如将所有 CPU 资源标记为固定,这意味着 poold 不能在处理器集之间移动 CPU 资源。
包含进行配置调试时所需详细信息的消息。通常情况下,管理员不使用此信息。
可以生成以下类型的消息:
由于无法预测的监视故障产生的问题。它会导致守护进程退出,需要管理员立即关注。
由于无法预测的监视错误产生的问题。可请管理员来干预和更正。
有关资源控制区转换的消息。
有关资源使用率统计信息的消息。
包含进行监视调试时所需详细信息的消息。通常情况下,管理员不使用此信息。
可以生成以下类型的消息:
可显示有关做出最佳决策的问题的消息。例如可能包括受最小值和最大值或固定的组件数严格约束的资源集。
可显示与执行最佳分配时由于无法预测的限制而产生的问题相关的消息。例如从包含绑定资源使用者的处理器集上移除最后一个处理器。
可显示有关可用配置或由于会覆盖决策历史记录而未能实现的配置的消息。
可显示有关可考虑的备用配置的消息。
包含进行优化调试时所需详细信息的消息。通常情况下,管理员不使用此信息。
system.poold.log-location 属性用于指定 poold 记录的输出的位置。您可以为 poold 输出指定 SYSLOG 的位置(请参见 syslog(3C))。
如果未指定此属性,则 poold 记录的输出的缺省位置为 /var/log/pool/poold。
当从命令行调用 poold 时,不使用此属性。日志条目将写入发出调用的终端上的 stderr。
如果 poold 处于活动状态,则 logadm.conf 文件将包含管理缺省文件 /var/log/pool/poold 的条目。此条目为:
/var/log/pool/poold -N -s 512k
请参见 logadm(1M) 和 logadm.conf(4) 手册页。
本节介绍了 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 资源控制器。
假定与工作负荷无关的目标的影响在目标函数的评估期间保持不变。与工作负荷无关的目标仅在其中一个异步违规触发重新评估时才会再次评估。
当资源控制器确定某个资源使用者的资源不足时,第一反应就是增加资源以改善性能。
此时将检查并评估在控制范围的配置中指定的满足目标的备用配置。
由于针对响应监视了变化的资源并评估了每个资源分区,因此,此进程会随着时间不断完善。可参阅决策历史记录,以避免再次使用过去在获取目标函数方面未带来任何改进的配置。其他信息(如进程名称和数量)用于进一步评估历史数据的实用性。
如果守护进程不能进行更正操作,则会记录此情况。有关更多信息,请参见poold 日志信息。
poolstat 实用程序用于在系统上启用池的情况下监视资源利用率。此实用程序会重复检查系统上所有活动的池,并基于选定的输出模式来报告统计信息。通过 poolstat 统计信息,您可以确定哪些资源分区过度使用。您可以分析这些统计信息,做出有关在系统处于资源压力下时资源重新分配的决策。
poolstat 实用程序包括可用于检查特定池并报告资源集特定的统计信息的选项。
如果您在系统上实现区域并且在非全局区域中使用 poolstat,则会显示有关与此区域的池关联的资源的信息。
有关 poolstat 实用程序的更多信息,请参见 poolstat(1M) 手册页。有关 poolstat 任务和使用情况的信息,请参见使用 poolstat 报告与池相关的资源统计信息。
在缺省输出格式下,poolstat 会输出一个标题行,然后为每个池显示一行信息。池信息行以池 ID 和池名称开头,后接一列连接到池上的处理器集的统计数据。附加在多个池上的资源集将多次显示,一次显示一个池的资源集。
列标题如下:
池 ID。
池名。
资源集 ID。
资源集名。
资源集类型。
资源集大小的最小值。
资源集大小的最大值。
当前资源集大小。
当前资源集使用量的度量。
此使用量的计算方法为资源集的利用率百分比乘以资源集大小。如果资源集在上次抽样间隔期间已重新配置,则可能不报告该值。未报告的值以连字符 (-) 的形式出现。
资源集上的负荷的完全表示。
有关此属性的更多信息,请参见 libpool(3LIB) 手册页。
您可以在 poolstat 输出中指定以下内容:
列的顺序
显示的标题
您可以自定义 poolstat 执行的操作。您可以设置报告的抽样间隔并指定统计信息重复的次数。
调整 poolstat 执行的定期操作的间隔。所有间隔都以秒为单位指定。
指定统计信息重复的次数。缺省情况下,poolstat 仅报告一次统计信息。
如果未指定 interval 和 count,则报告一次统计信息。如果指定了 interval 而未指定 count,则会无限次地报告统计信息。
下表中介绍的命令提供了池功能的主要管理接口。有关在启用了区域的系统上使用这些命令的信息,请参见区域中使用的资源池。
手册页参考 |
说明 |
---|---|
在系统上启用或禁用池功能。激活特定配置或删除当前配置,并将关联的资源返回到其缺省状态。如果在不带选项的情况下运行,则 pooladm 会显示当前的动态池配置。 |
|
启用手动绑定功能,将项目、任务和进程绑定到资源池中。 |
|
提供对池和集的配置操作。使用此工具创建的配置通过使用 pooladm 在目标主机上进行实例化。 如果带 c 选项的 -info 子命令参数运行,则 poolcfg 会显示有关 /etc/pooladm.conf 中的静态配置的信息。如果添加了一个文件名参数,则此命令将显示有关命名文件中包含的静态配置的信息。例如,poolcfg -c info /tmp/newconfig 会显示有关 /tmp/newconfig 文件中包含的静态配置的信息。 |
|
池系统守护进程。此守护进程使用系统目标和可查看的统计信息来达到管理员指定的系统性能目标。如果在未满足目标的情况下无法进行更正操作,则 poold 将记录此情况。 |
|
显示与池相关的资源统计信息。简化性能分析并为系统管理员提供资源分区和重新分区任务方面的支持信息。提供了一些选项来检查指定的池并报告资源集特定的统计信息。 |
库 API 由 libpool 提供(请参见 libpool(3LIB) 手册页)。程序可使用库来处理池配置。