2019.02.14
Gc cr/current block congested
目次
基本情報
gc cr/current block congestedイベントはgc cr/current requestイベントのFixed-upイベントで、ホルダーのノードからブロック画像を転送される過程で、混雑による遅延が発生したことを意味します。 gc cr/current requestイベントがgc cr/current block congestedイベントに変更された流れは、以下の通りです。
・リクエストノードのユーザプロセスが特定のデータブロックを読み込もうとします。 ・ユーザプロセスは、データブロックの適切なバージョンがローカルバッファキャッシュにないことを確認し、マスターノードの LMSプロセスにブロック転送を要求します。ユーザプロセスは、応答を受信するまで、gc cr / current requestイベントを 待機します。 ・ホルダーノードのLMSプロセスは、要求キュー(Request Queue)からの要求メッセージを確認します。もしメッセージが 要求キューに到着した時間とLMSプロセスがメッセージを確認し、時間が1ms以上の差が出たら、すなわちLMSプロセスが 要求メッセージを確認する過程で1ms以上の遅延が発生した場合、Oracleはインターコネクトに混雑が発生したと判断します。 LMSプロセスは、応答メッセージに混雑が発生したことのように知らせます。 ・ユーザプロセスは、ブロックを送信された後に応答メッセージから混雑が発生したことを確認し、gc cr/current request イベントをFixed-upイベントgc cr/current block congestedイベントに変更します。
パラメータと待機時間
待機パラメータ
gc cr/current block congestedイベントなどFixed-upイベントは、P1、P2、P3の値が別途付与されず、Placeholderイベント(ここではgc cr requestイベント)と同じ値を持つものと解釈すればよいのです。
待機時間
Check Point & Solution
LMSの遅延理由と解決策
LMSプロセスが要求メッセージを確認する過程で遅延(1ms以上)が発生する理由と解決策は、以下の通りです。
・インターコネクトを介してメッセージ要求自体が過度に多い場合には、LMSプロセスのメッセージを確認する作業に遅延が 発生することになります。そのため、SQLチューニングやバッファキャッシュのチューニング、ホット・ブロックの解消など を介して不必要に多くのブロック転送要求が発生することを防止することが解決策となります。 ・LMSプロセスが必要なCPUリソースをスムーズに確保されない場合でも、メッセージの確認作業の遅延が発生することがあります。 LMSプロセスのパフォーマンスを最大化する方法を簡単に整理すると、次の通りです。 ・LMSプロセスのリアルタイムスケジューリングを適用する。時分割スケジューリングを適用する場合には、 LMSプロセスのNICE値を下げてより高い優先順位を割り当てる受けるようにする。Oracle10g R2からLMSプロセスは、 基本的にリアルタイムスケジューリング手法を使用する。 ・CPUリソースが十分場合には、LMSプロセスの数を増加させます。 ・OSレベルの不要なジョブを削除してCPUリソースを確保することも重要です。例えば、メモリ不足のためにページング (Paging)作業が頻繁に発生する場合LMSプロセスのパフォーマンスに悪影響を与えることになります。
Event Tip
RACのContention&Congestion
RACで競合(Contention)と混雑(Congestion)という二つの用語が意味するところを正確に理解する必要がああります。「競合」は、ホルダーノードのLMSプロセスがブロックを処理する過程で競争による遅延が発生したことを意味するものであり、「混雑」は、ホルダーノードのLMSプロセスが要求メッセージを処理する過程、すなわちブロックを処理する直前の過程で遅延が発生したことを意味します。この二つの現象は、多くの場合、同時に発生しますが、場合によっては、互いに無関係に発生します。二現象の共通点と相違点をもう一度整理すると以下の通りとなります。
発生事由 ----------------- 競合(Contention): LMSプロセスとローカルプロセスが同じブロックを使用しようとするとき 混雑(Congestion): ー - LMSプロセスが処理するブロックの、REDOフラッシュによる遅延が発生したとき - ホルダーノードの要求キューにメッセージが速すぎ頻度で到着してLMSプロセスがスムーズにメッセージを確認していないとき - LMSプロセスが十分なリソースを割り当てられなかっ要求キューのメッセージをスムーズに確認していないとき 待機イベント gc cr/current block busy gc cr/current grant busy gc cr/current block congested gc cr/current grant congested チューニング方法 - SQLチューニング、バッファキャッシュのチューニングなどを介して、ブロックリクエスト回数を減らす - ブロック分散を使用して、同じブロックのための競争を減らす - LGWRプロセスのパフォーマンスを向上させる - REDOログのI / Oパフォーマンスの向上 - SQLチューニング、バッファキャッシュのチューニングなどを介して、ブロックリクエスト回数を減らす - ブロック分散を介して、不必要なブロック転送を減らす - LMSプロセスのパフォーマンスを改善