Re: Howto: Profiling GCJ code?
Patrick Schäfer <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]>: >> 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<[email protected]> 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 >>> >>