Re: "gc current block busy" wait in Concurrent BATCH Processes Run
Date: Wed, 13 Feb 2008 12:29:17 -0500
Message-ID: <55f303590802130929n40c61b86j16582fd93c5c4086@mail.gmail.com>
Hi,
Based on the information from tahiti.oracle.com:
The gc current block busy and gc cr block busy wait events indicate that the remote instance received the block after a remote instance processing delay. In most cases, this is due to a log flush. The existence of these wait events does not necessarily characterize high concurrency for the blocks. High concurrency is instead evidenced by the existence of the gc buffer busy event. This event indicates that the block was pinned or held up by a session on a remote instance. It can also indicate that a session on the same instance has already requested the block, which in either case is in transition between instances and the current session needs to wait behind it.
I would recommend to :
- partition your application to avoid concurrency on the block level
- use smaller block size for top used objects
- optimize log writer
- commit less frequently
- do less changes ;-)
Also you can run racdiag.sql script partially to determine TOP read/write/ping objects:
- TOP 10 WRITE PINGING/FUSION OBJECTS
- This view shows the top 10 objects for write pings accross instances.
- The inst_id column shows the node that the block was pinged on. The name
- column shows the object name of the offending object. The file# shows the
- offending file number (gc_files_to_locks). The STATUS column will show the
- current status of the pinged block. The READ_PINGS will show us read converts
- and the WRITE_PINGS will show us objects with write converts. Any rows that
- show up are objects that are concurrently accessed across more than 1 instance. -- set numwidth 8 column name format a20 tru column kind format a10 tru select inst_id, name, kind, file#, status, BLOCKS, READ_PINGS, WRITE_PINGS from (select p.inst_id, p.name, p.kind, p.file#, p.status, count(p.block#) BLOCKS, sum(p.forced_reads) READ_PINGS, sum(p.forced_writes) WRITE_PINGS from gv$ping p, gv$datafile df where p.file# = df.file# (+) group by p.inst_id, p.name, p.kind, p.file#, p.status order by sum(p.forced_writes) desc) where rownum < 11 order by WRITE_PINGS desc;
- TOP 10 READ PINGING/FUSION OBJECTS
- This view shows the top 10 objects for read pings. The inst_id column shows
- the node that the block was pinged on. The name column shows the object name
- of the offending object. The file# shows the offending file number
- (gc_files_to_locks). The STATUS column will show the current status of the
- pinged block. The READ_PINGS will show us read converts and the WRITE_PINGS
- will show us objects with write converts. Any rows that show up are objects
- that are concurrently accessed across more than 1 instance. -- set numwidth 8 column name format a20 tru column kind format a10 tru select inst_id, name, kind, file#, status, BLOCKS, READ_PINGS, WRITE_PINGS from (select p.inst_id, p.name, p.kind, p.file#, p.status, count(p.block#) BLOCKS, sum(p.forced_reads) READ_PINGS, sum(p.forced_writes) WRITE_PINGS from gv$ping p, gv$datafile df where p.file# = df.file# (+) group by p.inst_id, p.name, p.kind, p.file#, p.status order by sum(p.forced_reads) desc) where rownum < 11 order by READ_PINGS desc;
- TOP 10 FALSE PINGING OBJECTS
- This view shows the top 10 objects for false pings. This can be avoided by
- better gc_files_to_locks configuration. The inst_id column shows the node
- that the block was pinged on. The name column shows the object name of the
- offending object. The file# shows the offending file number
- (gc_files_to_locks). The STATUS column will show the current status of the
- pinged block. The READ_PINGS will show us read converts and the WRITE_PINGS
- will show us objects with write converts. Any rows that show up are objects
- that are concurrently accessed across more than 1 instance. -- set numwidth 8 column name format a20 tru column kind format a10 tru select inst_id, name, kind, file#, status, BLOCKS, READ_PINGS, WRITE_PINGS from (select p.inst_id, p.name, p.kind, p.file#, p.status, count(p.block#) BLOCKS, sum(p.forced_reads) READ_PINGS, sum(p.forced_writes) WRITE_PINGS from gv$false_ping p, gv$datafile df where p.file# = df.file# (+) group by p.inst_id, p.name, p.kind, p.file#, p.status order by sum(p.forced_writes) desc) where rownum < 11 order by WRITE_PINGS desc;
--romas
On 2/13/08, VIVEK_SHARMA <VIVEK_SHARMA_at_infosys.com> wrote:
>
>
> Folks
>
> In a Benchmark Run, 256 concurrent BATCH Processes on RAC using Dedicated
> Sessions (NON-MTS) showing the following Waits:-
>
> How is the "gc current block busy" wait to be addressed?
> From the Statspack Report (Level 7) which section gives the Objects which
> is incurring this wait? Is it the "Segments By Current Blocks Received"
> section OR the "Segments by CR Blocks Received" section?
>
> Will share the Statspack Report, as needed.
>
> Config:-
> Oracle 10.2.0.3 on 3 Node RAC
> Solaris 10
>
> Cheers
>
> Vivek
>
> Statspack Report's Time Elapsed: 11.97 (mins)
>
>
>
> Top 5 Timed Events
> Avg %Total
>
> ~~~~~~~~~~~~~~~~~~
> wait Call
>
> Event Waits Time
> (s) (ms) Time
>
> ----------------------------------------- ------------ ----------- ------
> ------
>
> CPU time 5,854
> 57.6
>
> gc current block busy 24,910 1,463 59
> 14.4
>
> SQL*Net break/reset to client 1,075,218 1,285 1
> 12.6
>
> gcs log flush sync 103,520 511
> 5 5.0
>
> gc buffer busy 6,489
> 367 57 3.6
>
> -------------------------------------------------------------
>
>
>
> Host CPU (CPUs: 120)
>
> ~~~~~~~~ Load Average
>
> Begin End User System Idle WIO WCPU
>
> ------- ------- ------- ------- ------- ------- --------
>
> 8.58 9.54
>
> 8.26 15.61 76.13 0.00 1.19
>
> **************** CAUTION - Disclaimer *****************
> This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended
> solely for the use of the addressee(s). If you are not the intended
> recipient, please notify the sender by e-mail and delete the original
> message. Further, you are not to copy, disclose, or distribute this e-mail
> or its contents to any other person and any such actions are unlawful. This
> e-mail may contain viruses. Infosys has taken every reasonable precaution to
> minimize this risk, but is not liable for any damage you may sustain as a
> result of any virus in this e-mail. You should carry out your own virus
> checks before opening the e-mail or attachment. Infosys reserves the right
> to monitor and review the content of all messages sent to or from this
> e-mail address. Messages sent to or from this e-mail address may be stored
> on the Infosys e-mail system.
> ***INFOSYS******** End of Disclaimer ********INFOSYS***
> --
> http://www.freelists.org/webpage/oracle-l
>
>
>
-- http://www.freelists.org/webpage/oracle-lReceived on Wed Feb 13 2008 - 11:29:17 CST