Go to main content
マニュアルページ セク ション 1: ユー ザーコマンド

印刷ビューの終了

更新: 2016年12月6日
 
 

plgrp(1)

名前

plgrp - スレッドのホーム lgroup と lgroup アフィニティーの監視と変更

形式

plgrp [-F] [-h] pid | core [/lwps] ...
plgrp [-F] -i pid[/lwps] ...
plgrp [-F] -a lgroup_list pid[/lwps] ...
plgrp [-F] [-I default | none |future] 
     -H lgroup_list pid[/lwps] ...

plgrp [-F] [-I default | none |future] -H lgroup_list -e command [arguments]
plgrp [-F] [-I default | none | future] 
     -A lgroup_list/none | weak | strong [,...] pid[/lwps] ...

plgrp [-F] [-I default | none | future] 
     -A lgroup_list/none | weak |strong [,...] -e command [arguments]

plgrp [-F] -I default | none | future pid[/lwps]

plgrp [-F] -I default | none | future -e command [arguments] ...

説明

plgrp は、1 つ以上のプロセス、スレッド、または LWP のホーム lgrouplgroup アフィニティーを表示および設定します。

lgroup は、一連の CPU およびメモリーに類似するハードウェアデバイスを表します。これらの間には少し距離 (遅延) がある場合があります。システムの各 lgroup は、一意の lgroup ID によって識別されます。lgroup は、もっとも近いリソースを見つけやすくするために階層にまとめられます。lgroupslgroup 階層の詳細については、lgrpinfo(1) を参照してください。

デフォルトでは、各スレッドには、作成時にホーム lgroup が割り当てられます。CPU リソースまたはメモリーリソースをスレッドに割り当てる必要がある場合、システムは、スレッドのホームにもっとも近い位置にある使用可能なリソースを探すために、スレッドのホーム lgroup から順番に lgroup 階層を検索します。

通常、スレッドのホーム lgroup は、スレッドがもっともアフィニティーを持つ lgroup です。初期状態では、システムは各スレッドのホーム lgroup を選択しますが、その lgroup に対するスレッドのアフィニティーは none に設定されたままにします。スレッドがホームではないプロセッサセットに、より強い lgroup のアフィニティーを設定した場合、スレッドが CPU に関連付けられていないかぎり、スレッドのホームはその lgroup に変更されます。ホーム lgroup のアフィニティー (もしあれば) が削除された (none に設定) 場合、スレッドのホームは、そのプロセッサセットで 2 番目に高いアフィニティーを持つ lgroup に変更できます。

lgroup アフィニティーの各種レベルとそのセマンティクスの詳細については、lgrp_affinity_set(3LGRP) を参照してください。

使用法

lgroup の指定

lgroup_list は、次のものを 1 つ以上含むコンマで区切られたリストです。


- lgroup_ID
- Range of lgroup_IDs specified as
 <start lgroup_ID>-<end lgroup_ID>
- all
- root
- leaves

all キーワードは、システム内のすべての lgroup ID を表します。root キーワードは、ルート lgroup の ID を表します。leaves キーワードは、すべての leaf lgroup、つまり、子を持たない lgroup の ID を表します。

プロセスとスレッドの指定

plgrp は、スペース文字で区切られた 1 つ以上のプロセスまたはスレッドを引数に取ります。プロセスとスレッドは、proc(1) ツールと同様の形式で指定できます。プロセス ID は、整数の pid または /proc/pid として指定できます。/proc/pid を使用する場合、プロセスを指定するためにシェル展開を使用できます。たとえば、システム内のすべてのプロセスを指定するには /proc/* を使用します。プロセス ID が単独で指定された場合、plgrp の引数としてプロセスのすべてのスレッドが含められます。

スレッドは、pid/lwpid のようにプロセス ID とスレッド ID で明示的に指定できます。プロセスの複数のスレッドは、ハイフン (-) とコンマ (,) を使用すると、一度に選択できます。たとえば、pid/1,2,7-9 は、プロセス ID が pid であるプロセスのスレッド 1、2、7、8、および 9 を指定しています。

オプション

サポートしているオプションは、次のとおりです。

–a lgroup_list

指定された lgroup_list の指定されたプロセスまたはスレッドの lgroup のアフィニティーを表示します。

–A lgroup_list/none|weak|strong[,...]

指定された lgroup_list の指定されたプロセスまたはスレッドのアフィニティーを設定します。

lgroup/アフィニティーによる割り当ての、コンマで区切られたリストを指定すると、一度に複数のアフィニティーを設定できます。

–F

別のプロセスが制御していても、ターゲットプロセスを捕捉して強制実行します。–F フラグを使用するときは注意してください。2 つの制御プロセスを 1 つの犠牲プロセスに課すと混乱することがあります。プライマリ制御プロセス (通常はデバッガ) が犠牲プロセスを停止していて、この proc ツールの適用中に何も実行していない場合のみ、安全性が確保されます。詳細は、「警告」を参照してください。

–e

新しいプロセスを作成し、そのプロセスに plgrp を適用し、指定されたコマンドと引数を実行します。

–h

指定されたプロセスまたはスレッド、あるいはその両方のホーム lgroup を取得します。オプションが何も指定されていない場合は、これがデフォルトになります。

–H lgroup_list

指定されたプロセスおよびスレッドのホーム lgroup を設定します。

これは、スレッドのホームを変更する対象の lgroup に、強力なアフィニティーを設定します。複数の lgroup が指定された場合、plgrp はラウンドロビン方式でスレッドのホームを lgroup に設定することを試みます。

–i

指定されたプロセスまたはスレッドの lgroup のアフィニティーの継承を表示します。

–I default | none | future

指定されたプロセスまたはスレッドの lgroup のアフィニティーの継承を設定します。

オペランド

次のオペランドがサポートされています。

lwps

スレッドを指定します。「使用法」を参照してください。

pid

プロセス ID を指定します。「使用法」を参照してください。

使用例 1 シェルのホーム lgroup の取得

次の例では、シェルのホーム lgroup を取得します。


% plgrp $$
PID/LWPID    HOME
3401/1        1
使用例 2 複数のスレッドのホーム lgroup に対するルート lgroup の設定

次の例では、複数のスレッドのホーム lgroup にルート lgroup を設定します。

% plgrp -H root `pgrep firefox`
     PID/LWPID    HOME
     918/1        1 => 0
     934/1        2 => 0
     934/2        1 => 0
     934/3        2 => 0
     934/625      1 => 0
     934/626      2 => 0
     934/624      2 => 0
     934/623      2 => 0
     934/630      1 => 0
使用例 3 複数スレッドのホーム lgroup としてルートの lgroupplgrp を実行

次の例では、複数スレッドのホーム lgroup としてルートで firefox を実行します。


% plgrp -H root -e /usr/bin/firefox

使用例 4 lgroup 0-2 の 2 つのスレッドのアフィニティーの取得

次の例では、lgroup 1-2 の 2 つのスレッドのアフィニティーを取得します。


% plgrp -a 0-2 101398/1 101337/1
PID/LWPID    HOME  AFFINITY
101398/1        1     0-2/none
101337/1        1     0-2/none
使用例 5 lgroup のアフィニティーの設定

次の例では、lgroup のアフィニティーを設定します。


% plgrp -A 0/weak,1/none,2/strong 101398
PID/LWPID    HOME       AFFINITY
101398/1        1 => 2     0,2/none => 2/strong,0/weak

終了ステータス

次の終了ステータスが返されます。

0

正常終了。

1

構文エラー。変更は行われていません。

2

致命的ではないエラーまたは中断。変更が行われた箇所がある可能性があります。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os
インタフェースの安定性
下記を参照。

コマンド構文と出力形式は「不確実」です。

関連項目

lgrpinfo(1), madv.so.1(1), pmadvise(1), pmap(1), proc(1), ps(1), prstat(1M), lgrp_affinity_get(3LGRP), lgrp_affinity_set(3LGRP), lgrp_affinity_inherit_get(3LGRP), lgrp_affinity_inherit_set(3LGRP), lgrp_home(3LGRP), liblgrp(3LIB), proc(4), attributes(5)

警告

proc(1) ツールと同様に、plgrp ユーティリティーは、任意のオプションを指定して呼び出した場合、ターゲットプロセスの検査中にターゲットプロセスを停止して結果を報告します。

状況によっては、プロセスのデッドロックが発生する可能性があります。停止中のプロセスは何も実行できません。本稼働環境で頻繁に使用されるプロセスを短時間でも停止すると、これらのプロセスが深刻なボトルネックになったりハングアップしたりして、ユーザーがプロセスを使用できなくなることがあります。このため、本稼働環境で UNIX プロセスを停止することは避けてください。proc(1) を参照してください。

このツールによって停止されたプロセスは、次のように識別できる場合があります。次のコマンドを発行して:

/usr/bin/ps -eflL

出力の最初の列で T を探します。ただし、sched などの特定のプロセスは、ほとんどの場合デフォルトで T ステータスを表示する可能性があります。