数千台のアクティブなコンポーネントにまたがる可能性がある分散システムの障害追跡は、もっとも経験の豊富なシステム管理者にとってさえ難題であることがあります。実際、Grid Engine 管理者には、本番の環境のパフォーマンス低下につながる問題を特定し、再現するための明確な手段はありません。Solaris 10 環境では、DTrace ユーティリティーを使用し、Grid Engine マスターコンポーネントのオンサイトパフォーマンスを監視できます。DTrace は、Solaris 10 環境での動的イベントをトレースするための包括的なフレームワークです。DTrace に関する全般的な情報については、http://www.sun.com/bigadmin/content/dtrace/ および dtrace のマニュアルページを参照してください。N1 Grid Engine 6.1 ソフトウェア での DTrace の使用の詳細は、$SGE_ROOT/dtrace/README_dtrace.txt ファイルを参照してください。
Solaris 10 DTrace を使用できる場合は、$SGE_ROOT/dtrace/monitor.sh スクリプトを使用して、Grid Engine マスターを監視し、パフォーマンス上の問題点を探すことができます。monitor.sh スクリプトは次のオプションをサポートしています。
統計間隔を指定します。デフォルトは 15sec です。間隔が広いほど統計精度は低く、狭いほど高くなります。特に有用な値の範囲は 1sec から 24hours です。
$SGE_CELL が「デフォルト」でない場合は必須です。
統計に加えて qmaster スプールのプローブ情報も表示します。このオプションによって、推定されるスプールの問題点に関するより具体的な情報を表示できます。
外部からの qmaster 要求のプローブを表示します。このオプションによって、qmaster の処理が滞る原因になっているインスタンスを評価するためのより具体的な情報を表示できます。
重大なメッセージやエラー、警告メッセージがあると、 monitor.sh 出力に表示されます。
効果的なパフォーマンスチューニングを実現するには、分散システムのパフォーマンス上の問題点を理解する必要があります。$SGE_ROOT/dtrace/monitor.sh スクリプトは、稼働中の Grid Engine マスターのスループット関連データを測定し、そのデータをいくつかのインデックスにまとめて 1 間隔当たり 1 行の形式で出力します。この表示の情報は 4 つの主要カテゴリに分かれます。
スプーリング — qmaster プロセスにスプールされたオペレーション数と経過時間を示します。
要求処理 — レポート、GDI 要求、ACK メッセージなどの、さまざまな種類の送受信メッセージ数を示します。
スケジューリング — schedd プロセスに送信されたスケジューリング要求数と経過時間を示します。
Qmaster 処理 — qmaster/schedd 交信、qmaster 要求 I/O 活動、qmaster ロックおよびロック解除要求に関する情報で構成されます。
詳細は、下記の例を参照してください。
ここでは、Grid Engine マスターの問題点を検出可能な事例の監視出力例を示します。この例には、次の情報が含まれます。
qmaster のスプール活動:
#wrt — spool_write_object() および spool_delete_object() を使用した qmaster の書き込みオペレーション数。重要な書き込みオペレーションのほぼすべてが、この関数を通ります。
wrt/ms — 各スレッドが spool_write_object() に費やした時間の合計 (ミリ秒単位)。
qmaster のメッセージ処理:
#rep — sge_c_report() 経由で qmaster が処理したレポート数。ここには、execd 関数から qmaster に送信された大部分のデータが反映されます。
#gdi — do_gdi_request() 経由で qmaster 処理した GDI 要求数。クライアントコマンドから送信されたもののほぼすべてが、 GDI 要求として受信されます。ただし、exexd 関数やスケジューラから GDI 要求が送られてくることもあります。
#ack — do_c_ack() 経由で qmaster が処理した ACK メッセージ数。ACK メッセージ数が多いということは、ジョブシグナリングが考えられます。ただし、ACK メッセージはほかの目的にも使用されます。
schedd のスケジューリング活動:
#dsp — schedd での dispatch_jobs() 呼び出し回数。dispatch_jobs() の呼び出し 1 回は、スケジューリングの実行 1 回とみなすことができます。
dsp/ms — スケジューラが dispatch_jobs() の各呼び出しに費やした時間の合計
#sad — select_assign_debit() の呼び出し回数。select_assign_debit() の呼び出し 1 回は、スケジューラがジョブの割り当てまたは予約を 1 回試み たとみなすことができます。
qmaster 処理:
#snd — qmaster が schedd に送信したイベントパッケージ数。この数値が長い時間をかけてゼロにまでなった場合は、どこかに問題があり、qmaster/schedd の同期が失われていることを意味します。
#rcv — schedd が qmaster から受信したイベントパッケージ数。この数値が長い時間をかけてゼロにまでなった場合は、どこかに問題があり、qmaster/schedd の同期が失われていることを意味します。
#in++ — qmaster 受信メッセージバッファーに追加されたメッセージ数。
#in-- — qmaster 受信メッセージバッファーから削除されたメッセージ数。1 間隔中に追加されたメッセージが削除されたメッセージより多い場合は、未処理メッセージの総数が増えることを意味します。
#out++ — qmaster 送信メッセージバッファーに追加されたメッセージ数。
#out-- — qmaster 送信メッセージバッファーから削除されたメッセージ数。1 間隔中に追加されたメッセージが削除されたメッセージより多い場合は、未配信メッセージの総数が増えることを意味します。
#lck0/#ulck0 — qmaster の “global” ロック関係の sge_lock()/sge_unlock() 呼び出し回数。qmaster の内部リスト (ジョブリスト、キューリストなど) にアクセスする場合は、必ずこのロックを取得する必要があります。
#lck0/#ulck0 — qmaster の “master_config” ロック関係の sge_lock()/sge_unlock() 呼び出し回数。このロックは二次的なロックですが、同じく重要です。
実際のシステムに表示されるコラムは、下記の例と異なることがあります。
この例では、17:40:32 から 17:41:05 の間にパフォーマンスが低下しています。
CPU ID FUNCTION:NAME 0 1 :BEGIN Time | #wrt wrt/ms |#rep #gdi #ack| #dsp dsp/ms #sad| #snd #rcv| #in++ #in-- #out++ #out--| #lck0 #ulck0 #lck1 #ulck1 0 36909 :tick-3sec 2006 Nov 24 17:39:23 | 43 3| 0 8 4| 3 691 121| 4 4| 11 11 15 15| 68 68 289 288 0 36909 :tick-3sec 2006 Nov 24 17:39:26 | 83 16| 0 10 3| 3 699 122| 3 3| 14 13 17 17| 90 90 681 681 0 36909 :tick-3sec 2006 Nov 24 17:39:29 | 117 24| 0 9 4| 4 1092 198| 4 4| 13 13 17 17| 71 71 591 591 0 36909 :tick-3sec 2006 Nov 24 17:39:32 | 19 4| 0 9 3| 3 591 147| 3 3| 12 12 15 15| 44 43 249 249 0 36909 :tick-3sec 2006 Nov 24 17:39:35 | 144 28| 0 9 4| 4 1012 173| 4 4| 13 13 17 17| 61 62 1246 1247 0 36909 :tick-3sec 2006 Nov 24 17:39:38 | 46 5| 0 8 3| 3 705 122| 3 3| 11 11 14 14| 67 67 293 293 0 36909 :tick-3sec 2006 Nov 24 17:39:41 | 154 31| 0 9 3| 4 894 198| 3 3| 13 13 16 16| 73 72 968 969 0 36909 :tick-3sec 2006 Nov 24 17:39:44 | 46 5| 0 10 4| 4 971 162| 4 4| 13 13 17 17| 71 72 304 304 0 36909 :tick-3sec 2006 Nov 24 17:39:47 | 154 29| 0 8 3| 3 739 158| 3 3| 11 11 14 14| 67 67 990 990 0 36909 :tick-3sec 2006 Nov 24 17:39:50 | 46 5| 0 10 4| 4 815 162| 4 4| 14 14 18 18| 76 76 692 693 0 36909 :tick-3sec 2006 Nov 24 17:39:53 | 74 15| 0 8 3| 3 746 136| 3 3| 12 12 15 15| 54 53 571 571 0 36909 :tick-3sec 2006 Nov 24 17:39:56 | 116 20| 0 11 4| 4 992 184| 4 4| 14 14 18 18| 80 81 669 669 0 36909 :tick-3sec 2006 Nov 24 17:39:59 | 87 18| 0 11 4| 4 851 176| 5 4| 15 15 21 21| 77 76 670 670 0 36909 :tick-3sec 2006 Nov 24 17:40:02 | 109 20| 0 12 5| 4 930 184| 4 5| 17 17 20 20| 77 78 624 624 0 36909 :tick-3sec 2006 Nov 24 17:40:05 | 88 15| 0 9 3| 4 995 176| 3 3| 12 12 15 15| 71 71 1026 1026 0 36909 :tick-3sec 2006 Nov 24 17:40:08 | 112 20| 0 12 4| 4 927 184| 5 4| 16 16 22 22| 81 81 652 652 0 36909 :tick-3sec 2006 Nov 24 17:40:11 | 32 6| 0 7 4| 3 618 121| 3 4| 11 11 13 13| 54 53 336 336 0 36909 :tick-3sec 2006 Nov 24 17:40:14 | 145 30| 0 11 4| 4 988 199| 4 4| 15 15 19 19| 64 65 827 827 0 36909 :tick-3sec 2006 Nov 24 17:40:17 | 43 3| 0 7 3| 3 618 121| 3 3| 10 10 13 13| 64 64 286 286 0 36909 :tick-3sec 2006 Nov 24 17:40:20 | 157 31| 0 11 4| 4 977 199| 4 4| 15 15 19 19| 80 80 1406 1408 0 36909 :tick-3sec 2006 Nov 24 17:40:23 | 43 4| 0 7 3| 3 701 121| 3 3| 10 10 13 13| 64 64 285 285 0 36909 :tick-3sec 2006 Nov 24 17:40:26 | 73 18| 0 11 4| 4 948 171| 4 4| 15 15 19 19| 77 77 700 700 0 36909 :tick-3sec 2006 Nov 24 17:40:29 | 127 31| 0 10 4| 4 968 189| 4 4| 14 14 18 18| 74 74 584 584 0 36909 :tick-3sec 2006 Nov 24 17:40:32 | 10 3| 0 6 0| 1 203 41| 0 0| 58 8 62 62| 23 22 106 106 0 36909 :tick-3sec 2006 Nov 24 17:40:35 | 19 5| 0 5 0| 0 0 0| 0 0| 8 5 13 13| 30 30 200 200 0 36909 :tick-3sec 2006 Nov 24 17:40:38 | 16 5| 0 5 1| 0 0 0| 0 0| 5 6 10 10| 27 26 558 559 0 36909 :tick-3sec 2006 Nov 24 17:40:41 | 1 0| 0 4 0| 0 0 0| 0 0| 7 4 11 11| 9 9 34 34 0 36909 :tick-3sec 2006 Nov 24 17:40:44 | 0 0| 0 4 0| 0 0 0| 0 0| 7 4 11 11| 8 8 28 28 0 36909 :tick-3sec 2006 Nov 24 17:40:47 | 0 0| 0 6 0| 1 744 81| 1 1| 10 6 15 15| 14 14 33 33 0 36909 :tick-3sec 2006 Nov 24 17:40:50 | 1 0| 0 5 1| 0 0 0| 0 0| 8 6 14 14| 11 11 49 49 0 36909 :tick-3sec 2006 Nov 24 17:40:53 | 0 0| 0 4 0| 0 0 0| 0 0| 9 4 12 12| 6 7 28 28 0 36909 :tick-3sec 2006 Nov 24 17:40:56 | 0 0| 0 5 0| 0 0 0| 0 0| 8 5 13 13| 12 12 420 420 0 36909 :tick-3sec 2006 Nov 24 17:40:59 | 0 0| 0 4 0| 0 0 0| 0 0| 8 4 12 12| 9 8 30 30 0 36909 :tick-3sec 2006 Nov 24 17:41:02 | 0 0| 0 4 1| 0 0 0| 0 0| 12 5 16 16| 7 8 25 25 0 36909 :tick-3sec 2006 Nov 24 17:41:05 | 165 41| 0 48 60| 0 0 0| 1 1| 23 106 71 71| 96 97 1236 1236 0 36909 :tick-3sec 2006 Nov 24 17:41:08 | 178 28| 0 15 53| 4 965 206| 4 4| 68 68 75 75| 130 130 1336 1336 0 36909 :tick-3sec 2006 Nov 24 17:41:11 | 106 23| 0 27 35| 4 855 166| 4 4| 82 82 91 91| 115 114 1040 1040 0 36909 :tick-3sec 2006 Nov 24 17:41:14 | 198 37| 0 41 70| 4 1189 196| 4 4| 185 185 185 185| 134 135 1327 1327 0 36909 :tick-3sec 2006 Nov 24 17:41:17 | 16 5| 0 9 5| 4 940 161| 3 3| 17 17 20 20| 43 42 234 234 0 36909 :tick-3sec 2006 Nov 24 17:41:20 | 162 35| 0 13 8| 4 958 200| 4 4| 23 23 28 28| 80 81 1018 1018 0 36909 :tick-3sec 2006 Nov 24 17:41:23 | 44 6| 0 6 3| 2 544 81| 3 3| 8 8 11 11| 63 63 747 747 0 36909 :tick-3sec 2006 Nov 24 17:41:26 | 150 34| 0 13 6| 4 921 199| 4 4| 21 21 25 25| 73 72 923 923 0 36909 :tick-3sec 2006 Nov 24 17:41:29 | 43 3| 0 5 2| 2 506 81| 2 2| 7 7 9 9| 57 57 260 260 0 36909 :tick-3sec 2006 Nov 24 17:41:32 | 157 37| 0 9 3| 4 978 199| 3 3| 13 13 16 16| 73 72 970 970 0 36909 :tick-3sec 2006 Nov 24 17:41:35 | 43 3| 0 7 3| 2 512 85| 3 3| 9 9 12 12| 61 62 274 274 0 36909 :tick-3sec 2006 Nov 24 17:41:38 | 127 29| 0 8 3| 4 994 185| 3 3| 11 11 14 14| 68 68 1265 1265 0 36909 :tick-3sec 2006 Nov 24 17:41:41 | 66 11| 0 10 4| 4 973 171| 4 4| 14 14 18 18| 67 67 354 354 0 36909 :tick-3sec 2006 Nov 24 17:41:44 | 48 10| 0 8 3| 3 785 128| 3 3| 11 11 14 14| 52 51 399 399 0 36909 :tick-3sec 2006 Nov 24 17:41:47 | 142 31| 0 12 4| 4 913 192| 5 4| 17 17 23 23| 89 90 830 830 0 36909 :tick-3sec 2006 Nov 24 17:41:50 | 64 13| 0 11 5| 4 853 168| 4 5| 15 15 18 18| 75 75 542 542 |