これらのパラメータの設定作業は、インストール手順で行われます。dbwriter の動作は、多くのコマンド行パラメータを使用して設定できます。
-interval パラメータは、dbwriter が新しいレポートファイルを探す間隔を設定します。レポートファイルが見つかると、ファイルが読み取られ、データがレポートデータベースに書き込まれます。
-pid パラメータは、PID ファイルへのパスを定義します。dbwriter は起動時に PID ファイルを書き込みます。このファイルには、dbwriter のプロセス ID が含まれています。dbwriter の停止時に、このファイルは削除されます。
-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 が出力するデータの量が著しく増大します。指定できるのは、次のデバッグレベルです。
-warning: 重大なエラーと警告のみが表示されます。
info: 多くの情報メッセージが追加されます。-display スイッチを使用しない場合は、このレベルがデフォルトになります。
-config: 規則の処理 (派生値また削除規則) などの、dbwriter の設定に関係する追加情報を提供します。
-fine: 詳細情報を出力します。このレベルを選択すると、dbwriter が実行するすべての SQL 文が出力されます。
-finer: デバッグ用です。
-finest: デバッグ用です。
-all: すべてのレベルの情報を表示します (デバッグ専用)。
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 形式を使用しています。次の節で説明するように、派生値と削除値両方の規則が指定されています。派生値の規則の書式を次に示します。
最上位の開始タグは <derive> です。次の 3 つの属性を使用して指定します。
object — ホスト、キュー、ユーザー、グループ、部署、またはプロジェクトを指定します。この属性に基づいて、派生値は最終的に次のいずれかに格納されます。sge_host_values、sge_queue_values、 sge_user_values、 sge_group_values、sge_department_values、sge_project_values。
interval — 時間、日、月、または年のいずれかです。
variable — 新しい派生値の名前です。
第 2 レベルの開始タグは <sql> または <auto> のいずれかで、値の派生方法を記述します。これらのタグの詳細を次に示します。
<sql> – このタグには、派生値の計算に使用される SQL 文を指定します。エントリの正確な構文は、使用するデータベースの種類によって異なります。
<auto> - 特定の単純な派生値については、完全な SQL クエリーの代わりにこのタグを使用できます。このタグには 2 つの属性があります。
function — 変数に適用する集約関数を指定します。ここでは、使用する種類のデータベースに有効な任意の関数を指定できます。代表的な関数としては、AVG 、SUM、VALUE 、COUNT、MIN、または MAX があります。
variable — 次のテーブルに記録される任意の変数を指定できます。sge_host_values、sge_queue_values、sge_user_values、sge_group_values、 sge_department_values、sge_project_values。指定する変数は、<derive> タグで囲まれたオブジェクト属性によって示されるテーブルに存在する必要があります。たとえば、オブジェクトがホスト の場合、変数は sge_host_values に存在する必要があります。
2 つの開始タグに対応する 2 つの終了タグを指定します。
<sql> タグを使用した派生規則の例を示します。sge_queue テーブルには、 q_qname と q_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 <= '__time_end__' AND qv_time_end > '__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 形式を使用しています。このファイルには、派生値と削除値の両方に対する規則が指定されています。削除規則の書式を次に示します。
最上位の開始タグ <delete> には、次の 3 つの属性があります。
scope — 削除するデータの型です。有効なエントリは job、 job_log、 share_log、ip, queue_values、ip, department_values、user_values、group_values です。この属性に基づいて、sge_ prepended と同じ名前のテーブルから値が削除されます。
time_range — time_amount の単位です。
time_amount — レコードを保持する単位 (time_range) 数です。
第 2 レベルの開始タグ <sub_scope> はオプションですが、このタグは削除の追加条件を指定します。サブスコープは、すべての *_values スコープおよび share_log スコープに対して設定できます。
1 つまたは 2 つの開始タグに対応する 2 つの終了タグを指定します。
サブスコープが *_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>