Performance of Java on FBSD vs. others...

Nikos Ntarmos ntarmos at ceid.upatras.gr
Fri Nov 10 21:34:10 UTC 2006


Hi Nick.

On Fri, Nov 10, 2006 at 12:54:25PM -0800, Nick Johnson wrote:
> I suspect that even with only two threads, the threading
> implementation you use may make a difference.  Check your
> /etc/libmap.conf and if it's easy to do, try again with the alternate
> thread implementations (libthr, libc_r) just for kicks.  Refer to the
> man page for libmap.conf for an example.

I'm using libthr, since libpthread has some stability problems for me.
Moreover, I've seen people report libthr as the fastest of the tree
implementations, so i thought i'd stick to that. Anyway, I also tested
against libpthread without any noticeable difference. There's no libc_r
on my system, so it's not an option.

> I'm not sure if the JVM uses shared memory segments, but you might
> want to sysctl -w kern.ipc.shm_use_phys=1 to keep shared memory from
> using swap.

Did that too. No noticeable difference, though...

> How are you setting your heap size?  There could be performance
> differences between the memory allocators on different operating
> systems. What happens if you set -Xms and -Xmx to the same value (eg,
> 1024m) to get all of the allocation to happen up front?

I was using -Xms256m -Xmx1024m. Tried with -Xms1024m -Xmx1024m, again
without any noticeable difference.

> You might also play with /etc/malloc.conf if you find quirks of memory
> allocation.

Malloc options are at their default (i.e. no /etc/malloc.conf).

> Are you using -client or -server?

-client (the default). Also tried with -server, without any noticeable
difference.

> What about default GC tuning options? These can be platform-dependent.
> You may want to explicitly set these to compare apples to apples.

My main consideration is not the fairness of the comparison but the
difference in speed. I've tried all possible -X combinations but
(guessed it?) without any noticeable difference; FreeBSD remains the
lagger...

> I can't think of any other reason there'd be such a difference between
> OSes.  Maybe someone else has some ideas.

I was thinking something along the lines of "there are bits and pieces
of jre/jdk implemented in native code and fbsd doesn't have'em yet", or
(hopefully) "you have to sysctl-turn a.b.c on"...

I'm really interested in hunting this down, since I'm going to spend a
considerable part of the next few weeks running even larger versions of
the program in question, and switching back and forth between freebsd
(OS-of-choice for coding) and win32 (apparently the fastest of the
three in executing the code) is a major pain (and loss of time).

Thanks again.

\n\n


More information about the freebsd-java mailing list