Sun N1 Grid Engine 6.1 管理ガイド

第 10 章 DBWriter の構成

dbwriter コンポーネントは、レポートデータベースのレポートデータの書き込みと削除を行います。dbWriter は次のタスクを実行します。

sge_qmaster コンポーネントがレポートファイルを生成します。レポートファイルの生成を設定できます。sge_conf(5) のマニュアルページの reporting_params 属性、および host_conf(5) のマニュアルページの report_variables 属性を参照してください。

設定

インストール手順で、これらのパラメータを設定します。dbwriter を起動するスクリプトは、レポートモジュールで提供されています。詳細は、『N1 Grid Engine 6 インストールガイド』を参照してください。dbwriter に対して、次のパラメータを設定する必要があります。

データベースシステム

dbwriter は、各種製造元のデータベースシステムに接続できます (サポートしているシステムは、PostgreSQL および Oracle)。次のパラメータを設定する必要があります。

データベースサーバー

JDBC URL で、どのホストのどのデータベースを使用するかを設定します。URL パラメータに、使用するデータベースの JDBC URL を設定します。使用する構文は、データベースベンダーのガイドラインに従ってください。たとえば、PostgreSQL データベースでは、次のように設定します。jdbc:postgresql://<hostname>:5432/arco

レポートファイルのベースディレクトリ

dbwriter がレポートファイルを検索するパスは、REPORTING_FILE 変数で設定します。通常、ベースディレクトリは $SGE_ROOT/$SGE_CELL/common に設定します。

構成

これらのパラメータの設定作業は、インストール手順で行われます。dbwriter の動作は、多くのコマンド行パラメータを使用して設定できます。

間隔

-interval パラメータは、dbwriter が新しいレポートファイルを探す間隔を設定します。レポートファイルが見つかると、ファイルが読み取られ、データがレポートデータベースに書き込まれます。

Pid

-pid パラメータは、PID ファイルへのパスを定義します。dbwriter は起動時に PID ファイルを書き込みます。このファイルには、dbwriter のプロセス ID が含まれています。dbwriter の停止時に、このファイルは削除されます。

PidCmd

-pidCmd パラメータは、dbwriter がそのプロセス ID を特定するために実行するコマンドを定義します。このコマンドは、その親プロセス ID を stdout に出力する必要があります。dbwriter は Java アプリケーションです。Java 仮想マシンは、自身のプロセス ID を特定することはできません。pidCmd のデフォルト値は $SGE_ROOT/utilbin/$ARCH/checkprog -ppid です。

連続モード

-continuous パラメータは、連続モードをオンにします。-continuous が指定されていないと、 dbwriter はタスクを一度だけ実行します。連続モードをオンにすると、-interval スイッチで設定された間隔でタスクを繰り返し実行します。

デバッグレベル

-debug オプションを使用して、dbwriter が出力するメッセージの量を設定できます。-debug オプションのパラメータはデバッグレベルです。通常は、デフォルトのデバッグレベル (-info) を使用することを推奨します。より詳細なデバッグレベルを設定すると、dbwriter が出力するデータの量が著しく増大します。指定できるのは、次のデバッグレベルです。

レポートファイル

N1 Grid Engine 6 は、さまざまな種類のデータを含むレポートファイルを記述します。

dbwriter コマンドの行 -reporting で、レポートファイルのパスを指定します。dbwriter コンポーネントは、レポートファイルを自動的に解析します。処理を完了し、すべての情報をデータベースに格納すると、レポートファイルを削除します。

派生値の計算

dbwriter の起動時と連続モードの場合は、1 時間ごとに派生値が計算されます。XML ファイルで、計算する値を設定できます。デフォルトでは、$SGE_ROOT/dbwriter/database/<database_type>/dbwriter.xml が設定されています。<database_type> で、使用するデータベースの種類を定義します。現在、Oracle および Postgres がサポートされています。構成ファイルのパスは、 -calculation パラメータを使用して dbwriter に渡されます。

設定ファイルは XML 形式を使用しています。次の節で説明するように、派生値と削除値両方の規則が指定されています。派生値の規則の書式を次に示します。

派生値の書式

  1. 最上位の開始タグは <derive> です。次の 3 つの属性を使用して指定します。

    • object — ホスト、キュー、ユーザー、グループ、部署、またはプロジェクトを指定します。この属性に基づいて、派生値は最終的に次のいずれかに格納されます。sge_host_valuessge_queue_values sge_user_valuessge_group_valuessge_department_valuessge_project_values

    • interval — 時間、日、月、または年のいずれかです。

    • variable — 新しい派生値の名前です。

  2. 第 2 レベルの開始タグは <sql> または <auto> のいずれかで、値の派生方法を記述します。これらのタグの詳細を次に示します。

  3. <sql> – このタグには、派生値の計算に使用される SQL 文を指定します。エントリの正確な構文は、使用するデータベースの種類によって異なります。

  4. <auto> - 特定の単純な派生値については、完全な SQL クエリーの代わりにこのタグを使用できます。このタグには 2 つの属性があります。

    • function — 変数に適用する集約関数を指定します。ここでは、使用する種類のデータベースに有効な任意の関数を指定できます。代表的な関数としては、AVG 、SUM、VALUE 、COUNT、MIN、または MAX があります。

    • variable — 次のテーブルに記録される任意の変数を指定できます。sge_host_valuessge_queue_valuessge_user_valuessge_group_values sge_department_valuessge_project_values。指定する変数は、<derive> タグで囲まれたオブジェクト属性によって示されるテーブルに存在する必要があります。たとえば、オブジェクトがホスト の場合、変数は sge_host_values に存在する必要があります。

  5. 2 つの開始タグに対応する 2 つの終了タグを指定します。

<sql> タグを使用した派生規則の例を示します。sge_queue テーブルには、 q_qnameq_hostname からなる複合的な主キーがあります。キュー object_type に指定された規則の場合、sge_queue テーブルのエントリごとに 1 つのクエリーが作成されます。プレースホルダ__key_0__ は、キューの名前で置き換えられ、__key_1__ はホスト名で置き換えられます。

<!--
        average queue utilization per hour
        -->
<derive object="queue" interval="hour" variable="h_utilized">
        <sql>
        SELECT DATE_TRUNC( 'hour', qv_time_start)
                        AS time_start,
                DATE_TRUNC( 'hour', qv_time_start) + INTERVAL '1 hour'
                        AS time_end,
                AVG(qv_dvalue * 100 / qv_dconfig)
                        AS value
                FROM sge_queue_values
                WHERE qv_variable = 'slots' AND
                        qv_parent = (SELECT q_id FROM sge_queue
                                WHERE q_qname = __key_0__
                                        AND q_hostname = __key_1__)
                        AND qv_time_start &lt;= '__time_end__' AND
                        qv_time_end &gt; '__time_start__'
                GROUP BY time_start
</sql>
</derive>

<auto> タグを使用した派生規則の例を示します。

<!-- average load per hour -->
<derive object="host" interval="hour" variable="h_load">
        <auto function="AVG" variable="np_load_avg" />
</derive>

期限切れレコードの削除

dbwriter の起動時と連続モードの場合は、1 時間ごとに期限切れレコードが削除されます。XML ファイルで計算する値を設定できます。デフォルトでは $SGE_ROOT/dbwriter/database/<database_type>/dbwriter.xml が設定されています。<database_type> では、使用するデータベースの種類を定義します。現在、Oracle および Postgres がサポートされています。構成ファイルのパスは、 -deletion パラメータを使用して dbwriter に渡されます。

構成ファイルは XML 形式を使用しています。このファイルには、派生値と削除値の両方に対する規則が指定されています。削除規則の書式を次に示します。

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

次の規則では、サブスコープに指定した 4 つの変数を、sge_host_values テーブルから 7 日後に削除します。

<delete scope="host_values" time_range="day" time_amount="7">
        <sub_scope>np_load_avg</sub_scope>
        <sub_scope>cpu</sub_scope>
        <sub_scope>mem_free</sub_scope>
        <sub_scope>virtual_free</sub_scope>
</delete>

次の規則では、2 年後に sge_host_values テーブルからすべての変数を削除します。

<delete scope="host_values" time_range="year" time_amount="2"/>

次の規則では、ユーザー fred のすべてのレコードを 1 か月後に削除します。

<delete scope="share_log" time_range="month" time_amount="1">
        <sub_scope>fred</sub_scope>
</delete>