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 の呼び出しはハングアップします。ハングアップは、書き込みプロセスがファイルが閉じるまで永続します。
サポートしているオプションは、次のとおりです。
poolcfg コマンドを指定します。複数の –c オプションがサポートされ、順番に処理されます。後述の「使用法」セクションを参照してください。
カーネル状態に対して直接操作を行います。このカーネル状態は、プール動的構成とも呼ばれます。
filename 引数は許可されません。コマンドは、pooladm(1M) コマンドで示されるようにカーネル状態に対して実行され、変更はすぐに確定されます。
command-file からコマンドを取得します。command-file は poolcfg コマンドから構成されます (1 行に 1 つ)。
編集コマンドの構文に関する詳細情報を表示します。
次の poolcfg コマンドがサポートされています。
構成 (または指定された部分) を、人間が読める形式で標準出力に表示します。エンティティーが指定されなかった場合、システムの情報が表示されます。したがって、poolcfg –c 'info' は、poolcfg – c 'info system default' と同等の呼び出しです。
指定されたタイプと名前のエンティティーを作成します。タイプ pool および pset のエンティティーを作成できます。作成された pset は pool_default に関連付けられます。作成されたプールは pset_default に関連付けられます。
オプションで 1 つ以上のプロパティーの初期値を提供するために property-list を指定できます。
指定されたエンティティーを削除します。タイプ pool および pset のエンティティーを破棄できます。pset が破棄されると、その pset に関連付けられているプールは「pool_default」プールに関連付けられます。
指定されたエンティティー上の指定された一連のプロパティーを変更します。pset.min および pset.max プロパティーを変更すると、前の assign コマンドによって設定された構成が削除されます。
プールを pset に関連付けます。プールと pset がどちらも存在している必要があります。プールは単一 pset にのみ関連付けることができるので、以前の pset 関連付けは削除されます。
CPU、コア、またはソケットの特定のセットを pset に割り当てます。pset はすべてが同じタイプの CPU リソースに割り当てる必要があります。
プール構成ファイル内で CPU リソースがすでに別の pset に割り当てられている場合、assign コマンドは失敗します。
指定された pset に対し、assign コマンドは、以前の modify コマンドによって設定された構成を置き換えます。以前の assign コマンドは、同じタイプであれば保持されます。たとえば、すでにコアが割り当てられている pset にコアを割り当てた場合、すでに割り当てられているコアを置き換えるのではなく、それらに追加されます。
CPU、コア、またはソケットの割り当てを pset から削除します。特殊トークン「all」を使用すると、すべてのリソースの割り当てを解除できます。すべての CPU リソースが割り当て解除され、pset に 1 つ以上のプロセスがバインドされている場合、構成は確定できません。
assign コマンドが成功したあとにのみ、unassign コマンドは成功します。
1 つ以上の特定の CPU を移動します。CPU リソースタイプだけがサポートされています。
pset src-pset-name から pset tgt-pset-name に複数の CPU を移動します。
pset tgt-pset-name に pset src-pset-name から指定された数量の CPU を移動します。
ソースまたはターゲット pset が assign コマンドで構成されている場合、transfer コマンドは失敗します。pset_default は割り当てられている数量を超える CPU リソースを持てるので、この規則は pset_default には適用されません。
transfer コマンドは、ソースまたはターゲット pset に構成される CPU の数が最小数または最大数を超える場合、失敗します。この規則は、pset_default の最大サイズには適用されません (pset.min および pset.max プロパティーで割り当てられた数量を超える CPU リソースを持てる)。
pooladm(1M) ユーティリティーによる出力として、現在のカーネルプール構成に一致する新しいプール構成ファイルを作成します。
poolcfg がカーネルに対して直接操作する場合、このコマンドは効果を持ちません。–d オプションを参照してください。
このコマンドはできるだけ使用しないでください。構成を作成するために推奨されている方法は、pooladm(1M) の –s オプションを使って動的構成をエクスポートすることです。
システム上の特定のエンティティーの名前を別の名前に変更します。
poolcfg コマンドは次のトークンを使用します。
次のいずれかが可能です。
マシンレベルのエンティティー。名前が「default」のシステムエンティティーは 1 つだけ存在します。
pset に関連付けられた名前付きオブジェクト。同じプロセッサセットに複数のプールを関連付けられますが、pset には単一プールのみを関連付けられます。
プロセッサリソースのコレクションを表すオブジェクト。
単一の仮想プロセッサを表すオブジェクト (ハードウェアスレッドとも呼ばれます)。
エンティティー名はエンティティータイプごとに変わります。
タイプ「system」の場合、名前「default」のエンティティーは 1 つだけ存在します。システムエンティティーには、システム全体のプールプロパティーが保存されます。
タイプ「pool」の場合、常に「pool_default」と、ゼロ個以上のユーザー定義プールが存在します。
タイプ「pset」の場合、常に「pset_default」と、ゼロ個以上のユーザー定義 pset が存在します。
タイプ「cpu」の場合、システム上の CPU ごとに CPU エンティティーがあり、その cpuid と同じ数値名がそれぞれに付けられています。
次のいずれかが可能です。
2 つの値 true、false のいずれかを取ります。
64 ビット符号付き整数値。
64 ビット符号なし整数値。
文字列は引用符 (") で区切られ、formats(5) で定義されている文字エスケープシーケンスをサポートします。
科学用の表記はサポートされません。
操作されているエンティティーのプロパティーの名前。リソースプールフレームワークで認識されるプロパティーのリストについては、libpool(3LIB) マニュアルページを参照してください。ユーザー定義のプロパティーも設定および削除できます。
直前の prop-type で定義された有効な値。
プロパティーリストとは、1 つ以上のプロパティー値割り当てのリストです。
<prop-type> <prop-name> = <value> [ ; <prop-type> <prop-name> = <value> ]*
プロパティーの削除は、property-list 内で次の構文を使用して指定することもできます。
~ <prop-type> <prop-name>
CPU リソースを表すオブジェクト。次のいずれかが可能です。
仮想 CPU (ハードウェアスレッドとも呼ばれます)。
計算リソースを共有する仮想 CPU のグループ。
物理プロセッサ内に含まれるコアのグループ。
psrinfo -c でリストされる、CPU、コア、またはソケットの数値 ID。
1 つ以上の CPU リソースのリスト。リスト内のリソースの cpu-type はすべて同じである必要があります。
cpu-res-type cpu-res-id [ ; cpu-res-type cpu-res-id ]
- で区切られる最小値と最大値。たとえば、2 から 4 の範囲は「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) を参照してください。
|
呼び出しは「確実」です。出力は「不確実」です。
pooladm(1M)、poolbind(1M)、poold(1M)、libpool(3LIB)、attributes(5)、formats(5)
Oracle Solaris 11.3 でのリソースの管理
Oracle Solaris ゾーンの作成と使用