This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Howto: Profiling GCJ code?


thank you for the help!

oprofiler is quite troublesome to build on my mac os x as there a lots of libraries missing. currently "bfd" (-lbfd) is missing.

therefor I am still not sure if java.nio is the main reason for the performance bottleneck but apache mina is also capable of using APR as a transport layer (instead of java.nio). that could improve overall performance too.

patrick



Am 22.06.2009 um 15:35 schrieb Ian Rogers:

Hi,

I just wanted to add a note that to improve the nio performance for
the DaCapo benchmark suite certain special cases were optimized in
Jikes RVM's usage of VMChannel from Classpath (LGPL source visible at
[1]). The FileSystem object within JikesRVM just provides a means to
access open/close/read/write calls without the overhead of JNI (in
much the same way as CNI does for GCJ). There exists CNI channel code,
if nio is a performance problem I believe something can be learnt from
the RVM code base as I don't believe NIO is a performance issue in the
RVM any more.

Regards,
Ian

[1] http://git.codehaus.org/gitweb.cgi?p=mrp.git;a=blob;f=libraryInterface/GNUClasspath/LGPL/src/gnu/java/nio/VMChannel.java;h=8edf32bbf1d630c34b8db317c25376ba85e2a930;hb=HEAD
--
Metacircular Research Platform ( http://mrp.codehaus.org/ ), supports
the development of optimized metacircular Virtual Machines in Java on
Linux, OS/X and Windows.

2009/6/19 Bryce McKinlay <bmckinlay@gmail.com>:
The tool of choice for libgcj profiling is oprofile:
http://oprofile.sourceforge.net/

This should give you reasonably accurate, low-overhead profiling
without having to recompile anything, and even a call graph though
both the java and C/C++ code.

It doesn't surprise me that libgcj's java.nio is slow. Hotspot VMs can
also optimize nio code in ways that gcj can't.


Bryce


On Fri, Jun 19, 2009 at 9:52 AM, Patrick Schäfer<ps@ekse.de> wrote:
Hi,

I am trying to run a server based on apache mina (java.nio) and jna for
native library access. The program runs just fine under jdk 1.5. But there
is a massive performance breakdown using gcj. The program basically polls a
Posix Message Queue every 500ms using JNA (JNI). This causes 5% cpu load on
jdk but the load goes up to 100% using gcj.


Is there any profiling tool which can be easily installed and applied to the
native code?


I read about profiling gcj applications on your faq. There are 3 tools
mentioned. To my understanding gprof can't be applied due to missing
multithreading support and it requires the program to exit main before
writing any profiling information. The later is not easy when using a
network server. cprof seems to be quite outdated (there has been no realease
within the last years) and trying to "make" it, fails with several errors. I
don't know about sprof, but I couldn't find much information about it on the
internet.


Thank you for any hints about current multithreading gcj (gcc) profilers

Patrick




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]