> OK. Let's go.
> Now i have about 100 users simultaneous. That box has 4 CPU and it's running
> JBoss.
> My application it's very slow. Looking at prstat I saw that I have many
> threads and most of time one or two threads are running in the same time.
> Using -Lm prstat options I saw that the most of time the threads are in
> LCK/SLP state.
>   
Yep. Performance is slow because this threaded application isn't really 
get much in the
way of concurrency. In fact, there are 256 threads in this app, with 
only 1 getting
work done, so my first question is why 256 threads? Did you try tweaking 
this down
to, say, 8 threads? Or 4 threads?
> Using plockstat I saw many locks for malloc, so I changed for libumem. I
> don't have more contention locks (Spin, block), I have just many Mutex hold
> locks.
The hold times are  not atrociously bad, but some are fairly long. More 
to the point,
this indicates all the LCK time is in malloc-related locks. So you may 
have improved the
situation here with the move to libumem, but it doesn't necesarily mean 
the problem has
been solved. The data tells us that some Java threads are spending 20% 
or more of their
time waiting on locks, and those locks all seem to be in malloc. So we 
need to figure out
why the JVM is calling malloc. That's the second dtrace line I sent, and 
I'm not sure why
it came back empty. I would run it again. We need to know where the 
malloc calls are
coming from.
>  But the problem still exist. I have 7 box running jboss, all box have
> the same problem.
>   
That's not surprising. It looks like an application issue to me.
> Doubt: Are there some difference for output running prstat for 1 second or 5
> second? Because running prstat for 1 second I get thread with 100% LCK.
>   
Only the difference one would expect by averaging over a longer period. 
The actual microstates
are event-based, and prstat computes the percentage of time spent in 
each microstate based on
the interval, so changing the interval from 1 second to 5 seconds means 
a longer window from
which to compute averages. I would not expect things to change 
appreciably in terms of what's
reported (and, in my experience, it generally does not).

Your prstat data shows significantly more sleep time than lock time, 
although between the
two you account for 98% of time for almost all the threads. So....

1. The locks. You need to determine where the mallocs are coming from. 
Only an application
    change can improve this.

2. Sleep. What are the threads sleeping on? Looks like writes to files 
and network sockets
    account for a fare bit (based on earlier stack traces). You could 
also grab some random
    pstack(1) samples (pstack PID/LWPID) for long sleeping threads. If 
you want to reduce
    sleep time on writes, you need to make writes faster, or change the 
code to spin
    off a "writer" thread to do the writes asynchronously to the other 
work the application
    does (assuming the application design and specs permit such a thing) 
- otherwise, you need
    to optimize writes. Looks like the file writes are all to temp files 
in /var/tmp. Check your
    iostat data and make sure you're getting good write performance. Are 
the files opened
    O_SYNC/O_DSYNC? That will really slow writes down, and should only 
be done if it's
    an absolute requirement for the application (run pfiles on the JVM 
to determine if the files
    SYNC flags are set. If they are, ask the programmers if sync writes 
are necessary).

Again, this isn't a dtrace issue, it's a Java application performance 
issue. You'll probably get
more help by posting to a performance group 
([EMAIL PROTECTED]) and a
Java interest group (sorry, I'm not a Java expert).

You should also consider trying a newer JVM - the 1.6 JVM includes the 
hotspot dtrace
provider, so we can learn more about what the code is doing with dtrace.
Alternatively, download and link in agent libs for 1.4/1.5 Java to get 
some dtrace probes:
https://solaris10-dtrace-vm-agents.dev.java.net/

And again, I don't know why 256 threads are being started. I would 
seriously consider taking
the thread count way down for some testing. Too many threads puts more 
pressure on
already contended resources, and the threads are not getting any work 
done anyway...

HTH,
/jim


> *******************************************************************
> Prstat (now), I got a little better LCK when I changed for libumem:
>
> [EMAIL PROTECTED]:/] # prstat -Lmp 25736  
>    PID USERNAME USR SYS TRP TFL DFL LCK SLP LAT VCX ICX SCL SIG
> PROCESS/LWPID 
>  25736 root      57 0.0 0.0 0.0 0.0  43 0.0 0.1  36  83  76   0 java/2
>  25736 root     0.6 0.5 0.0 0.0 0.0  16  78 0.0  32   0  1K   0 java/7211
>  25736 root     0.4 0.6 0.0 0.0 0.0  29  70 0.0  19   5  1K   0 java/7237
>  25736 root     0.4 0.6 0.0 0.0 0.0  27  61 0.2  25  15  1K   0 java/7364
>  25736 root     0.4 0.5 0.0 0.0 0.0  20  80 0.0  19   8  1K   0 java/7218
>  25736 root     0.3 0.4 0.0 0.0 0.0  29  70 0.0  18   5  1K   0 java/7204
>  25736 root     0.3 0.4 0.0 0.0 0.0  16  73 0.0  23   6 864   0 java/7374
>  25736 root     0.2 0.4 0.0 0.0 0.0  20  79 0.0   9  11  1K   0 java/7305
>  25736 root     0.3 0.4 0.0 0.0 0.0  23  76 0.0   7   9 900   0 java/7475
>  25736 root     0.4 0.3 0.0 0.0 0.0  11  88 0.0  15   1 553   0 java/7236
>  25736 root     0.3 0.3 0.0 0.0 0.0 0.8  93 0.0  17   2 734   0 java/7370
>  25736 root     0.1 0.3 0.0 0.0 0.0 8.7  91 0.0   7   2 773   0 java/7235
>  25736 root     0.2 0.2 0.0 0.0 0.0 9.5  90 0.0   8   0 316   0 java/7219
>  25736 root     0.2 0.1 0.0 0.0 0.0 9.8  84 0.0  17  11 306   0 java/7269
>  25736 root     0.1 0.1 0.0 0.0 0.0 0.1 100 0.0   2   1 419   0 java/7471
>  25736 root     0.2 0.0 0.0 0.0 0.0 8.0  92 0.0  14   3  68   0 java/7264
>  25736 root     0.1 0.1 0.0 0.0 0.0  10  89 0.0   6   0 327   0 java/7470
>  25736 root     0.1 0.1 0.0 0.0 0.0 0.0 100 0.0  10   0 302   0 java/7365
>  25736 root     0.2 0.0 0.0 0.0 0.0 6.4  88 0.1  14   5  49   0 java/7317
>  25736 root     0.1 0.1 0.0 0.0 0.0  93 7.0 0.1   4   4 209   0 java/7367
>  25736 root     0.1 0.0 0.0 0.0 0.0 4.0  91 0.0  10   1  55   0 java/7229
>  25736 root     0.1 0.0 0.0 0.0 0.0 3.9  96 0.0  11   1  57   0 java/7304
>  25736 root     0.1 0.1 0.0 0.0 0.0 8.6  91 0.0   4   1 196   0 java/14
>  25736 root     0.0 0.1 0.0 0.0 0.0 0.0 100 0.0   1   1 263   0 java/7297
>  25736 root     0.1 0.1 0.0 0.0 0.0 0.0 100 0.1 154   0  86   0 java/10
>  25736 root     0.1 0.0 0.0 0.0 0.0 0.6  99 0.0   9   0  55   0 java/7377
>  25736 root     0.1 0.0 0.0 0.0 0.0 100 0.0 0.0  12   4  54   0 java/4
>  25736 root     0.0 0.0 0.0 0.0 0.0 100 0.0 0.0  16   0  40   0 java/3
>  25736 root     0.0 0.0 0.0 0.0 0.0 3.6  96 0.0   2   0   4   0 java/7481
>  25736 root     0.0 0.0 0.0 0.0 0.0 100 0.0 0.0   8   0  12   0 java/170
>  25736 root     0.0 0.0 0.0 0.0 0.0 100 0.0 0.0  12   0  12   0 java/231
>  25736 root     0.0 0.0 0.0 0.0 0.0 100 0.0 0.0  19   4  25   0 java/171
>  25736 root     0.0 0.0 0.0 0.0 0.0 0.0 100 0.0   1   0   2   0 java/7221
>  25736 root     0.0 0.0 0.0 0.0 0.0  95 0.0 0.1  20   0  20   0 java/167
>  25736 root     0.0 0.0 0.0 0.0 0.0 0.0 100 0.0   1   0   2   0 java/7378
> Total: 1 processes, 256 lwps, load averages: 0.74, 0.68, 0.62
>
> ******************************************************************
>
>
> Plockstat (now):
>
> [EMAIL PROTECTED]:/dtrace] # plockstat -A -e 30 -p 25736
>         0
> Mutex hold
>
> Count     nsec Lock                         Caller
> ----------------------------------------------------------------------------
> ---
>  3546     4765 0x8079580                  libumem.so.1`umem_cache_alloc+0xc1
> 3509     3865 0x8079580                  libumem.so.1`umem_cache_free+0x194
>   328    12542 0x8073030                    libumem.so.1`vmem_xfree+0xfe
>     3  1340378 libumem.so.1`umem_cache_lock
> libumem.so.1`umem_cache_applyall+0x51
>   261    13414 0x8073030                    libumem.so.1`vmem_alloc+0x13c
>   471     5696 0x807b680
> libumem.so.1`umem_cache_alloc+0xc1
>   475     5441 0x807b680
> libumem.so.1`umem_cache_free+0x194
>   123    20767 0x807b6c0
> libumem.so.1`umem_cache_free+0x194
>    28    90103 0x807a1c0
> libumem.so.1`umem_cache_free+0x194
>   329     6788 libumem.so.1`vmem0+0x30      libumem.so.1`vmem_alloc+0x126
>   309     6900 0x807ad80
> libumem.so.1`umem_cache_alloc+0xc1
>   329     6310 libumem.so.1`vmem0+0x4a4     libumem.so.1`vmem_xalloc+0x43b
>   328     6248 libumem.so.1`vmem0+0x30      libumem.so.1`vmem_xfree+0x127
>   355     5727 0x807b300
> libumem.so.1`umem_cache_alloc+0xc1
>   216     9080 0x807b940
> libumem.so.1`umem_cache_alloc+0xc1
>   355     5338 0x807b300
> libumem.so.1`umem_cache_free+0x194
>   328     5393 libumem.so.1`vmem0+0x4a4     libumem.so.1`vmem_xfree+0xfe
>   310     5308 0x807ad80
> libumem.so.1`umem_cache_free+0x194
>   329     4921 0x8073030                    libumem.so.1`vmem_xalloc+0x43b
>   154    10299 0x807b9c0
> libumem.so.1`umem_cache_alloc+0xc1
>   216     6043 0x807b940
> libumem.so.1`umem_cache_free+0x194
>   329     3960 0x8073030                    libumem.so.1`vmem_xalloc+0x315
>   161     7968 0x807b980
> libumem.so.1`umem_cache_alloc+0xc1
>   235     5438 0x807b500
> libumem.so.1`umem_cache_alloc+0xc1
>   329     3784 libumem.so.1`vmem0+0x4a4     libumem.so.1`vmem_alloc+0x13c
>   241     5029 0x807b500
> libumem.so.1`umem_cache_free+0x194
>    85    13906 0x8082c80
> libumem.so.1`umem_cache_alloc+0xc1
>   329     3577 libumem.so.1`vmem0+0x4a4     libumem.so.1`vmem_xalloc+0x315
>    39    29926 0x8079980
> libumem.so.1`umem_cache_free+0x194
>   130     8876 0x807ba00
> libumem.so.1`umem_cache_alloc+0xc1
>    34    33388 0xc8e149c0                   libc.so.1`thr_suspend+0x1a
>   155     7304 0x807ba40
> libumem.so.1`umem_cache_alloc+0xc1
>    13    86856 0x807ac80
> libumem.so.1`umem_cache_alloc+0xc1
>    94    11979 0x80828c0
> libumem.so.1`umem_cache_alloc+0xc1
>   143     7742 0x807b5c0
> libumem.so.1`umem_cache_alloc+0xc1
>   153     5759 0x807b5c0
> libumem.so.1`umem_cache_free+0x194
>    98     8816 0x807b540
> libumem.so.1`umem_cache_alloc+0xc1
>   115     7499 0x807b8c0
> libumem.so.1`umem_cache_alloc+0xc1
>    26    32518 0xc8e12100                   libc.so.1`thr_suspend+0x1a
>   158     5210 0x807b640
> libumem.so.1`umem_cache_free+0x194
>    95     8504 0x80828c0
> libumem.so.1`umem_cache_free+0x194
>   155     5199 0x807ba40
> libumem.so.1`umem_cache_free+0x194
>     8    97711 0xc8e145c0                   libc.so.1`thr_suspend+0x1a
>   130     5915 0x807ba00
> libumem.so.1`umem_cache_free+0x194
>    41    18736 0x807b2c0
> libumem.so.1`umem_cache_alloc+0xc1
>   101     7524 0x8082940
> libumem.so.1`umem_cache_alloc+0xc1
>    33    22842 0x807d640
> libumem.so.1`umem_cache_free+0x194
>    35    21064 0x807acc0
> libumem.so.1`umem_cache_alloc+0xc1
>    16    45814 0xc8e12900                   libc.so.1`thr_suspend+0x1a
>   129     5641 0x807b880
> libumem.so.1`umem_cache_free+0x194
>     5   142887 0xc8e13100                   libc.so.1`thr_suspend+0x1a
>    43    16584 0x807b240
> libumem.so.1`umem_cache_alloc+0xc1
>    21    33838 0xc8e12b80                   libc.so.1`thr_suspend+0x1a
>   101     7012 0x8082940
> libumem.so.1`umem_cache_free+0x194
>     8    42677 0xc8e13f00                   libc.so.1`thr_suspend+0x1a
>     7    48677 0xc8e12940                   libc.so.1`thr_suspend+0x1a
>     9    37763 0xc8e13080                   libc.so.1`thr_suspend+0x1a
>    30    11317 0x8079880
> libumem.so.1`umem_cache_alloc+0xc1
>    61     5553 0x807fcc0
> libumem.so.1`umem_cache_alloc+0xc1
>     7    38522 0xc8e14240                   libc.so.1`thr_suspend+0x1a
>    47     5664 0x8079cc0                    
>    26     9348 0x807a280
> libumem.so.1`umem_cache_alloc+0xc1
>     6    39964 0xc8e14480                   libc.so.1`thr_suspend+0x1a
>    26     9198 0x807bc40
> libumem.so.1`umem_cache_alloc+0xc1
>     5    47600 0xc8e15440                   libc.so.1`thr_suspend+0x1a
>    30     7853 0x807a240
> libumem.so.1`umem_cache_alloc+0xc1
>    14    16771 0x80824b4
> libumem.so.1`umem_depot_alloc+0xa4
>     3     3747 0x807f4b4
> libumem.so.1`umem_cache_update+0xe5
>     3     3743 0x807d134
> libumem.so.1`umem_cache_update+0xe5
> (...)
>
> Mutex block
>
> Count     nsec Lock                         Caller
> ----------------------------------------------------------------------------
> ---
>     1  1624523 0x8073030                    libumem.so.1`vmem_xfree+0x24
>     1    23803 0x80825c0
> libumem.so.1`umem_cache_free+0x51
>     1    18619 0x8073030                    libumem.so.1`vmem_xfree+0x24
>     1    15304 0x807b5c0
> libumem.so.1`umem_cache_free+0x51
>
>
> ******************************************************************
>
>
> # time dtrace -n 'syscall::write:entry / pid == $target / {
> @[fds[arg0].fi_pathname] = count(); }' -p 25736
>
> dtrace: description 'syscall::write:entry ' matched 1 probe
> ^C
>
>   /zonas/srvintra/root/var/tmp/imageio158908.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158909.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158910.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158911.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158912.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158913.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158914.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158915.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158916.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158917.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158918.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158919.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158920.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158921.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158922.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158923.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158924.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158925.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158926.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158927.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158928.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158929.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158930.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158931.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158932.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158933.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158934.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158935.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158936.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158937.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158938.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158939.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158940.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158941.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158942.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158943.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158944.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158945.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158946.tmp                   16
>   /zonas/srvintra/root/var/tmp/imageio158947.tmp                   16
>  
> /zonas/srvintra/root/opt/jboss-3.2.3_jetty-4.2.17/server/default/log/2008_04
> _23.controller.csv              247
>  
> /zonas/srvintra/root/opt/jboss-3.2.3_jetty-4.2.17/server/default/deploy/detr
> an.war/WEB-INF/control-detran.log              784
>  
> /zonas/srvintra/root/opt/jboss-3.2.3_jetty-4.2.17/server/default/log/2008_04
> _23.request.log            89872
>
> real    0m46.632s
> user    0m0.535s
> sys     0m0.412s
>
> *************************************************************
>
> # time dtrace -n 'pid$target:libc:malloc:entry { @j[jstack()] = count(); }'
> -p 5736
>
> dtrace: description 'pid$target:libc:malloc:entry ' matched 1 probe
> ^C
>
>
> real    0m52.971s
> user    0m0.581s
> sys     0m0.452s
>
>
>  
> Regards,
>  
> ------------------------------------------------------------------
>  
> Kleyson Rios.
> Gerência de Suporte Técnico
> Analista de Suporte / Líder de Equipe
>  
> Governo do Estado de Goiás
> Agência de Administração
> Diretoria de Informática
> +55 62 3201-6582
>  
> "Você sabe a diferença entre pessoas bem sucedidas e pessoas mal sucedidas ?
> Pessoas bem sucedidas estão dispostas a fazer as coisas que as pessoas mal
> sucedidas não estão."
>
> -----Mensagem original-----
> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
> Enviada em: quarta-feira, 23 de abril de 2008 13:08
> Para: Kleyson Rios
> Cc: dtrace-discuss@opensolaris.org
> Assunto: Re: RES: Process in LCK / SLP (Please)
>
> D'oh! My bad. My brain was thinking malloc and lock contention,
> I saw the network calls on the stack, connected the dots and starting
> typing. I should have looked at the top of the stack. Sorry.
>
> Let's back up a minute. You have a Java application and the JVM has a
> large number of threads in LCK time (user lock), right?
>
> plockstat showed a lot of lock activity in libc malloc, at which point
> you tried mtmalloc and libumem, neither of which made much of
> a difference, right?
>
> We know empirically (and heard from Jarod) that LCK can be deceiving,
> because threads that call cond_wait(3C) to wait on a condition variable
> will be charged with LCK time, but it's really sleep time most of the time.
> So it is sometimes an artifact of the application design that threads show
> up at 100% LCK time - threads are waiting for a cond_signal() (or 
> cond_broadcast())
> to be put to work, but there's no work to do. Anyway...
>
> The problem I thought we were chasing was lock activity in malloc.
>
> If you have more recent data (plockstat, prstat) please pass it to me (sorry
> I missed it), and I'll get back in sync on the current problem.
>
> I would add that there's nothing here that I think belongs on 
> dtrace_discuss.
> I would start posting to the performance group and a Java performance
> alias. Also, and I'm sorry if I missed this, how well (or poorly) is the
> Java application performing, and what metric do we have to determine
> application performance.
>
> Ricky's script grabs a user stack when a thread goes off CPU to sleep, and
> tally's what the threads are sleeping on. It's mostly condition 
> variables, which
> doesn't really help us much (everything sleeps on CVs...mostly). There's a
> lof of user locks in there as well. So...
>
> The CVs look like threads blocking on writes, including writes to a 
> network socket.
> You need to figure out the write target, and go from there.
>
> Get the PID of the target JVM -
>
> dtrace -n 'syscall::write:entry / pid == $target / 
> @[fds[arg0].fi_pathname] = count(); }' -p [PID_OF_JVM]
>
> The above will list the files being written to. The next step depends on 
> what we see.
>
> The same goes for the user locks. If they are indeed malloc locks (which 
> I think they are),
> I suspect that will come back around to network IOs larger than 2k. Try 
> this:
>
> dtrace -n 'pid$target:libc:malloc:entry { @j[jstack()] = count(); }' -p 
> [PID_OF_JVM]
>
> Thanks,
> /jim
>
>
>
> Kleyson Rios wrote:
>   
>> Hi Jim,
>>
>> But, if there are problems in malloc for buffers for network, I should see
>> the locks when running plockstat, don't see ?
>>
>>  
>> Regards,
>>  
>> ------------------------------------------------------------------
>>  
>> Kleyson Rios.
>>
>> -----Mensagem original-----
>> De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
>> Enviada em: quarta-feira, 23 de abril de 2008 01:11
>> Para: Kleyson Rios
>> Cc: dtrace-discuss@opensolaris.org
>> Assunto: Re: [dtrace-discuss] RES: RES: Process in LCK / SLP (Please)
>>
>> You may want to cross-post to a Java alias, but I've been down this
>> road before.
>>
>> Java will call into malloc() for buffers for network reads and writes
>> that are larger than 2k bytes (the 2k is from memory, and I think it
>> was a 1.5 JVM). A large number of malloc calls,
>> and resulting contention on locks in the library, are due to the
>>     
> application
>   
>> doing network writes of larger than 2k.
>>
>> Newer JVMs (1.6) may improve this, but I'm not sure. There's also
>> an alternative set of classes and methods, NIO, which also can
>> help (although I've heard tell that NIO brings other problems along
>> with it, but I can not speak from personal experience).
>>
>> At this point, I think you need to consult with Java experts to determine
>> what options you have for buffer allocation for network IO from the
>> Java heap, versus the current behavior of the JVM dropping back
>> to malloc for allocating buffers for network IO.
>>
>> The other option of course is determining if the code can be changed to
>> use buffers smaller than 2k.
>>
>> Thanks,
>> /jim
>>
>>
>>
>>
>> Kleyson Rios wrote:
>>   
>>     
>>> OK jonathan,
>>>
>>> I understand.
>>>
>>> So, looking on right place now, i can see few locks and sometimes no
>>>       
> locks
>   
>>> (just Mutex Hold). But I still have many threads in 100% LCK.
>>>
>>> If I don't have a lot of locks, where is my problem ?
>>>
>>> Running rickey c weisner's script a get:
>>>
>>> (...)
>>>     25736
>>>               libc.so.1`_so_send+0x15
>>>               libjvm.so`__1cDhpiEsend6Fipcii_i_+0x67
>>>               libjvm.so`JVM_Send+0x32
>>>
>>>     
>>>       
>> libnet.so`Java_java_net_SocketOutputStream_socketWrite0+0x131
>>   
>>     
>>>               0xc3c098d3
>>>                10
>>>     25736
>>>               0xc3d2a33a
>>>                14
>>>     25736
>>>               libc.so.1`_write+0x15
>>>               libjvm.so`__1cDhpiFwrite6FipkvI_I_+0x5d
>>>               libjvm.so`JVM_Write+0x30
>>>               libjava.so`0xc8f7c04b
>>>                16
>>>     25736
>>>               libc.so.1`stat64+0x15
>>>                21
>>>     25736
>>>               libc.so.1`_write+0x15
>>>               libjvm.so`__1cDhpiFwrite6FipkvI_I_+0x5d
>>>               libjvm.so`JVM_Write+0x30
>>>               libjava.so`0xc8f80ce9
>>>                76
>>>   java                       25736  kernel-level lock              1
>>>   java                       25736  shuttle                        6
>>>   java                       25736  preempted                      7
>>>   java                       25736  user-level lock                511
>>>   java                       25736  condition variable             748
>>>
>>>  
>>> Atenciosamente,
>>>  
>>> ------------------------------------------------------------------
>>>  
>>> Kleyson Rios.
>>> Gerência de Suporte Técnico
>>> Analista de Suporte / Líder de Equipe
>>>  
>>>
>>> -----Mensagem original-----
>>> De: Jonathan Adams [mailto:[EMAIL PROTECTED] 
>>> Enviada em: sexta-feira, 18 de abril de 2008 15:40
>>> Para: Kleyson Rios
>>> Cc: dtrace-discuss@opensolaris.org
>>> Assunto: Re: [dtrace-discuss] RES: Process in LCK / SLP (Please)
>>>
>>>
>>> On Apr 18, 2008, at 1:03 PM, Kleyson Rios wrote:
>>>   
>>>     
>>>       
>>>> Hi przemol,
>>>>
>>>> Bellow output of plockstat for malloc and libumem. Both many locks.
>>>> Why changing to libumem I didn't get less locks ?
>>>>
>>>>     
>>>>       
>>>>         
>>> You're looking at Mutex hold statistics, which don't mean a lot  
>>> (unless contention is caused by long hold times)
>>>
>>> The important thing for multi-threaded performance is *contention*.   
>>> (Spinning and blocking)  Those are the statistics you should be  
>>> looking at.
>>>
>>> Both malloc and libumem use locks to protect their state;  libumem  
>>> just uses many locks, in order to reduce contention.
>>>
>>> Cheers,
>>> - jonathan
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> dtrace-discuss mailing list
>>> dtrace-discuss@opensolaris.org
>>>   
>>>     
>>>       
>>   
>>     
>
>
>   
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to