poolcfg - リソースプール構成ファイルの作成および変更
/usr/sbin/poolcfg -c command [-d | [filename]]
/usr/sbin/poolcfg -f command-file [-d | [filename]]
/usr/sbin/poolcfg -h
poolcfg ユーティリティーは、プール、pset、システム全体のプールプロパティーに対する構成操作を提供します。これらの操作は、既存の構成ファイルに基づいて実行されます。ファイル引数が指定されていない場合、デフォルトの構成ファイル /etc/pooladm.conf が使用されます。
ブート時にデフォルトのプール構成を適用するには、タイプ svc:/system/pools:default サービスを有効にしておく必要があります。サービスは、svcadm(8) を使用するか、pooladm(8) ユーティリティーへの –e オプションで有効にできます。
/etc/pooladm.conf はデフォルトでは存在しません。作成手順については下の例 1 を参照してください。
svc:/system/pools:default サービスが有効な場合、この構成ファイルはシステムのブート中に適用されます。pooladm(8) ユーティリティーの –c オプションを使用して、構成ファイルを適用することもできます。これは、プール構成の適用と呼ばれます。構成を適用すると、プールおよび pset がカーネル内に作成され、それらにプロセスをバインドできます。このカーネル状態はプール動的構成または実行中の構成と呼ばれます。
poolcfg に –d オプションを使用すると、操作は構成ファイルに対してではなく、実行中の構成に対して直接実行されます。これらの変更はリブート時に永続せず、プール構成ファイルの将来の適用によって強制削除されます。poolcfg -d によって構成ファイルに行われた実行時変更を取得するには、pooladm(8) ユーティリティーに –s オプションを使用します。
プール構成ファイルは、poolcfg または libpool (3LIB) を使用して構築および編集する必要のある構造化ファイルです。
別の poolcfg -d や libpool.so.1 を利用するプロセスなどの別のプロセスによって、書き込み用に動的構成がすでに開かれている場合、変更操作を使用する poolcfg -d の呼び出しはハングアップします。ハングアップは、書き込みプロセスがファイルが閉じるまで永続します。
このコマンドを使用して、psrset(8) によって作成された pset を変更することはできません。これには、psrset(8) pset にすでに割り当てられている CPU の割り当てや転送が含まれます。それらの pset を操作するには、psrset(8) を参照してください。poolcfg によって作成された pset は「プール pset」と呼ばれます。
サポートしているオプションは、次のとおりです。
poolcfg コマンドを指定します。複数の –c オプションがサポートされ、順番に処理されます。後述の「使用法」セクションを参照してください。
実行中の構成に対して直接操作します。これは、libpool(3LIB) ではプール動的構成とも呼ばれます。
filename 引数は許可されません。pooladm(8) コマンドで確認できるように、コマンドは実行中の構成に対して実行され、すべての変更がただちにコミットされます。
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 関連付けは削除されます。
このコマンドのターゲットプールは、pool_default または psrset(8) によって作成された pset のプールでない可能性があります。このコマンドのターゲット pset は、psrset(8) によって作成された pset でない可能性があります。
CPU、コア、またはソケットの特定のセットを pset に割り当てます。pset は、cpu、コア、またはソケットの 1 つにのみ割り当てることができ、これらのタイプの混合に割り当てることはできません。
プール構成ファイル内で、cpu、コア、またはソケットがすでに別の pset に割り当てられている場合、assign コマンドは失敗します。
指定された pset に対し、assign コマンドは、以前の modify コマンドによって設定された構成を置き換えます。以前の assign コマンドは、同じタイプであれば保持されます。たとえば、すでにコアが割り当てられている pset にコアを割り当てた場合、すでに割り当てられているコアを置き換えるのではなく、それらに追加されます。
psrset(8) ユーティリティーを使用して pset に割り当てられた CPU は、このような割り当てを含むプール構成が pooladm -c で適用されると、プール pset への割り当てに失敗します。また、poolcfg -dc を使用して、実行中の構成内のプール pset にそのような CPU を直接割り当てると失敗します。一般に、psrset(8) pset によって使用中の CPU はプール pset によって使用できません。最初に、psrset -r を使用して削除する必要があります。
CPU、コア、またはソケットの割り当てを pset から削除します。特殊トークン「all」を使用すると、すべての cpu、コア、またはソケットの割り当てを解除できます。すべての cpu、コア、またはソケットが割り当て解除され、pset に 1 つ以上のプロセスがバインドされている場合、構成は適用できません。
assign コマンドが成功したあとにのみ、unassign コマンドは成功します。
psrset(8) ユーティリティーによって作成された pset は、このコマンドの有効なターゲットではありません。それらの pset を操作するには、psrset(8) を使用してください。
1 つ以上の特定の cpu をターゲット pset に転送します。ソース pset は、特定の cpu が現在存在する pset です。次の「転送の制約」を参照してください。
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、コア、またはソケットを持つことができる)。
いずれの pset も、psrset(8) によって作成された pset でない可能性があります。
pooladm(8) ユーティリティーによる出力として、現在実行中のプール構成に一致する新しいプール構成ファイルを作成します。
poolcfg が実行中の構成に対して直接動作する場合、このコマンドは効果を持ちません。–d オプションを参照してください。
構成を作成するための優先される方法は、–s オプションを付けた pooladm(8) を使用して、動的構成をエクスポートすることです。
システム上の特定のエンティティーの名前を別の名前に変更します。
このコマンドのターゲットは、「pool_default」、「pset_default」、または psrset(8) によって作成されたプールや pset でない可能性があります。
poolcfg コマンドは次のトークンを使用します。
次のいずれかが可能です。
マシンレベルのエンティティー。名前が「default」のシステムエンティティーは 1 つだけ存在します。
pset に関連付けられた名前付きオブジェクト。同じプロセッサセットに複数のプールを関連付けられますが、pset には単一プールのみを関連付けられます。
cpu のコレクションを表すオブジェクト。
単一の仮想プロセッサを表すオブジェクト (ハードウェアスレッドまたはストランドとも呼ばれます)。
エンティティー名はエンティティータイプごとに変わります。
タイプ「system」の場合、名前「default」のエンティティーは 1 つだけ存在します。システムエンティティーには、システム全体のプールプロパティーが保存されます。
タイプ「pool」の場合、常に「pool_default」と、ゼロ個以上のユーザー定義プールが存在します。
タイプ「pset」の場合、常に「pset_default」と、ゼロ個以上のユーザー定義 pset が存在します。
タイプ「cpu」の場合、システム上の CPU ごとに CPU エンティティーがあり、その cpuid と同じ数値名がそれぞれに付けられています。
次のいずれかが可能です。
2 つの値 true、false のいずれかを取ります。
64 ビット符号付き整数値。
64 ビット符号なし整数値。
文字列は引用符 (") で区切ります。formats(7) で定義されている文字エスケープシーケンスがサポートされます。
科学用の表記はサポートされません。
操作されているエンティティーのプロパティーの名前。リソースプールフレームワークで認識されるプロパティーのリストについては、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-res-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 という名前のプールと、pset Small を作成します。まず、pset が作成され、次にプールが作成され、それにセットが関連付けられます。最後に、構成が適用され、実行中のシステム上でプールおよび pset が作成されます。
# cat command-file.txt create pset Small (uint pset.min = 2; uint pset.max = 2) create pool associate pool Accounting ( pset Small ) # 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 boolean system.project-fallback-to-default true boolean system.zone-fallback-to-default false 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 を pset pset1 に移動する
次のコマンドは、カーネル内で、ID 2 の cpu をプロセッサセット pset1 に移動します。
# poolcfg -dc 'transfer to pset pset1 ( cpu 2 )'使用例 7 実行中の構成内で 2 つの cpu を pset 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(7) を参照してください。
|
呼び出しは「確実」です。出力は「不確実」です。
libpool(3LIB)、attributes(7)、formats(7)、resource-management(7)、pooladm(8)、poolbind(8)、poold(8)