メモリーとスレッドの配置最適化開発者ガイド

plgrp ツール

plgrp ユーティリティーは、1 つ以上のプロセス、スレッド、または軽量プロセス (LWP) について、ホーム lgroup と lgroup のアフィニティーを表示したり設定したりできます。各スレッドには、作成時にホーム lgroup が割り当てられます。CPU 資源またはメモリー資源をスレッドに割り当てるとき、システムは、スレッドのホームにもっとも近い位置にある使用可能な資源を探すために、スレッドのホーム lgroup から順番に lgroup 階層を検索します。

システムにより、各スレッドのホーム lgroup が選択されます。ホーム lgroup に対するスレッドのアフィニティーは、最初は none、つまりアフィニティーなしに設定されます。スレッドが、ホーム lgroup に対するスレッドのアフィニティーより高いアフィニティーを、プロセッサセット内の lgroup に対して設定すると、システムはスレッドをその lgroup に移動します。CPU に割り当てられているスレッドは移動されません。ホーム lgroup に対するスレッドのアフィニティーが削除 (none に設定) されると、プロセッサセット内でもっとも高いアフィニティーを持っている lgroup がホーム lgroup としてスレッドに割り当て直されます。

lgroup のアフィニティーのさまざまなレベルおよびその意味の詳細については、lgrp_affinity_set(3LGRP) のマニュアルページを参照してください。

plgrp ツールでは、次のオプションがサポートされています。

-a lgroup list

このオプションは、リスト内の lgroup に対して、指定されたプロセスまたはスレッドのアフィニティーを表示します。

-Algroup list/ none|weak|strong[,...]

このオプションは、リスト内の lgroup に対して、指定されたプロセスまたはスレッドのアフィニティーを設定します。lgroup/affinity の組み合わせをコンマで区切って並べたリストを使用して、複数のアフィニティーを一度に設定することができます。

-F

このオプションは、ターゲットプロセスを制御下に置きます。このオプションは、ほかのどのプロセスの制御よりも優先します。proc(1) のマニュアルページを参照してください。

-h

このオプションは、指定されたプロセスまたはスレッドのホーム lgroup を返します。これは、オプションを指定せずに plgrp ツールを使用した場合のデフォルトの動作です。

-H lgroup list

このオプションは、指定されたプロセスまたはスレッドのホーム lgroup を設定します。このオプションは、リスト内の lgroup に対して強いアフィニティーを設定します。plgrp ユーティリティーは、複数の lgroup が指定された場合、ラウンドロビン方式でこれらの lgroup をホーム lgroup としてスレッドに割り当てようとします。

lgroup の指定

lgroup list 変数の値は、次の属性の 1 つ以上をコンマで区切って並べたリストです。

all キーワードは、システム内のすべての lgroup ID を表します。root キーワードは、ルート lgroup の ID を表します。leaves キーワードは、すべての葉 lgroup の ID を表します。葉 lgroup とは、子を持っていない lgroup のことです。

プロセスおよびスレッドの引数の指定

plgrp ユーティリティーは、1 つ以上のプロセスまたはスレッドを空白文字で区切って並べたリストを引数として受け取ります。proc(1) ツールで使用される構文と同じ構文で、プロセスとスレッドを指定できます。pid または /proc/pid という構文を使用して、プロセス ID を整数で指定できます。/proc/pid 構文ではシェル展開を使用できます。プロセス ID だけを指定すると、plgrp ユーティリティーの引数には、そのプロセスのすべてのスレッドが含められます。

pid/lwpid という構文でプロセス ID とスレッド ID を指定することにより、スレッドを明示的に指定できます。「-」文字を使用して一度に範囲を選択するか、コンマで区切って並べたリストを使用して、プロセス内の複数のスレッドを指定できます。pid というプロセス ID を持つプロセスのスレッド 1、2、7、8、および 9 を指定するには、構文 pid/1,2,7-9 を使用します。