wlmassign コマンド

目的

ワークロード・マネージメント・クラスにプロセスを手動で割り当てるか、 以前にプロセスへ手動で割り当てられたものを取り消します。

構文

wlmassign [ -s | -S ] [ -u | Class_Name ] [ pid_list ] [ -g pgid_list ]

wlmassign [ -t { tag [ -i inheritance ] | -r } [ pid_list ] [ -g pgid_list ]

説明

wlmassign コマンドでは、次のことが行われます。

  • プロセス ID (PID) のリストで指定された一連のプロセスまたはプロセス・グループ ID (PGID) を、指定したスーパークラスとサブクラスの両方または一方に割り当てます。これによって自動クラス割り当てまたは前の手動割り当てを上書きします。
  • pid_list または pgid_list で指定したプロセスの前の手動割り当てを取り消します。
  • pid または pgid のリストによって指定された一連のプロセスに、ワークロード・マネージャー (WLM) タグ・プロセス属性を割り当てます。
  • pid または pgid のリストによって指定された一連のプロセスから、WLM タグ・プロセス属性を除去します。

タグに加えて、追加の継承サブオプションを指定することができます。それらのサブオプションは、子プロセスが fork サブルーチンまたは exec サブルーチンの後で自分の親からタグを継承する必要があるかどうかを WLM に示します。

プロセスが別のプロセスにタグ付けするためには、少なくとも SIGPRIV 特権またはより高位の特権が必要です。

WLM タグ割り当ては、以下の条件の 1 つ以上が当てはまるようになるまで有効です。

  • -r フラグを使用してタグが削除された。
  • タグ付けされたプロセスが終了した。
  • タグが新しいタグで上書きされた。

継承属性が無効なクラスに属するプロセスに WLM タグが割り当てられる場合、そのプロセスは現在の割り当て規則に従って自動的に再分類され、その再分類の際に新しいタグが考慮されます。 現在のプロセス・クラスにクラス継承属性が指定されていない場合、WLM タグが有効です。 タグの規則に基づく再分類によってクラス継承属性をオーバーライドするために、bos.adt.samples PTF で使用可能な /usr/samples/kernel/wlmtune コマンドを使用して WLM の動作を変更することができます。 関連するチューナブルは、以下のとおりです。

tag_override_super
規則がプロセス・タグに適合する場合、ルール・ベースの分類に従ってスーパークラス継承はバイパスされることを WLM に示します。デフォルト値は 0 です。
tag_override_sub
規則がプロセス・タグに適合する場合、ルール・ベースの分類に従ってサブクラス継承はバイパスされることを WLM に示します。デフォルト値は 0 です。

タグ割り当てのルール・ベースの分類を有効にするには、WLM 再分類による更新の前に、チューナブル値を設定しておく必要があります。

自動割り当て (継承と規則)、継承、および手動割り当ての間の相互作用について、詳しくは「オペレーティング・システムおよびデバイスの管理」の『ワークロード・マネージメント』で説明しています。

wlmassign コマンドは、PID のリスト、PGDID のリスト、またはその両方を使用してプロセスを指定できます。これらのリストの形式は、以下のとおりです。
pid[,pid[,pid[...]]]
pgid[,pgid[,pgid[...]]]

有効なスーパークラスまたはサブクラスの名前は、 ターゲット・プロセスのクラスへの割り当てを手動で実行するように指定する必要があります。 ターゲット・クラスがスーパークラスの場合、 このスーパークラスのサブクラスの割り当て規則に従って、 各プロセスは、指定したスーパークラスのサブクラスの 1 つに割り当てられます。

手動割り当ては、下記の時点まで有効です (およびプロセスも、その手動での割り当てクラスに残ります)。

  • プロセスの終了時。
  • ワークロード・マネージメント (WLM) の停止時。 WLM が再始動すると、WLM の停止時に有効であった手動割り当ては消失します。
  • プロセスが割り当てられているクラスの削除時。
  • 新規の手動割り当ては、前の割り当てを上書きします。
  • プロセスの手動割り当ては、-u フラグを使用すると取り消されます。
  • プロセスは exec() ルーチンを呼び出します。

有効なスーパークラスまたはサブクラスの名前は、 ターゲット・プロセスのクラスへの割り当てを手動で実行するように指定する必要があります。 割り当ては、スーパークラス・レベル、サブクラス・レベル、 またはその両方で実行、または取り消すことができます。 プロセスの手動割り当てを取り消すか、またはプロセスが exec() を呼び出すと、 そのプロセスは自動的にクラス分けされます。そのプロセスのクラスに継承が使用可能な場合は、 そのクラス内に残るか、または、プロセスが割り当て規則に従って再度クラス分けされます。

手動割り当ての場合、下記のようになります。

  • Class_Name がスーパークラスの名前である場合、 リスト内のプロセスはそのスーパークラスに割り当てられます。 次に、ターゲット・スーパークラスのサブクラスの割り当て規則を使用して、 それぞれのプロセスのサブクラスが決定されます。
  • クラス名がサブクラス名 (supername.subname) の場合、デフォルトのプロセスは、スーパークラスとサブクラスの両方に割り当てられます。 プロセスは、スーパークラスには -S フラグを指定するだけで、 またはサブクラスには -s フラグを指定するだけで割り当てることができます。
wlmassign   super1.sub2  -S  pid1

これは下記と等しくなります。

wlmassign super1 pid1

プロセスをクラスに割り当てるか、または前の手動の割り当てを取り消すには、 ユーザーは、プロセスとターゲット・クラスの両方に対する権限を持っている必要があります。 これらの制約は以下のように変換します。

  • root ユーザーは、任意のプロセスを任意のクラスに割り当てられます。
  • 特定のスーパークラスのサブクラスに対する管理特権があるユーザー (つまり、ユーザーまたはグループ名が、 スーパークラスの属性 adminuser および admingroup に指定されたユーザーまたはグループ名と一致する) は、 そのスーパークラスのサブクラスのいずれか 1 つからのプロセスを、 他のスーパークラスのサブクラスに手動で再割り当てできます。
  • ユーザーは、この固有のプロセス (同じ実または実効ユーザー ID) を、 手動割り当て特権がある (つまり、ユーザーまたはグループ名が、 スーパークラスまたはサブクラスの属性 authuser および authgroup に指定されたユーザーまたはグループ名と一致する) クラスに割り当てることができます。

これは、手動でプロセスをクラスに割り当てられるユーザー間で、root を最高として、3 レベルの特権を定義します。 ユーザーが手動割り当てを変更または終了するには、 最後の手動割り当てを実行したユーザーと、少なくとも同じレベルの特権を持っている必要があります。

注: wlmassign コマンドは、現在ロードされている WLM 構成を使用して作業します。現在の構成が 1 つのセットで、 そのセット内のすべての構成には存在しないクラスへ割り当てが行われると、 そのクラスを含まない構成がアクティブになる時、その割り当ては失われます (クラスが削除される)。

フラグ

項目 説明
-g pgid_list 続くリストが PGID のリストであることを示します。
-S 割り当ては、スーパークラス・レベルでのみ実行、または取り消すことができます。 このフラグは、形式 supername.subname のサブクラス名を指定して使用します。
-s 割り当ては、サブクラス・レベルでのみ実行、または取り消すことができます。 このフラグは、形式 supername.subname のサブクラス名を指定して使用します。
-u pid_list または pgid_list からプロセスに対する有効な手動割り当てを取り消します。 -s または -S フラグを使用しない場合、 これはスーパークラス・レベルとサブクラス・レベルの両方の手動割り当てを取り消します。
-r 指定されたプロセス・リストまたはプロセス・グループ・リストから WLM タグを除去します。
-t tag 指定されたプロセス・リストまたはプロセス・グループ・リストに WLM タグを設定します。
-i inheritance

1 つまたは両方のタグ継承サブオプションをリスト内にコンマで区切って指定します。 以下のタグ継承サブオプションを指定することができます。

fork
このプロセスの子が fork において親タグを継承しなければならないことを指定します。
exec
このプロセスが exec 呼び出し後に自身のタグを保持することを指定します。