Hello, I am trying to plockstat on some cpu intensive Oracle processes but get no result: # plockstat -x dynvarsize=50m -x aggsize=50m -A -n 5 -p 26602 0 Does anybody know why ? What sould I change to get some results ? I have tried different parameters (including bigger dynvarsize/aggsize) but still no reult. (This is Solaris 10 - sorry but there is no other forum for this kind of questions :-)) Regards Przemyslaw Bak (przemol) ---------------------------------------------------------------- Najwieksza baza najtanszych ofert mieszkaniowych http://linkint.pl/f2a0e
Hi Przemyslaw, It may be that the Oracle process doesn''t use built-in locking primitives. You can test that theory by doing this: # dtrace -p <pid> -n ''plockstat$target:::{ @[probename] = count(); }'' <wait for a bit and hit ^C> This will show you the raw plockstat probes that fired. If you see no output, that indicates that Oracle isn''t using the core locking primitives in which case you''ll need to craft your own scripts for monitoring their locks. Adam On Tue, Aug 9, 2011 at 1:37 AM, <przemolicc at poczta.fm> wrote:> Hello, > > I am trying to plockstat on some cpu intensive Oracle processes but get no result: > # plockstat -x dynvarsize=50m -x aggsize=50m -A -n 5 -p 26602 > ? ? 0 > > Does anybody know why ? What sould I change to get some results ? > I have tried different parameters (including bigger dynvarsize/aggsize) but still no reult. > > (This is Solaris 10 - sorry but there is no other forum for this kind of questions :-)) > > > Regards > Przemyslaw Bak (przemol) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------- > Najwieksza baza najtanszych ofert mieszkaniowych > http://linkint.pl/f2a0e > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org >-- Adam Leventhal, Delphix http://dtrace.org/blogs/ahl 275 Middlefield Road, Suite 50 Menlo Park, CA 94025 http://www.delphix.com
Hi Adam, thank you for you answer. The behaviour I had described is random: once a 30 dtraces I get some result. I also did your test: # time dtrace -p 23390 -n ''plockstat$target:::{ @[probename] = count(); }'' dtrace: description ''plockstat$target:::'' matched 49 probes dtrace: pid 23390 has exited rw-acquire 19 rw-release 19 mutex-acquire 114884 mutex-release 114884 real 53m37.896s user 0m7.684s sys 0m16.986s It seems that Oracle is using built-in locking primitives. Regards Przemek On Tue, Aug 09, 2011 at 09:01:59AM -0700, Adam Leventhal wrote:> Hi Przemyslaw, > > It may be that the Oracle process doesn''t use built-in locking > primitives. You can test that theory by doing this: > > # dtrace -p <pid> -n ''plockstat$target:::{ @[probename] = count(); }'' > <wait for a bit and hit ^C> > > This will show you the raw plockstat probes that fired. If you see no > output, that indicates that Oracle isn''t using the core locking > primitives in which case you''ll need to craft your own scripts for > monitoring their locks. > > Adam > > On Tue, Aug 9, 2011 at 1:37 AM, <przemolicc at poczta.fm> wrote: > > Hello, > > > > I am trying to plockstat on some cpu intensive Oracle processes but get no result: > > # plockstat -x dynvarsize=50m -x aggsize=50m -A -n 5 -p 26602 > > ? ? 0 > > > > Does anybody know why ? What sould I change to get some results ? > > I have tried different parameters (including bigger dynvarsize/aggsize) but still no reult. > > > > (This is Solaris 10 - sorry but there is no other forum for this kind of questions :-)) > > > > > > Regards > > Przemyslaw Bak (przemol) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >---------------------------------------------------------------- Nie masz czym pisac? U nas to znajdziesz! http://linkint.pl/f2a05
Hey Przemek, 1. Since you''re not seeing any contention probes fire, it''s not surprising that you never (rarely) see output from plockstat. 2. I''ve confirmed with an Oracle user that the database indeed rolls its own locking primitives. 3. I imagine that the lock events that you''re seeing are internal to various libraries. You can confirm this by running the following script: dtrace -p <pid> -n ''plockstat$target:::{ @[probename, ustack()] = count(); }'' ADam 2011/8/10 <przemolicc at poczta.fm>:> Hi Adam, > > thank you for you answer. > The behaviour I had described is random: once a 30 dtraces I get some result. > I also did your test: > > # time dtrace -p 23390 -n ''plockstat$target:::{ @[probename] = count(); }'' > dtrace: description ''plockstat$target:::'' matched 49 probes > dtrace: pid 23390 has exited > > ?rw-acquire ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 19 > ?rw-release ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 19 > ?mutex-acquire ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?114884 > ?mutex-release ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?114884 > > real ? ?53m37.896s > user ? ?0m7.684s > sys ? ? 0m16.986s > > It seems that Oracle is using built-in locking primitives. > > Regards > Przemek > > > On Tue, Aug 09, 2011 at 09:01:59AM -0700, Adam Leventhal wrote: >> Hi Przemyslaw, >> >> It may be that the Oracle process doesn''t use built-in locking >> primitives. You can test that theory by doing this: >> >> # dtrace -p <pid> -n ''plockstat$target:::{ @[probename] = count(); }'' >> <wait for a bit and hit ^C> >> >> This will show you the raw plockstat probes that fired. If you see no >> output, that indicates that Oracle isn''t using the core locking >> primitives in which case you''ll need to craft your own scripts for >> monitoring their locks. >> >> Adam >> >> On Tue, Aug 9, 2011 at 1:37 AM, ?<przemolicc at poczta.fm> wrote: >> > Hello, >> > >> > I am trying to plockstat on some cpu intensive Oracle processes but get no result: >> > # plockstat -x dynvarsize=50m -x aggsize=50m -A -n 5 -p 26602 >> > ? ? 0 >> > >> > Does anybody know why ? What sould I change to get some results ? >> > I have tried different parameters (including bigger dynvarsize/aggsize) but still no reult. >> > >> > (This is Solaris 10 - sorry but there is no other forum for this kind of questions :-)) >> > >> > >> > Regards >> > Przemyslaw Bak (przemol) >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------- > Nie masz czym pisac? U nas to znajdziesz! > http://linkint.pl/f2a05 > _______________________________________________ > dtrace-discuss mailing list > dtrace-discuss at opensolaris.org >-- Adam Leventhal, Delphix http://dtrace.org/blogs/ahl 275 Middlefield Road, Suite 50 Menlo Park, CA 94025 http://www.delphix.com
On Wed, Aug 10, 2011 at 07:51:14AM -0700, Adam Leventhal wrote:> Hey Przemek, > > 1. Since you''re not seeing any contention probes fire, it''s not > surprising that you never (rarely) see output from plockstat.Just a few minutes ago I did: # plockstat -x dynvarsize=200m -x aggsize=200m -A -e 5 -n 5 -s 30 -p 20943 0 Mutex hold ------------------------------------------------------------------------------- Count nsec Lock Caller 24 68266 libc.so.1`libc_malloc_lock libodm.so.1`odm_io+0x5c nsec ---- Time Distribution --- count Stack 65536 |@@@@@@@@@@@@@@@@@@@@@@@ | 23 libc.so.1`malloc+0x6c 131072 |@ | 1 libodm.so.1`odm_io+0x5c oracle`ksfd_odmwat+0x2ac oracle`ksfdwtio+0x464 oracle`ksfdwat1+0x94 oracle`ksfdrwat0+0x220 oracle`kcflci+0x1c oracle`kcblco+0x6c> 2. I''ve confirmed with an Oracle user that the database indeed rolls > its own locking primitives. > > 3. I imagine that the lock events that you''re seeing are internal to > various libraries. You can confirm this by running the following > script: > > dtrace -p <pid> -n ''plockstat$target:::{ @[probename, ustack()] = count(); }''Since the output is quite long I give a part of it: mutex-acquire libc.so.1`mutex_lock_impl+0xc0 -- 1 mutex-acquire libc.so.1`mutex_lock_impl+0xc0 -- 1 mutex-acquire libc.so.1`mutex_lock_impl+0xc0 -- 1 mutex-acquire libc.so.1`mutex_lock_impl+0xc0 -- ... mutex-release libc.so.1`mutex_unlock+0xc8 -- 1 mutex-release libc.so.1`mutex_unlock+0xc8 -- 1 mutex-release libc.so.1`mutex_unlock+0xc8 -- 1 mutex-release libc.so.1`mutex_unlock+0xc8 -- 1 mutex-release libc.so.1`mutex_unlock+0xc8 ... mutex-release libc.so.1`mutex_unlock+0xc8 -- 160 mutex-release libc.so.1`mutex_unlock+0xc8 -- 160 mutex-release libc.so.1`mutex_unlock+0xc8 -- 160 mutex-release libc.so.1`mutex_unlock+0xc8 -- 160 mutex-release libc.so.1`lmutex_unlock+0x38 mutex-release libc.so.1`lmutex_unlock+0x38 libc.so.1`localtime_r+0xc4 oracle`slgtds+0x2c oracle`slgtd+0xc oracle`kcmgts+0xc oracle`kcblgr+0x924 oracle`kcblio+0x154 oracle`kcblnb+0x420 oracle`kdblnb+0x54 oracle`kdblailb+0x7e4 oracle`kdblai+0x528 oracle`klclil1r+0xb4 oracle`qerltRop+0x258 oracle`qerrmPFR+0x1f4 oracle`qerrmOdcb+0x4 oracle`ttcfour+0x1fd4 oracle`ttcdrv+0x4f4 oracle`nioqwa+0x3c oracle`upirtrc+0x484 oracle`kpurcsc+0x70 160 Regards Przemek ---------------------------------------------------------------- Dziesiatki tysiecy ofert domow i mieszkan! Ogladaj >> http://linkint.pl/f2a0c