Re: gc buffer busy from the same instance??

From: <stevedhoward_at_gmail.com>
Date: Sun, 10 May 2009 11:33:43 -0700 (PDT)
Message-ID: <52f10f6f-f4e1-4f08-adc9-72c4c169d45a_at_t11g2000vbc.googlegroups.com>



On May 9, 11:19 am, "stevedhow..._at_gmail.com" <stevedhow..._at_gmail.com> wrote:
> On May 9, 8:43 am, "Jonathan Lewis" <jonat..._at_jlcomp.demon.co.uk>
> wrote:
>
>
>
> > <stevedhow..._at_gmail.com> wrote in message
>
> >news:fe3978e2-5fde-4cbd-ba1f-7c48328b80c4_at_o14g2000vbo.googlegroups.com...
> > On May 8, 3:10 pm, Steve Howard <stevedhow..._at_gmail.com> wrote:
>
> > > Hi All,
>
> > > 10.2.0.4 EE on SLES 10
>
> > > We have seen fairly significant waits recently on this during a large
> > > load recently. We know which query is causing it and are submitting a
> > > fix, but my question is the following:
>
> > > When I select from gv$session, I see session x on instance 2 waiting
> > > on "db file sequential read" for a given file and block number. I see
> > > session y, also on instance 2, waiting on "gc buffer busy" for the
> > > same file and block. These are the only two sessions going after this
> > > block.
>
> > > I can understand (and would expect) this if session y was on instance
> > > 3, or whatever. However, since both sessions are on the same
> > > instance, why is this not either recorded as "read by other session"
> > > or "buffer busy waits" event?
>
> > > Thanks,
>
> > > Steve
>
> > I found this in the docs, which to me still doesn't explain it...
>
> >http://download.oracle.com/docs/cd/B19306_01/rac.102/b14197/monitor.h...
>
> > /
> > *************************************************************************************************************************
>
> > 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.
>
> > *************************************************************************************************************************/
>
> > How is a session on the same instance requesting a block the same as a
> > transition between instances??
>
> > I'm sure the diagnostics pack (at least ADDM) uses the wait classes
> > for its recommendations.  If it sees this as a cluster class event, vs
> > I/O, it may recommend different things (sometimes incorrectly)
>
> > I will open an SR for clarification and report back.
>
> > ====================================
>
> > Here's a possible scenario:
>
> > Session 1 on node 1 wants the block in current mode
>
> > Session A on node 2 is changing it causing session 1 to
> > go into a gc buffer busy wait
>
> > Session 2 on node 1 wants the same block in current mode
> > and goes into gc buffer busy wait as well
>
> > Session A releases the block on node 2, but for various
> > reasons it has to be passed by disk, not by the interconnect,
> > so session 1 terminates its gc buffer busy wait and goes into
> > a db file sequential read.
>
> > --
> > Regards
>
> > Jonathan Lewishttp://jonathanlewis.wordpress.com
>
> > Author: Cost Based Oracle: Fundamentalshttp://www.jlcomp.demon.co.uk/cbo_book/ind_book.html
>
> > The Co-operative Oracle Users' FAQhttp://www.jlcomp.demon.co.uk/faq/ind_faq.html
>
> Thanks, Jonathan.  This would explain it.  I would expect to see a 'gc
> buffer busy wait' for the session just prior to it posting a 'db file
> sequential read' event (for the same file and block). I will test this
> by checking gv$session_wait_history (for all sessions across all
> nodes) next week and report back what I find.
>
> Thanks,
>
> Steve

Jonathan,

That was it.

Thanks!

Steve Received on Sun May 10 2009 - 13:33:43 CDT

Original text of this message