手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

poolcfg(1M)

名称

poolcfg - 创建和修改资源池配置文件

用法概要

/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 都将会挂起。挂起将会持续,直到写入进程关闭该文件。

选项

支持以下选项:

–c command

指定 poolcfg 命令。支持多个 –c 选项,并将按顺序处理这些选项。请参见下面的“用法”部分。

–d

直接对内核状态进行操作。内核状态也称为池动态配置。

不允许使用文件名参数。将基于内核状态执行命令(如通过 pooladm(1M) 命令所见),并将立即提交任何修改。

–f command-file

command-file 中获取命令。command-filepoolcfg 命令组成,每行一个命令。

–h

显示有关编辑命令语法的扩展信息。

用法

支持以下 poolcfg 命令:

info [<entity-type> <entity-name> ]

以用户可读的形式将配置(或指定部分)显示至标准输出。如果没有指定实体,将显示系统信息。因此,poolcfg –c 'info' 是等同于 poolcfg – c 'info system default' 的调用。

create <entity-type> <entity-name> [(property-list)]

创建具有指定类型和名称的实体。可以创建 poolpset 类型的实体。创建的 pset 将关联到 pool_default。创建的池将关联到 pset_default

可以选择性地提供 property-list 以为一个或多个属性提供初始值。

destroy <entity-type> <entity-name>

删除指定的实体。可以销毁 poolpset 类型的实体。如果销毁 pset,则与该 pset 关联的任何池将与池 "pool_default" 关联。

modify <entity-type> <entity-name> [(property-list)]

更改指定实体上列出的属性。修改 pset.minpset.max 属性将会删除上一 assign 命令设置的任何配置。

associate pool <entity-name> ( pset <entity-name> )

将池关联到 pset。池和 pset 都必须存在。将删除以前的 pset 关联,因为池只可以关联到单个 pset。

assign to pset <entity-name> ( <cpu-resource-list> )

将一组特定的 cpu、核心或套接字分配给 pset。必须为 pset 分配所有相同类型的 cpu 资源。

在池配置文件中,如果 cpu 资源已经分配给其他 pset,则分配命令将失败。

对于给定的 pset,assign 命令将替换以前的任何修改命令设置的配置。如果以前的分配命令为同一类型,则会保留这些命令。例如,将核心分配给已经分配了核心的 pset 将会添加到已经分配的核心,但不会替换它们。

unassign from pset <entity-name> ( [ <cpu-resource-list> | all ] )

从 pset 中删除 cpu、核心或套接字分配。特殊标记 "all" 可用于取消分配所有资源。如果未分配所有 cpu 资源,且 pset 绑定了一个或多个进程,则配置将无法提交。

unassign 命令只能继成功执行 assign 命令之后成功执行。

transfer to pset <tgt-pset-name> ( <cpu-resource-list> )

转移一个或多个特定 cpu。仅支持 cpu 资源类型。

transfer <quantity> from pset <src-pset-name> to <tgt-pset-name>

将一些 cpu 从 pset src-pset-name 转移到 pset tgt-pset-name。

transfer <quantity> to pset <tgt-pset-name> from <src-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 资源。

discover

创建一个与当前内核池配置匹配的新池配置文件,作为 pooladm(1M) 实用程序的输出。

poolcfg 直接对内核进行操作时,此命令没有效果。请参见 –d 选项。

应避免使用此命令。创建配置的首选方法是配合使用 pooladm(1M)–s 选项来导出动态配置。

rename <entity-type> <entity-name> to <entity-name>

将系统上实体的名称更改为新名称。

poolcfg 命令使用以下标记:

entity-type

可以为以下任一项:

system

计算机级别实体。只有一个名为 "default" 的系统实体。

pool(池)

与 pset 关联的命名对象。多个池可以与同一处理器集关联,但 pset 只能与单个池关联。

pset

一个代表处理器资源集合的对象。

cpu

一个代表单个虚拟处理器的对象,也称为硬件线程。

entity-name

实体名称随实体类型而异。

对于 "system" 类型,只存在一个实体,名称为 "default"。system 实体存储系统范围的池属性。

对于 "pool" 类型,始终有一个 "pool_default" 以及零个或多个用户定义的池。

对于 "pset" 类型,始终有一个 "pset_default" 以及零个或多个用户定义的 pset。

对于 "cpu" 类型,系统上的每个 cpu 均有一个 cpu 实体,每个 cpu 实体有一个数字名称,等同于其 cpuid。

prop-type

可以为以下任一项:

boolean

值为 true 或 false 之一。

int

64 位带符号的整数值。

uint

64 位不带符号的整数值。

string

字符串由引号 (") 分隔,并且支持以 formats(5) 定义的字符转义序列。

float

不支持科学记数法。

prop-name

所处理实体上属性的名称。有关资源池框架理解的属性的列表,请参见 libpool(3LIB) 手册页。也可以设置和删除用户定义的属性。

value

前面的 prop-type 定义的有效值。

property-list

属性列表是分配的一个或多个属性值的列表。

<prop-type> <prop-name> = <value>
  [ ; <prop-type> <prop-name> = <value> ]*

也可以使用 property-list 中的以下语法指定属性删除。

~ <prop-type> <prop-name>
cpu-res-type

一个代表 cpu 资源的对象。可以为以下任一项:

cpu

一个虚拟 cpu,也称为硬件线程。

core

一组共享计算资源的虚拟 cpu。

socket

一组包含在物理处理器内的核心。

cpu-res-id

cpu、核心或套接字的数字 id,如 psrinfo -c 所列。

cpu-resource-list

一个或多个 cpu 资源的列表。列表中的所有资源必须具有相同的 cpu 类型。

cpu-res-type cpu-res-id [ ; cpu-res-type cpu-res-id ]
range

由 - 分隔的最小和最大值。例如,范围二到四表示为 "2-4"。

quantity

单个正整数值。

示例

示例 1 启用池并创建新配置文件

以下命令将启用池服务并创建新的池配置文件。所创建的文件为 /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 为 2cpu 移动到内核中的处理器集 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)

属性类型
属性值
可用性
system/resource-mgmt/resource-pools
接口稳定性
请参见下文。

调用为 Committed(已确定)。输出是 "Uncommitted"(未确定)。

另请参见

pooladm(1M)poolbind(1M)poold(1M)libpool(3LIB)attributes(5)formats(5)

在 Oracle Solaris 11.2 中进行资源管理

创建和使用 Oracle Solaris 区域