Go to main content
マニュアルページ セク ション 1M: シ ステム管理コマン ド

印刷ビューの終了

更新: 2016年12月6日
 
 

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

カーネル状態に対して直接操作を行います。このカーネル状態は、プール動的構成とも呼ばれます。

filename 引数は許可されません。コマンドは、pooladm(1M) コマンドで示されるようにカーネル状態に対して実行され、変更はすぐに確定されます。

–f command-file

command-file からコマンドを取得します。command-filepoolcfg コマンドから構成されます (1 行に 1 つ)。

–h

編集コマンドの構文に関する詳細情報を表示します。

使用法

次の poolcfg コマンドがサポートされています。

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

構成 (または指定された部分) を、人間が読める形式で標準出力に表示します。エンティティーが指定されなかった場合、システムの情報が表示されます。したがって、poolcfg –c 'info' は、poolcfg – c 'info system default' と同等の呼び出しです。

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

指定されたタイプと名前のエンティティーを作成します。タイプ pool および pset のエンティティーを作成できます。作成された pset は pool_default に関連付けられます。作成されたプールは pset_default に関連付けられます。

オプションで 1 つ以上のプロパティーの初期値を提供するために property-list を指定できます。

destroy <entity-type> <entity-name>

指定されたエンティティーを削除します。タイプ pool および pset のエンティティーを破棄できます。pset が破棄されると、その pset に関連付けられているプールは「pool_default」プールに関連付けられます。

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

指定されたエンティティー上の指定された一連のプロパティーを変更します。pset.min および pset.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 に割り当てられている場合、assign コマンドは失敗します。

指定された pset に対し、assign コマンドは、以前の modify コマンドによって設定された構成を置き換えます。以前の assign コマンドは、同じタイプであれば保持されます。たとえば、すでにコアが割り当てられている pset にコアを割り当てた場合、すでに割り当てられているコアを置き換えるのではなく、それらに追加されます。

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

CPU、コア、またはソケットの割り当てを pset から削除します。特殊トークン「all」を使用すると、すべてのリソースの割り当てを解除できます。すべての CPU リソースが割り当て解除され、pset に 1 つ以上のプロセスがバインドされている場合、構成は確定できません。

assign コマンドが成功したあとにのみ、unassign コマンドは成功します。

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

1 つ以上の特定の CPU を移動します。CPU リソースタイプだけがサポートされています。

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

pset src-pset-name から pset tgt-pset-name に複数の CPU を移動します。

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

pset tgt-pset-namepset src-pset-name から指定された数量の CPU を移動します。

ソースまたはターゲット pset が assign コマンドで構成されている場合、transfer コマンドは失敗します。pset_default は割り当てられている数量を超える CPU リソースを持てるので、この規則は pset_default には適用されません。

transfer コマンドは、ソースまたはターゲット pset に構成される CPU の数が最小数または最大数を超える場合、失敗します。この規則は、pset_default の最大サイズには適用されません (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」のシステムエンティティーは 1 つだけ存在します。

プール

pset に関連付けられた名前付きオブジェクト。同じプロセッサセットに複数のプールを関連付けられますが、pset には単一プールのみを関連付けられます。

pset

プロセッサリソースのコレクションを表すオブジェクト。

cpu

単一の仮想プロセッサを表すオブジェクト (ハードウェアスレッドとも呼ばれます)。

entity-name

エンティティー名はエンティティータイプごとに変わります。

タイプ「system」の場合、名前「default」のエンティティーは 1 つだけ存在します。システムエンティティーには、システム全体のプールプロパティーが保存されます。

タイプ「pool」の場合、常に「pool_default」と、ゼロ個以上のユーザー定義プールが存在します。

タイプ「pset」の場合、常に「pset_default」と、ゼロ個以上のユーザー定義 pset が存在します。

タイプ「cpu」の場合、システム上の CPU ごとに CPU エンティティーがあり、その cpuid と同じ数値名がそれぞれに付けられています。

prop-type

次のいずれかが可能です。

boolean

2 つの値 true、false のいずれかを取ります。

int

64 ビット符号付き整数値。

uint

64 ビット符号なし整数値。

string

文字列は引用符 (") で区切られ、formats(5) で定義されている文字エスケープシーケンスをサポートします。

float

科学用の表記はサポートされません。

prop-name

操作されているエンティティーのプロパティーの名前。リソースプールフレームワークで認識されるプロパティーのリストについては、libpool(3LIB) マニュアルページを参照してください。ユーザー定義のプロパティーも設定および削除できます。

value

直前の prop-type で定義された有効な値。

property-list

プロパティーリストとは、1 つ以上のプロパティー値割り当てのリストです。

<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

psrinfo -c でリストされる、CPU、コア、またはソケットの数値 ID。

cpu-resource-list

1 つ以上の CPU リソースのリスト。リスト内のリソースの cpu-type はすべて同じである必要があります。

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

- で区切られる最小値と最大値。たとえば、2 から 4 の範囲は「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
インタフェースの安定性
下記を参照。

呼び出しは「確実」です。出力は「不確実」です。

関連項目

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

Oracle Solaris 11.3 でのリソースの管理

Oracle Solaris ゾーンの作成と使用