On 18 April 2016 at 06:55, Cecil Westerhof <cldwesterhof at gmail.com> wrote:

> ?I put a strace on it. This was what I got:
> Process 26455 attached with 20 threads
> % time     seconds  usecs/call     calls    errors syscall
> ------ ----------- ----------- --------- --------- ----------------
>  99.80 11245.498406       42527    264435    130887 futex
>   0.09   10.480000     3493333         3           fsync
>   0.08    8.886784           0  39275508           read
>   0.02    2.552284           0  16397440           write
>   0.00    0.367716           0  50708676           lseek
> ------ ----------- ----------- --------- --------- ----------------
> 100.00 11267.833632             106646970    130895 total
> ?
>
> ?Pretty damaging for futex: almost half of the calls went wrong and 99.8%
> of the time is spend there?.
>
> ?I have some finding out to do.?


I'm not sure this is damning for futex. You said you are not creating
threads yourself, which means you probably only have one I/O bound thread
actually doing anything. The other 19 threads are presumably spawned by the
APIs you are using and are likely just waiting for something to do. jstack
<PID> will give you details on each thread in the JVM so you can see what
they are up to.

It's not like the futex calls are wasting CPU (in this case) - the threads
are idle until the kernel wakes them up.

-Rowan

Reply via email to