/usr/sbin/poolcfg -c command [-d | [filename]]
/usr/sbin/poolcfg -f command-file [-d | [filename]]
/usr/sbin/poolcfg -h
poolcfg 实用程序提供有关池、集合和系统范围池属性的配置操作。这些操作基于现有的配置文件执行。如果未指定文件参数,则将使用缺省配置文件 /etc/pooladm.conf。
必须先启用 svc:/system/pools:default 类型的服务,才能创建或提交池配置文件。可以通过 svcadm(1M) 或通过 pooladm(1M) 实用程序的 –e 选项来启用该服务。
缺省情况下 /etc/pooladm.conf 不存在。有关如何创建它的说明,请参见下面的示例 1。
如果启用了 svc:/system/pools:default 服务,则会在系统引导期间应用此配置文件。还可以使用 pooladm(1M) 实用程序的 –c 选项应用该配置文件。这称为提交池配置。提交配置时,将在内核中创建池和 pset,然后进程可以绑定到它们。此内核状态称为池动态配置。
如果使用 poolcfg 的 –d 选项,则操作将直接基于运行时内核状态而不是基于配置文件执行。这些变化在重新引导后将不会持续存在,将受到未来应用的池配置文件的破坏。要捕获通过 poolcfg -d 对配置文件进行的运行时更改,请使用 pooladm(1M) 实用程序的 –s 选项。
池配置文件是结构化文件,必须使用 poolcfg(1m) 或 libpool(3LIB) 进行构建和编辑。
如果动态配置已经由其他进程(例如其他 poolcfg -d 或使用 libpool.so.1 的进程)打开供进行写入,则使用任何修改操作调用 poolcfg -d 都将会挂起。挂起将会持续,直到写入进程关闭该文件。
支持以下选项:
指定 poolcfg 命令。支持多个 –c 选项,并将按顺序处理这些选项。请参见下面的“用法”部分。
直接对内核状态进行操作。内核状态也称为池动态配置。
不允许使用文件名参数。将基于内核状态执行命令(如通过 pooladm(1M) 命令所见),并将立即提交任何修改。
从 command-file 中获取命令。command-file 由 poolcfg 命令组成,每行一个命令。
显示有关编辑命令语法的扩展信息。
支持以下 poolcfg 命令:
以用户可读的形式将配置(或指定部分)显示至标准输出。如果没有指定实体,将显示系统信息。因此,poolcfg –c 'info' 是等同于 poolcfg – c 'info system default' 的调用。
创建具有指定类型和名称的实体。可以创建 pool 和 pset 类型的实体。创建的 pset 将关联到 pool_default。创建的池将关联到 pset_default。
可以选择性地提供 property-list 以为一个或多个属性提供初始值。
删除指定的实体。可以销毁 pool 和 pset 类型的实体。如果销毁 pset,则与该 pset 关联的任何池将与池 "pool_default" 关联。
更改指定实体上列出的属性。修改 pset.min 和 pset.max 属性将会删除上一 assign 命令设置的任何配置。
将池关联到 pset。池和 pset 都必须存在。将删除以前的 pset 关联,因为池只可以关联到单个 pset。
将一组特定的 cpu、核心或套接字分配给 pset。必须为 pset 分配所有相同类型的 cpu 资源。
在池配置文件中,如果 cpu 资源已经分配给其他 pset,则分配命令将失败。
对于给定的 pset,assign 命令将替换以前的任何修改命令设置的配置。如果以前的分配命令为同一类型,则会保留这些命令。例如,将核心分配给已经分配了核心的 pset 将会添加到已经分配的核心,但不会替换它们。
从 pset 中删除 cpu、核心或套接字分配。特殊标记 "all" 可用于取消分配所有资源。如果未分配所有 cpu 资源,且 pset 绑定了一个或多个进程,则配置将无法提交。
unassign 命令只能继成功执行 assign 命令之后成功执行。
转移一个或多个特定 cpu。仅支持 cpu 资源类型。
将一些 cpu 从 pset src-pset-name 转移到 pset tgt-pset-name。
将一些 cpu 从 pset tgt-pset-name 转移到 pset src-pset-name。
如果使用 assign 命令配置源或目标 pset,则 transfer 命令会失败。此规则不适用于 pset_default,因为 pset_default 所具有的 cpu 资源可能多于为其指定的 cpu 资源。
如果会导致超出为源或目标 pset 配置的 cpu 数量下限或上限,则 transfer 命令将失败。此规则不适用于 pset_default 的最大大小,因为它所具有的 cpu 资源可能多于为其指定的 cpu 资源或通过 pset.min 和 pset.max 属性分配的 cpu 资源。
创建一个与当前内核池配置匹配的新池配置文件,作为 pooladm(1M) 实用程序的输出。
当 poolcfg 直接对内核进行操作时,此命令没有效果。请参见 –d 选项。
应避免使用此命令。创建配置的首选方法是配合使用 pooladm(1M) 和 –s 选项来导出动态配置。
将系统上实体的名称更改为新名称。
poolcfg 命令使用以下标记:
可以为以下任一项:
计算机级别实体。只有一个名为 "default" 的系统实体。
与 pset 关联的命名对象。多个池可以与同一处理器集关联,但 pset 只能与单个池关联。
一个代表处理器资源集合的对象。
一个代表单个虚拟处理器的对象,也称为硬件线程。
实体名称随实体类型而异。
对于 "system" 类型,只存在一个实体,名称为 "default"。system 实体存储系统范围的池属性。
对于 "pool" 类型,始终有一个 "pool_default" 以及零个或多个用户定义的池。
对于 "pset" 类型,始终有一个 "pset_default" 以及零个或多个用户定义的 pset。
对于 "cpu" 类型,系统上的每个 cpu 均有一个 cpu 实体,每个 cpu 实体有一个数字名称,等同于其 cpuid。
可以为以下任一项:
值为 true 或 false 之一。
64 位带符号的整数值。
64 位不带符号的整数值。
字符串由引号 (") 分隔,并且支持以 formats(5) 定义的字符转义序列。
不支持科学记数法。
所处理实体上属性的名称。有关资源池框架理解的属性的列表,请参见 libpool(3LIB) 手册页。也可以设置和删除用户定义的属性。
前面的 prop-type 定义的有效值。
属性列表是分配的一个或多个属性值的列表。
<prop-type> <prop-name> = <value> [ ; <prop-type> <prop-name> = <value> ]*
也可以使用 property-list 中的以下语法指定属性删除。
~ <prop-type> <prop-name>
一个代表 cpu 资源的对象。可以为以下任一项:
一个虚拟 cpu,也称为硬件线程。
一组共享计算资源的虚拟 cpu。
一组包含在物理处理器内的核心。
cpu、核心或套接字的数字 id,如 psrinfo -c 所列。
一个或多个 cpu 资源的列表。列表中的所有资源必须具有相同的 cpu 类型。
cpu-res-type cpu-res-id [ ; cpu-res-type cpu-res-id ]
由 - 分隔的最小和最大值。例如,范围二到四表示为 "2-4"。
单个正整数值。
以下命令将启用池服务并创建新的池配置文件。所创建的文件为 /etc/pooladm.conf。它将包含 pool_default 和 pset_default。
# pooladm -e # pooladm -s示例 2 创建池和 pset
以下 poolcfg 脚本将创建一个名为 Accounting 的池和一个处理器集 small-1。首先创建处理器集,然后创建池,再将其与处理器集关联。最后,将提交配置以在运行的系统上创建池和 pset。
# cat command-file.txt create pset Small-1 (uint pset.min = 2; uint pset.max = 2) create pool associate pool Accounting ( pset Small-1 ) # poolcfg -f command-file.txt # pooladm -c示例 3 报告 pool_0
以下命令以用户可读形式在标准输出中提供有关 pool_0 的报告:
# poolcfg -c 'info pool pool_0'示例 4 销毁 pool_0 及其关联
以下命令销毁 pool_0。不会销毁与 pool_0 关联的 pset。
# poolcfg -c 'destroy pool pool_0'示例 5 显示当前配置
以下命令显示将在系统引导时应用的当前配置或下一个 pooladm -c 命令。
$ poolcfg -c 'info' system default string system.comment int system.version 1 boolean system.bind-default true string system.poold.objectives wt-load pool pool_default int pool.sys_id 0 boolean pool.active true boolean pool.default true int pool.importance 1 string pool.comment pset pset_default pset pset_default int pset.sys_id -1 boolean pset.default true uint pset.min 1 uint pset.max 65536 string pset.units population string pset.policy minmax string pset.restype cpu strintg pset.reslist uint pset.load 0 uint pset.size 2 string pset.comment cpu int cpu.sys_id 1 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 0 string cpu.comment string cpu.status on-line示例 6 将 ID 为 2 的 cpu 移动到内核中的处理器集 pset1
以下命令将 ID 为 2 的 cpu 移动到内核中的处理器集 pset1:
# poolcfg -dc 'transfer to pset pset1 ( cpu 2 )'示例 7 将 2 个 cpu 从内核中的处理器集 pset1 移动到处理器集 pset2 中
以下命令将 2 个 cpu 从内核中的处理器集 pset1 移动到处理器集 pset2 中:
# poolcfg -dc 'transfer 2 from pset pset1 to pset2'示例 8 将池配置为具有特定的核心列表
以下命令将池配置为具有特定的核心列表。
# poolcfg -c 'create pset pset1' # poolcfg -c 'assign to pset pset1 (core 0-3)'示例 9 删除池属性
以下命令删除用户以前对池设置的属性。
# poolcfg -c 'modify pool pset1 ( ~ string userprop1 )'
有关下列属性的说明,请参见 attributes(5):
|
调用为 Committed(已确定)。输出是 "Uncommitted"(未确定)。
pooladm(1M)、poolbind(1M)、poold(1M)、libpool(3LIB)、attributes(5)、formats(5)