Grid Engine システムには、2 種類のレポートとアカウンティングの機能が用意されています。
アカウンティングおよびレポートコンソール (ARCo)
qacct コマンドおよび accounting ファイル
オプションのアカウンティングおよびレポートコンソール (ARCo) を使用すると、Grid Engine システムから実際のアカウンティングとレポートのデータを収集し、標準的な SQL データベースであるレポートデータベースにデータを格納できます。ARCo は、次の SQL データベースシステムをサポートしています。
PostgreSQL
Oracle
MySQL
また 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 プログラムは、次のタスクを実行します。
レポートファイルから raw データを読み取り、この raw データをレポートデータベースに書き込む。
派生値を計算する。ユーザーは、計算を制御する規則だけでなく、どの値を計算するかを構成できます。
期限切れのデータを削除する。ユーザーは、データを保持する期間を構成できます。
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」フィールドでは次のパラメータを設定します。
accounting を true に設定します。true がデフォルト値です。
reporting を true に設定します。
flush_time を 00:00:15 に設定します。00:00:15 がデフォルト値です。
joblog を true に設定します。
sharelog を 00:00:00 に設定します。00:00:00 がデフォルト値です。
コマンド行からレポートファイルを使用可能にするには、上記の説明のように、qconf –mconf コマンドを使用して reporting_params 属性を設定します。
レポートファイルが使用可能になれば、dbwriter はレポートファイルから raw データを読み取り、それをレポートデータベースに書き込むことができるようになります。
レポートファイルの構成の詳細については、 reporting(5) のマニュアルページを参照してください。ARCo のインストールと設定の詳細については、『Sun N1 Grid Engine 6.1 インストールガイド』の第 8 章「アカウンティングおよびレポートコンソールのインストール」を参照してください。
派生値を計算するための規則は、DbWriterConfig タグのサブタグである派生タグで指定します。次の表に、派生タグの属性を示します。
説明
データを集計する対象のオブジェクト。オブジェクトは次のいずれかです。
ホスト
キュー
プロジェクト
部署
ユーザー
グループ
派生値を計算する頻度を指定する時間範囲です。時間範囲は次のいずれかです。
hour
day
month
year
計算済みのデータを保持する変数の名前です。
次の表に、派生タグのサブ要素を示します。
派生値を計算する SQL 文です。この文は次のカラムを作成する必要があります。
time_start – time_end とともに、計算済みの値の期間を指定します。
time_end
value – 計算済みの派生値
SQL 文は次のプレースホルダを含むことができます。dbwriter は、規則に基づいて各クエリのプレースホルダを次のように置換します。
__time_start__ – クエリーの開始時間。dbwriter は、この規則から、直前に計算された最後の派生値を検索し、このタイムスタンプを次のクエリーの開始時間として使用します。
__time_end__ – クエリーの終了時間。このタイムスタンプは、最後に経過した時間範囲の終了を指定します。たとえば、時間範囲が day であり、派生値が 00:30 で計算された場合、00:00 が time_end として取得されます。
__key_0__, __key_1__, . , __key_n__ – 指定したオブジェクト型の主キーのコンポーネント。たとえば、sge_hosts テーブルには主キー h_hostname があります。ホストオブジェクト型に対して規則が処理された場合、sge_hosts テーブル内のエントリごとに 1 つのクエリーが実行され、SQL 文内の __key_0__ プレースホルダはホスト名により置き換えられます。
sge_queue テーブルは、q_qname および q_hostname から構成された複合的な主キーを持ちます。
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 テンプレートパラメータには次のものがあります。
説明
派生値を計算するための集計関数です。XML ファイルの auto タグの関数属性に由来します。
派生値のオブジェクトに依存します。
派生値のオブジェクトに依存します。
派生値のオブジェクトに依存します。
派生タグの内部属性に由来します。
値が格納されるデータベーステーブルの名前です。オブジェクトに依存します (host => host_values, user => user_values, . )。
値テーブルを親テーブルに結合するのに必要な主キーです。オブジェクトに依存します。
親の ID を保持するフィールドの名前です。オブジェクトに依存します。
親データベーステーブルの名前です。オブジェクトに依存します (host => host, user => user)。
親テーブル用のフィルタです。親テーブルの各エントリの派生値が計算されます (例: 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 |
レポートデータベースで期限切れレコードを削除するには、削除タグで削除規則を指定する必要があります。次の表に、削除タグの属性を示します。
説明
削除するデータの型です。有効なエントリには次のものがあります。
job
job_log
share_log
host_values
queue_values
project_values
department_values
user_values
group_values
time_amount の単位です。
レコードを保持する単位 (time_range) の数です。
次の表に、削除タブのサブ要素を示します。
一部のスコープに関しては、サブスコープを構成できます。サブスコープは、削除の追加条件を指定します。サブスコープは、すべての *_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 により、完了したすべてのジョブによって生成され、クラスタアカウンティングファイル sge-root/cell/common/accounting に含まれている、クラスタのすべてのマシンに関する使用率集計情報が表示されます。この場合、qacct は秒単位で次の 3 つの時間を報告します。
キューあるいはユーザーなどに関するアカウンティング情報の報告に、いくつかのオプションを使用可能です。特に、qacct -l コマンドを使用すると、すでに完了していて、リソース要求指定に一致するすべてのジョブに関する情報を要求できます。
qacct -j [job-id | job-name] コマンドを使用すると、Grid Engine システムによって格納された、リソース使用率情報の全体に直接アクセスできます。 この情報には、getrusage システムコールにより提供された情報が含まれています。
-j オプションは、job-id または job-name を持つジョブのリソース使用率エントリを報告します。引数なしで実行された場合は、参照されたアカウンティングファイルに含まれるすべてのジョブが表示されます。ジョブ ID が指定され、複数のエントリが表示された場合は、次のいずれかが真になります。
ジョブ ID 番号が折り返される。ジョブ ID の範囲は 1 から 999999 です。
移動したチェックポイント設定ジョブが表示される。
詳細については、qacct(1) のマニュアルページを参照してください。