Howto: Profiling GCJ code?
Patrick Schäfer
ps@ekse.de
Mon Jun 22 19:25:00 GMT 2009
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
>>>
>>
More information about the Java
mailing list