ガバナーの規則節

ガバナー構成ファイル内の各規則は、 規則の適用に関する条件、 および規則が真と評価される場合に取られる処置を指定する節から構成されています。

規則節は、以下に説明する順序で指定する必要があります。

オプションの先頭節

desc
規則に関する記述を指定します。 記述は、単一引用符か二重引用符のいずれかで囲む必要があります。
時間
規則が適用される時間帯を指定します。 この時間帯は、time hh:mm hh:mm の形式で指定する必要があります (例: time 8:00 18:00)。 この節が指定されない場合、規則は全日 (24 時間) にわたって評価されます。
authid
アプリケーションを実行する許可 ID を 1 つまたは複数指定します。 複数の権限 ID を指定する場合は、コンマ (,) で区切る必要があります (例: authid gene, michael, james)。 この節が指定されない場合、規則はすべての許可 ID に適用されます。
applname
データベースへの接続を行う実行可能アプリケーションまたはオブジェクト・ファイルの名前を指定します。 複数のアプリケーション名を指定する場合は、コンマ (,) で区切る必要があります (例: applname db2bp, batch, geneprog)。 この節が指定されない場合、規則はすべてのアプリケーション名に適用されます。
注:
  1. アプリケーション名は、大文字小文字を区別する必要があります。
  2. データベース・マネージャーは、 すべてのアプリケーション名を 20 文字で切り捨てます。 管理するアプリケーションがアプリケーション名の最初の 20 文字で固有に識別可能であることを確認しておく必要があります。 ガバナー構成ファイルに指定されたアプリケーション名は 20 文字で切り捨てられて、 構成ファイルの内部表記に一致させられます。

制限節

setlimit
ガバナーが検査する制限を 1 つまたは複数指定します。 制限は、-1 にするか、0 より大きい値にしなければなりません (例: cpu -1 locks 1000 rowssel 10000)。 少なくとも 1 つの制限を指定する必要があります。ルール・ステートメントで指定されていない制限は、そのルールで制限されません。 ガバナーが検査できるのは、以下に示す制限です。
CPU n
アプリケーションが使用可能な CPU の秒数を指定します。 -1 を指定すると、アプリケーションの CPU 使用は制限されません。
アイドル n
接続において、許されるアイドル状態の秒数を指定します。 -1 を指定すると、接続のアイドル時間は制限されません。
注: 一部のデータベース・ユーティリティー (バックアップやリストアなど) は、データベースへの接続を確立してから、ガバナーに表示されないエンジン・ディスパッチ可能単位 (EDU) を使用して作業を実行します。 これらのデータベース接続はアイドルと表示され、アイドル時間制限を超過する場合があります。 ガバナーがこれらのユーティリティーに対してアクションを取らないようにするために、呼び出す許可 ID から、それらに -1 を指定します。 例えば、許可 ID DB2SYSで実行されているユーティリティーに対してガバナーがアクションを実行しないようにするには、 authid DB2SYS setlimit idle -1を指定します。
ロック n
アプリケーションが保持できるロック数を指定します。 -1 を指定すると、アプリケーションが保持するロック数は制限されません。
行読み取り n
アプリケーションが選択できる行数を指定します。 -1 を指定すると、アプリケーションが選択できる行数は制限されません。 指定できる最大値は、4 294 967 298 です。
注: この制限は、 rowsselと同じではありません。 異なるのは、rowsread が結果セットを返すために読み取る必要のある行数である点です。 この数にはエンジンによるカタログ表の読み取りが含まれます。この数は索引使用時には少なくなる可能性があります。
行セル n
アプリケーションに戻される行数を指定します。 この値は、コーディネーター・データベース・パーティションのみでゼロ以外になります。 -1 を指定すると、返すことができる行数は制限されません。 指定できる最大値は、4 294 967 298 です。
uowtime n
作業単位 (UOW) が最初にアクティブになった時刻から経過可能な秒数を指定します。 -1 を指定すると、経過時間は制限されません。
注: sqlmon API を使用して作業単位モニター・スイッチまたはタイム・スタンプ・モニター・スイッチを非活動化した場合、作業単位経過時間に基づいてアプリケーションを管理するガバナーの機能に影響します。 ガバナーはモニターを使って、 システムについての情報を収集します。 ガバナーが開始されるより前にアプリケーションの作業単位 (UOW) が開始されると、ガバナーはその UOW を管理しません。

処置節

アクション
指定された 1 つ以上の制限を超えた場合に取る処置を指定します。 action 節を指定していない状態で制限値を超過すると、ガバナーは、アプリケーションのために動作するエージェントの優先順位を 10 下げます。
force
これを指定すると、アプリケーションを実行しているいずれかのパーティションで setlimit を超過した場合に、そのアプリケーションで強制アクションが実行されます。
注: パーティション・データベース環境では、グローバル・スナップショットではなくローカル・アプリケーション・スナップショットを使用して、 setlimit 評価用の情報が収集されます。 ガバナーがアプリケーションのリモート・パーティション上での setlimit を評価して、制限を超過していると判断し、force アクションが実行されると、そのアプリケーションは、すべてのデータベース・パーティションで終了されます。 例えば、規則で setlimit が「idle 30」に設定されている場合にリモート・サブエージェントが 40 秒間アイドルになると、force アクションによって、すべてのパーティションでアプリケーションが終了されます。
forcecoord
これを指定すると、アプリケーションのコーディネーター・パーティションで setlimit を超過した場合に限って、アプリケーションで強制アクションが実行されます。

パーティション・データベース環境では、グローバル・スナップショットの代わりにローカル・アプリケーション・スナップショットを使用して、setlimit の評価のための情報を収集します。 forcecoord アクションが実行されるのは、アプリケーションのコーディネーター・パーティションで setlimit 値を超過した場合に限られます。 例えば、ルールに「idle 30」という setlimit があって、コーディネーター・エージェントのアイドル時間が 40 秒になっていると、forcecoord アクションが実行され、すべてのパーティションでアプリケーションが終了します。 ただし、リモートのサブエージェントのみが 40 秒間アイドルになっても、アクションは実行されません。

ナイス n
アプリケーションの処理を行っているエージェントの相対的な優先順位の変更を指定します。 有効な値の範囲は、 Linux® および UNIX の場合は -20 から +20、Windows プラットフォームの場合は -1 から 6 です。
  • Linux および UNIX では、 agentpri データベース・マネージャー構成パラメーターをデフォルト値に設定する必要があります。そうしないと、 nice 値がオーバーライドされます。
  • Windows プラットフォームでは、 agentpri データベース・マネージャー構成パラメーターと nice 値を一緒に使用できます。

ガバナーを使用して、デフォルトのユーザー・サービス・スーパークラス、SYSDEFAULTUSERCLASS で実行するアプリケーションの優先順位を制御できます。 ガバナーを使用して、このサービス・スーパークラスで実行するアプリケーションの優先順位を低くする場合、エージェントは自分自身をそのアウトバウンド相関関係子から切断し (両者が関連付けられている場合)、ガバナーによって指定されたエージェント優先順位に従ってその相対優先順位を設定します。 ガバナーを使用して、ユーザー定義サービスのスーパークラスおよびサブクラスでエージェント優先順位を変更することはできません。 その代わりに、スーパークラスまたはサブクラスのエージェント優先順位の設定を使用して、それらのサービス・クラスで実行するアプリケーションを制御する必要があります。 一方で、ガバナーを使用してサービス・クラスでの接続を強制することができます。

注: AIX® システムでは、アプリケーションで動作するエージェントの相対的な優先順位を上げるために、インスタンス所有者に CAP_NUMA_ATTACH 機能が必要です。 この機能を付与するには、root としてログオンし次のコマンドを実行します。
   chuser capabilities=CAP_NUMA_ATTACH,CAP_PROPAGATE <userid>
schedule [class]
スケジューリングによって、アプリケーション上で処理を行っているエージェントの優先順位が向上します。 その目的は、すべてのアプリケーションにおける公平性を確保しながら平均応答時間を最小化するというものです。
ガバナーは、次の基準に基づいて、スケジューリングの優先度が高いアプリケーションを選択します。
  • 最も多くのロックを保持しているアプリケーション (ロック待機数を削減するため)
  • 経過時間の最も長いアプリケーション
  • 見積もられた残り実行時間が最も短いアプリケーション (できるだけ多くの短期間のステートメントを、このインターバルの間に完了させるため)

各基準で上位の 3 つのアプリケーションには、他のどのアプリケーションよりも高い優先順位が与えられます。 つまり、 各基準のグループで 1 位のアプリケーションには最も高い優先順位が、 その次のアプリケーションには 2 番目に高い優先順位が、 そして 3 位のアプリケーションには 3 番目に高い優先順位が与えられます。 単一のアプリケーションが複数の基準において 3 位以内となった場合、 そのアプリケーションには最も高い順位となった基準において該当する優先順位が与えられ、 他の基準においては、その次の順位にあるアプリケーションに 1 つ高い優先順位が与えられます。 例えば、アプリケーション A が保持するロックの数が最も多い状況で、推定残り実行時間が 3 番目に短い場合は、アプリケーション A に最初の基準で最も高い優先順位が与えられます。 さらに、推定残り実行時間が 4 位のアプリケーションに、その基準で 3 番目に高い優先順位が与えられます。

このガバナー規則によって選択されたアプリケーションは、 3 つのクラスに分けられます。 それぞれのクラスごとに、ガバナーは上記の基準に基づいて、各クラスからの上位 3 つである、9 個のアプリケーションを選択します。 class オプションを指定すると、このルールで選択されたすべてのアプリケーションが 1 つのクラスと見なされ、前述のように 9 個のアプリケーションが選択され、高い優先順位が与えられます。

複数のガバナー規則で同じアプリケーションが選択された場合、 最後に選択された際の規則によって管理されます。

注: sqlmon API を使用してステートメント切り替えを非アクティブ化した場合、ステートメント経過時間に基づいてアプリケーションを管理するガバナーの機能に影響します。 ガバナーはモニターを使って、 システムについての情報を収集します。 データベース・マネージャー構成ファイルでスイッチをオフにすると、インスタンス全体でオフになり、ガバナーはそれ以上この情報を受け取りません。
スケジュール処置には次のことが含まれます。
  • 異なるグループのアプリケーションが、すべてのアプリケーションに平均に時間を分割することなく確実に時間を入手するようにします。 例えば、14 のアプリケーション (短いアプリケーション 3 つ、中程度 5 つ、長いアプリケーション 6 つ) を同時に実行している場合、これらは CPU を分割しているので、それぞれの応答時間は満足のいくものではないかもしれません。 データベース管理者は、中程度の長さのアプリケーションと、 長いアプリケーションの 2 つのグループを設定できます。 優先順位を使用して、ガバナーはすべての短いアプリケーションの実行を許可し、 大部分を占める 3 つの中程度のアプリケーションと 3 つの長いアプリケーションを、 同時に確実に実行します。 これを行うために、ガバナー構成ファイルには、 中程度のアプリケーションに 1 つの規則、長いアプリケーションに別の規則が入っています。
    以下に、この点を例証するガバナー構成ファイルの一部を示します。
    desc "Group together medium applications in 1 schedule class."
    applname medq1, medq2, medq3, medq4, medq5
    setlimit cpu -1
    action schedule class;
    
    desc "Group together long applications in 1 schedule class."
    applname longq1, longq2, longq3, longq4, longq5, longq6
    setlimit cpu -1
    action schedule class;
  • 複数のユーザー・グループのそれぞれ (例えば、 組織上の部門) が確実に等しい優先度を獲得できるようにします。 あるグループが多数のアプリケーションを実行している場合でも、 管理者は他のグループが自分のアプリケーション用に適度な応答時間を獲得できるようにすることができます。 例えば、3 つの部門 (金融、在庫、企画) が関係している場合、すべての金融ユーザーを 1 つ目のグループに、すべての在庫ユーザーを 2 つ目のグループに、すべての企画ユーザーを 3 つ目のグループに入れることができます。 処理能力は 3 つの部門の間でより平均に、またはその逆に分割されます。
    以下に、この点を例証するガバナー構成ファイルの一部を示します。
    desc "Group together Finance department users."
    authid tom, dick, harry, mo, larry, curly
    setlimit cpu -1
    action schedule class;
    
    desc "Group together Inventory department users."
    authid pat, chris, jack, jill
    setlimit cpu -1
    action schedule class;
    
    desc "Group together Planning department users."
    authid tara, dianne, henrietta, maureen, linda, candy
    setlimit cpu -1
    action schedule class;
  • ガバナーにすべてのアプリケーションをスケジュールさせます。

    class オプションを指定しないと、ガバナーは、スケジュール・アクションに該当するアクティブ・アプリケーションの数に基づいて独自のクラスをいくつか作成し、アプリケーションで実行している照会の照会コンパイラーのコスト見積もりに基づいて、アプリケーションをそれぞれのクラスに入れます。 管理者は、どのアプリケーションを選択するかを限定しなければ (つまり、applnameauthidsetlimit のいずれかの節を指定しなければ)、すべてのアプリケーションのスケジュールを自分で設定できます。