RAC Wait Event: gcs log flush sync
https://www.hhutzler.de/blog/rac-wait-event_gcs_log_flush_sync/#overview-gcs-log-flush-sync-wait-event
Table of Contents
Overview : gcs log flush sync wait event
- Before sending a reconstructed CR block or CUR block, LMS will verify that corresponding redo vectors are flushed to disk.
- LMS will flush request a log flush when there are uncomitted transactions within the required block -> Increasing commit frequence will increase this wait event too
- Use lfsdiag.sql script to understand the wait time suffered by LGWR process
- If the redo vector are not flushed, LMS on node2 need to wait for ‘gcs log flush sync’ event after requesting LGWR for a log flush, analogous to ‘log file sync’ event.
- in a healthy database 90 % of GCS Log flush Sync should be 2ms ore less
- Always check related instances for LOG FILE SYNC event as this event also reduces the Redo I/O bandwith
- If gcs log flush sync wait event is significant then you need to understand your LGWR performance ( you may use lfsdiag,sql script )
Monitor gv$session wait events for LGWR, LMS processes
SQL> select w.inst_id, w.sid,w.program, w.event , w.STATE , w.SECONDS_IN_WAIT SEC_in_WAIT , w.P1TEXT || ': ' || w.P1 || ' - ' || w.P2TEXT || ': ' || w.P2 || ' - ' || w.P3TEXT || ': ' || w.P3 as P1_P2_P3 from gv$session w where program like '%LGWR%' or program like '%LMS%' or program like '%JDBC%' order by program; INST_ID SID PROGRAM EVENT STATE SEC_IN_WAIT P1_P2_P3 ------- ---------- -------------------------------- ---------------------------- ------------------ ----------- --------------------------------------------- 2 18 [email protected] (LGWR) log file parallel write WAITED SHORT TIME 0 files: 1 - blocks: 1 - requests: 1 2 13 [email protected] (LMS0) gcs log flush sync WAITING 0 waittime: 30 - poll: 0 - event: 138
Gcs Log Flush Sync Wait histogramms
Script: @event_histogram_from_awr.sql Acceptable gcs log flush sync histogramm (90 % of wait requests returns in less that 2 ms ) BEGIN_INTERVAL_TIME Inst SNAP_ID EVENT_NAME WAIT_TIME_MILLI WAIT_COUNT ------------------------------ ---- ---------- ---------------- --------------- ---------- 28-NOV-13 04.24.27.507 PM 1 876 gcs log flush sync 1 58940 1 876 gcs log flush sync 2 51775 1 876 gcs log flush sync 4 1433 1 876 gcs log flush sync 8 605 1 876 gcs log flush sync 16 271 1 876 gcs log flush sync 32 181 1 876 gcs log flush sync 64 133 1 876 gcs log flush sync 128 78 1 876 gcs log flush sync 256 7 1 876 gcs log flush sync 512 1 Gcs log flush sync wait histogramm with high wait times 28-NOV-13 04.25.58.021 PM 1 877 gcs log flush sync 1 304 1 877 gcs log flush sync 2 662 1 877 gcs log flush sync 4 11816 1 877 gcs log flush sync 8 46981 1 877 gcs log flush sync 16 68740 1 877 gcs log flush sync 32 202 1 877 gcs log flush sync 64 141 1 877 gcs log flush sync 128 83 1 877 gcs log flush sync 256 8 1 877 gcs log flush sync 512 1
References
1、event_histogram_from_awr.sql
set linesize 180 set pagesize 200 col BEGIN_INTERVAL_TIME format A30 col instance_number format 99 head Inst break on BEGIN_INTERVAL_TIME /* define event_name="gcs log flush sync" define event_name="log file sync" */ select snaps.begin_interval_time, snaps.instance_number,snaps.snap_id,hist.event_name , hist.wait_time_milli, hist.wait_count from dba_hist_event_histogram hist, dba_hist_snapshot snaps where snaps.snap_id = hist.snap_id and snaps.instance_number = hist.instance_number and snaps.begin_interval_time > sysdate - 1/12 -- sysdate - 1/12 -> display AWR reports from the last 2 hours AND hist.event_name = lower ('&&event_name') order by snaps.snap_id , snaps.instance_number, wait_time_milli;
Overview : gcs log flush sync wait event
- Before sending a reconstructed CR block or CUR block, LMS will verify that corresponding redo vectors are flushed to disk.
- LMS will flush request a log flush when there are uncomitted transactions within the required block -> Increasing commit frequence will increase this wait event too
- Use lfsdiag.sql script to understand the wait time suffered by LGWR process
- If the redo vector are not flushed, LMS on node2 need to wait for ‘gcs log flush sync’ event after requesting LGWR for a log flush, analogous to ‘log file sync’ event.
- in a healthy database 90 % of GCS Log flush Sync should be 2ms ore less
- Always check related instances for LOG FILE SYNC event as this event also reduces the Redo I/O bandwith
- If gcs log flush sync wait event is significant then you need to understand your LGWR performance ( you may use lfsdiag,sql script )
Monitor gv$session wait events for LGWR, LMS processes
SQL> select w.inst_id, w.sid,w.program, w.event , w.STATE , w.SECONDS_IN_WAIT SEC_in_WAIT , w.P1TEXT || ': ' || w.P1 || ' - ' || w.P2TEXT || ': ' || w.P2 || ' - ' || w.P3TEXT || ': ' || w.P3 as P1_P2_P3 from gv$session w where program like '%LGWR%' or program like '%LMS%' or program like '%JDBC%' order by program; INST_ID SID PROGRAM EVENT STATE SEC_IN_WAIT P1_P2_P3 ------- ---------- -------------------------------- ---------------------------- ------------------ ----------- --------------------------------------------- 2 18 [email protected] (LGWR) log file parallel write WAITED SHORT TIME 0 files: 1 - blocks: 1 - requests: 1 2 13 [email protected] (LMS0) gcs log flush sync WAITING 0 waittime: 30 - poll: 0 - event: 138
Gcs Log Flush Sync Wait histogramms
Script: @event_histogram_from_awr.sql Acceptable gcs log flush sync histogramm (90 % of wait requests returns in less that 2 ms ) BEGIN_INTERVAL_TIME Inst SNAP_ID EVENT_NAME WAIT_TIME_MILLI WAIT_COUNT ------------------------------ ---- ---------- ---------------- --------------- ---------- 28-NOV-13 04.24.27.507 PM 1 876 gcs log flush sync 1 58940 1 876 gcs log flush sync 2 51775 1 876 gcs log flush sync 4 1433 1 876 gcs log flush sync 8 605 1 876 gcs log flush sync 16 271 1 876 gcs log flush sync 32 181 1 876 gcs log flush sync 64 133 1 876 gcs log flush sync 128 78 1 876 gcs log flush sync 256 7 1 876 gcs log flush sync 512 1 Gcs log flush sync wait histogramm with high wait times 28-NOV-13 04.25.58.021 PM 1 877 gcs log flush sync 1 304 1 877 gcs log flush sync 2 662 1 877 gcs log flush sync 4 11816 1 877 gcs log flush sync 8 46981 1 877 gcs log flush sync 16 68740 1 877 gcs log flush sync 32 202 1 877 gcs log flush sync 64 141 1 877 gcs log flush sync 128 83 1 877 gcs log flush sync 256 8 1 877 gcs log flush sync 512 1
资料二:
How To Solve “gcs log flush sync” Wait Event
In busy databases you may encounter this wait event. The general reason is the low redo log I/O performance or the slow interconnect connection.
As a solution of this wait event;
- You can increase the performance of Interconnect network. For example, instead of 1g cards, you can create an interconnect interface on 10g cards.
- You can move Redo log files onto faster disks.
- Or, you can set the value of the _cr_server_log_flush parameter to false. This is not suggested.
You can change the value of the parameter as follows.
1
2
3
|
SQL> alter system set "_cr_server_log_flush"=false scope=both sid='*';
System altered.
|