This is relevent only to Linux users, and probably only to fairly
advanced ones at that.

So Zab and I have been trying to find a way to run Freenet with NPTL
for some time now, because there are big performance and ease of use
benefits in doing this.  Unfortunately Sun's JVMs have proven completely
unreliable (ok well they reliably crash) when used intensively with
NPTL.  Today the discussion turned to IBM's JDK, Zab thought it was only
at version 1.4.0, which would be insufficient for Freenet's needs, but
upon investigation, it turned out to be on 1.4.1.

Zab and I both promptly downloaded it, and switched over to NPTL mode
with the IBM JDK, and to our surprise, it works!  The performance isn't
as stunning as Sun's JVM with NPTL off the bat, but once IBM's Just In
Time compiler has a chance to do it's work, performance is _great_ and
it doesn't crash even after extended periods running with NPTL.

Other things to note about the IBM JDK:  As the JIT compiler does it's
work, debugging symbols are stripped from the code, this means that call
traces after long uptimes will no longer contain line numbers of
references.  This means that the IBM JDK should only be used on 'stable'
nodes, not those from which bug reports will regularly be submitted.
Also, there seems to be a noticible performance 'glitch' when the IBM
JDK does it's garbage collection routine (for me, this consists of 2
seconds out of every 10 pegging the CPU and reducing BW usage to nil).
Despite this, my extremely loaded node is performing very well, and
serviced 45k requests (out of 76k) during it's first full hour on IBM +
NPTL.

For those who are not familiar, NPTL is Native Posix Threading Library,
and is designed to use the new Futex support in linux-2.6 and a patched
glibc to impliment _fast_ userspace threading.  Using NPTL, the JVM will
only appear as one process in top or ps output which can be quite
convenient.

To try out NPTL with the IBM JDK for yourself, first obviously install
the IBM JDK which can be downloaded from
https://www6.software.ibm.com/dl/lxdk/lxdk-p then (get|install|check if
you have a) NPTL enabled kernel, these include any 2.6.0 kernel, or
RedHat's latest kernels.  Then install the NPTL libraries (generally
part of your glibc package), and finally remove the "LD_ASSUME_KERNEL"
line from your start-freenet.sh script (or whatever script you use to
start freenet).

Happy NPTLing!

--Brandon
_______________________________________________
Devl mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to