Sun N1 Grid Engine 6.1 管理ガイド

dbwriter を使用した派生値の計算

派生値を計算するための規則は、DbWriterConfig タグのサブタグである派生タグで指定します。次の表に、派生タグの属性を示します。

属性

説明

object

データを集計する対象のオブジェクト。オブジェクトは次のいずれかです。

  • ホスト

  • キュー

  • プロジェクト

  • 部署

  • ユーザー

  • グループ

interval

派生値を計算する頻度を指定する時間範囲です。時間範囲は次のいずれかです。

  • hour

  • day

  • month

  • year

variable

計算済みのデータを保持する変数の名前です。

次の表に、派生タグのサブ要素を示します。

sql

派生値を計算する SQL 文です。この文は次のカラムを作成する必要があります。

  • time_starttime_end とともに、計算済みの値の期間を指定します。

  • time_end

  • value – 計算済みの派生値

SQL 文は次のプレースホルダを含むことができます。dbwriter は、規則に基づいて各クエリのプレースホルダを次のように置換します。

  • __time_start__ – クエリーの開始時間。dbwriter は、この規則から、直前に計算された最後の派生値を検索し、このタイムスタンプを次のクエリーの開始時間として使用します。

  • __time_end__ – クエリーの終了時間。このタイムスタンプは、最後に経過した時間範囲の終了を指定します。たとえば、時間範囲が day であり、派生値が 00:30 で計算された場合、00:00time_end として取得されます。

  • __key_0__, __key_1__, . , __key_n__ – 指定したオブジェクト型の主キーのコンポーネント。たとえば、sge_hosts テーブルには主キー h_hostname があります。ホストオブジェクト型に対して規則が処理された場合、sge_hosts テーブル内のエントリごとに 1 つのクエリーが実行され、SQL 文内の __key_0__ プレースホルダはホスト名により置き換えられます。

    sge_queue テーブルは、q_qname および q_hostname から構成された複合的な主キーを持ちます。

auto

dbwriter は、派生値の計算用の SQL 文を生成します。

自動生成された SQL 文は、次のテンプレートのようになります。


SELECT time_start, time_end, <function>(<value_field>) as value
FROM ( SELECT TRUNC( <timestart_field>, <interval> ) as time_start
              TRUNC( <timestart_field>, <interval> ) +
                    INTERVAL '1' <interval> as time_end,
              <value_field>
       FROM <object value table>
       WHERE <primary key field 0> = __key_0__
         AND <primary key field 1> = __key_1__
         AND . . .
         AND <parent key field> =
             (SELECT <parent key field> FROM <parent table>
              WHERE <parent filter> )
         AND <timestart_field> <= {ts __time_start__ }
         AND <timeend_field>   >  {ts __time_end__ }
GROUP BY time_start, time_end

SQL テンプレートパラメータには次のものがあります。

パラメータ

説明

<function>

派生値を計算するための集計関数です。XML ファイルの auto タグの関数属性に由来します。

<value_field>

派生値のオブジェクトに依存します。

<timestart_field>

派生値のオブジェクトに依存します。

<timeend_field>

派生値のオブジェクトに依存します。

<interval>

派生タグの内部属性に由来します。

<object value table>

値が格納されるデータベーステーブルの名前です。オブジェクトに依存します (host => host_values, user => user_values, . )。

<primary key field n>

値テーブルを親テーブルに結合するのに必要な主キーです。オブジェクトに依存します。

<parent key field>

親の ID を保持するフィールドの名前です。オブジェクトに依存します。

<parent table>

親データベーステーブルの名前です。オブジェクトに依存します (host => host, user => user)。

<parent filter>

親テーブル用のフィルタです。親テーブルの各エントリの派生値が計算されます (例: u_user = 'user1')。

自動生成された SQL 文の例を次に示します。


<derive object="host" interval="day" variable="d_load">
   <auto function="AVG" variable="h_load" />
</derive>

SELECT time_start, time_end, AGE(hv_dvalue)
FROM ( SELECT TRUNC( hv_time_start, 'day' ) as time_start,
              TRUNC( hv_time_start, 'day' ) +
                             INTERVAL '1' day as time_end,
              hv_dvalue
       FROM sge_host_values
       WHERE hv_variable = 'h_load' AND
             hv_parent =
               (SELECT h_id FROM sge_host
                WHERE h_hostname = 'foo.bar') AND
             hv_time_start <= {ts '2004-05-21 00:00:00.0'} AND
             hv_time_end    > {ts '2004-05-17 00:00:00.0'} )
GROUP BY time_start, time_end