Sun N1 Grid Engine 6.1 管理ガイド

アカウンティングおよびレポート統計の収集

Grid Engine システムには、2 種類のレポートとアカウンティングの機能が用意されています。

レポート統計 (ARCo)

オプションのアカウンティングおよびレポートコンソール (ARCo) を使用すると、Grid Engine システムから実際のアカウンティングとレポートのデータを収集し、標準的な SQL データベースであるレポートデータベースにデータを格納できます。ARCo は、次の SQL データベースシステムをサポートしています。

また ARCo には、レポートデータベースに関する情報クエリを収集し、表形式またはグラフィック形式で結果を取得するための、Web ベースのツールが用意されています。ARCo を使用すると、あとに使用できるようクエリを格納し、定義済みのクエリを実行し、バッチモードでクエリを実行することができます。ARCo の使用法の詳細については、『Sun N1 Grid Engine 6.1 ユーザーズガイド』の第 5 章「アカウンティングとレポート」を参照してください。ARCo のインストール方法の詳細については、『Sun N1 Grid Engine 6.1 インストールガイド』の第 8 章「アカウンティングおよびレポートコンソールのインストール」を参照してください。

生のレポートデータは sge_qmaster により生成されます。この raw データはレポートファイルに格納されます。dbwriter プログラムはレポートファイルの raw データを読み取り、SQL レポートデータベースにそのデータを書き込みます。SQL レポートデータベースは ARCo によりアクセス可能です。

dbwriter プログラムについて

dbwriter プログラムは、次のタスクを実行します。

dbwriter は、起動時に、派生値を計算します。また、dbwriter は起動時に、期限切れレコードの削除も行います。dbwriter が継続モードで実行中である場合、dbwriter は継続して、1 時間ごとの間隔またはユーザーが指定する間隔で、派生値を計算し、期限切れレコードを削除します。

XML ファイルで、計算する値と削除するレコードを指定できます。この XML ファイルのパスを指定するには、dbwriter コマンドの -calculation オプションを使用します。

派生値の計算の詳細については、dbwriter を使用した派生値の計算」を参照してください。

期限切れレコードの削除の詳細については、dbwriter を使用した期限切れレコードの削除」を参照してください。

レポートファイルの有効化

レポートファイルには次の種類のデータが含まれています。

Grid Engine システムを最初にインストールした時点では、レポートファイルは使用不可になっています。ARCo を使用するためには、クラスタに対してレポートファイルを使用可能にする必要があります。使用可能にすると、レポートファイルは sge_qmaster により生成されます。デフォルトでは、レポートファイルの位置は sge-root/ cell/common です。dbwriter コマンドの -reporting オプションを使用すると、デフォルトを変更できます。

レポートファイルの生成の構成については、sge_conf(5) のマニュアルページの reporting_params パラメータ、および host_conf(5) のマニュアルページの report_variables パラメータを参照してください。

QMON でレポートファイルを使用可能にするには、「Main Control」ウィンドウで「Cluster Configuration」ボタンをクリックし、「global」ホストを選択してから「Modify」をクリックします。

「Cluster Settings」ダイアログボックスで「Advanced Settings」タブをクリックします。

「Reporting Parameters」フィールドでは次のパラメータを設定します。

コマンド行からレポートファイルを使用可能にするには、上記の説明のように、qconf –mconf コマンドを使用して reporting_params 属性を設定します。

レポートファイルが使用可能になれば、dbwriter はレポートファイルから raw データを読み取り、それをレポートデータベースに書き込むことができるようになります。

レポートファイルの構成の詳細については、 reporting(5) のマニュアルページを参照してください。ARCo のインストールと設定の詳細については、『Sun N1 Grid Engine 6.1 インストールガイド』の第 8 章「アカウンティングおよびレポートコンソールのインストール」を参照してください。

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

dbwriter を使用した期限切れレコードの削除

レポートデータベースで期限切れレコードを削除するには、削除タグで削除規則を指定する必要があります。次の表に、削除タグの属性を示します。

属性

説明

scope

削除するデータの型です。有効なエントリには次のものがあります。

  • job

  • job_log

  • share_log

  • host_values

  • queue_values

  • project_values

  • department_values

  • user_values

  • group_values

time_range

time_amount の単位です。

time_amount

レコードを保持する単位 (time_range) の数です。

次の表に、削除タブのサブ要素を示します。

sub_scope

一部のスコープに関しては、サブスコープを構成できます。サブスコープは、削除の追加条件を指定します。サブスコープは、すべての *_values スコープと、share_log スコープに対して構成できます。

サブスコープが *_values 規則に対して構成されている場合、そのサブスコープには、空白で区切られた、削除する変数のリストが含まれています。

サブスコープが share_log に対して指定されている場合、そのサブスコープには、空白で区切られた、削除する共有ツリーノードのリストが含まれています。

サブスコープを使用する場合、サブスコープにより明示的に名前が付けられていないすべてのオブジェクトを削除する、サブスコープのないフォールバック規則を常に用意する必要があります。

削除タグの例を次に示します。


<?xml version="1.0" encoding="UTF-8"?>
<DbWriterConfig>
  <!-- keep host values for 2 years -->
  <delete scope="host_values" time_range="year" time_amount="2"/>

  <!-- keep queue values one month -->
  <delete scope="queue_values" time_range="month" time_amount="1">
    <sub_scope>slots</sub_scope>
    <sub_scope>state</sub_scope>
  </delete>
</DbWriterConfig>

アカウンティングおよび使用率の統計 (qacct)

qacct コマンドを使用すると、英数字のアカウンティング統計を生成できます。オプションを指定しないと、qacct により、完了したすべてのジョブによって生成され、クラスタアカウンティングファイル sge-root/cell/common/accounting に含まれている、クラスタのすべてのマシンに関する使用率集計情報が表示されます。この場合、qacct は秒単位で次の 3 つの時間を報告します。

キューあるいはユーザーなどに関するアカウンティング情報の報告に、いくつかのオプションを使用可能です。特に、qacct -l コマンドを使用すると、すでに完了していて、リソース要求指定に一致するすべてのジョブに関する情報を要求できます。

qacct -j [job-id | job-name] コマンドを使用すると、Grid Engine システムによって格納された、リソース使用率情報の全体に直接アクセスできます。 この情報には、getrusage システムコールにより提供された情報が含まれています。

-j オプションは、job-id または job-name を持つジョブのリソース使用率エントリを報告します。引数なしで実行された場合は、参照されたアカウンティングファイルに含まれるすべてのジョブが表示されます。ジョブ ID が指定され、複数のエントリが表示された場合は、次のいずれかが真になります。

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