# Monitoring

**URL:** <https://rubytalk.org/t/monitoring/62296>\
**Category:** ruby-talk\
**Created:** [31 March 2011 21:01 UTC](https://rubytalk.org/t/monitoring/62296 "2011-03-31T21:01:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Vivek\_Vaid](https://avatars.discourse-cdn.com/v4/letter/v/e19b73/32.png) [@Vivek\_Vaid](https://rubytalk.org/u/Vivek_Vaid)\
**Post date:** [31 March 2011 21:01 UTC](https://rubytalk.org/t/monitoring/62296/1 "2011-03-31T21:01:01Z")

</div>

Charles - Any insights into jxinsight vs new relic?

\<snip\>  
Another option would be the JXInsight tool  
([http://www.jinspired.com/products/jxinsight/\](http://www.jinspired.com/products/jxinsight/%5C)), which has builtin  
support for profiling Ruby (and may make it possible to combine Ruby  
and Java results in the same output. It is, however, a commercial  
tool.  
\<snip\>

> **···**
>
> On Sat, Dec 4, 2010 at 7:26 PM, Charles Oliver Nutter \<headius@headius.com\>wrote:
> 
> > On Fri, Nov 19, 2010 at 5:56 PM, Joel VanderWerf \> \<joelvanderwerf@gmail.com\> wrote:  
> > \> I'm looking at the output from both --profile and --sample. It seems that  
> > \> --profile measures only jruby methods, and --sample measures only java  
> > \> functions. (Or maybe --sample would show some of the jruby methods if  
> > they  
> > \> were taking enough time to be observed at a tick. My program is much more  
> > \> heavily bottlenecked in the java side at the moment.)  
> > \>  
> > \> Is there any possibility of --profile instrumenting both jruby and java  
> > \> code?
> > 
> > Currently, no. Because Ruby dispatches differently than Java,  
> > including both in the same profile is at least difficult, and maybe  
> > impossible. Liken it to wanting to show profile results for both Ruby  
> > and C (or C++, C#, ObjC) in other implementations, when Ruby method  
> > dispatch is actually implemented \*in\* those native languages. The two  
> > worlds are largely separate.
> > 
> > However...
> > 
> > If you are able to force all Ruby code to compile before invocation  
> > (using -X+C to force all files to compile or -Xjit.threshold=1 to  
> > force all methods to compile on first invocation) normal Java  
> > profiling tools will show the compiled Ruby method bodies alongside  
> > regular Java method bodies. Be forewarned, however...as with any C or  
> > C++-based implementation that JITs Ruby code to native code, the  
> > resulting method are "mangled" a bit, and you'll have to do some  
> > manual chewing to interpret them. But at least you can use any of the  
> > dozens of Java profiling tools and show results for both Ruby and Java  
> > at the same time. If there's interest, I could try to do a screencast  
> > of how to do this with various JVM profilers (such as the built-in  
> > -J-Xrunhprof:cpu=times):
> > 
> > ➔ jruby -J-Xrunhprof:cpu=times -e "def foo; a = 0; while a \< 1000; a  
> > += 1; end; end; 100.times { foo }"  
> > Dumping CPU usage by timing methods ... done.
> > 
> > Result, buried in a java.hprof.txt file: [728666’s gists · GitHub](https://gist.github.com/728666)
> > 
> > Here, the "ruby.\_\_dash\_e\_\_.method\_\_0$RUBY$foo" method is the jitted  
> > version of the "foo" method defined above.
> > 
> > Now, on JRuby 1.6, it may be possible to take this mangled output and  
> > at least do a cleanup pass (because we have standardized the mangling  
> > a bit better), but the profiling output is very tool-specific...so  
> > de-mangling would have to happen on a per-tool basis
> > 
> > Another option would be the JXInsight tool  
> > ([http://www.jinspired.com/products/jxinsight/\](http://www.jinspired.com/products/jxinsight/%5C)), which has builtin  
> > support for profiling Ruby (and may make it possible to combine Ruby  
> > and Java results in the same output. It is, however, a commercial  
> > tool.
> > 
> > - Charlie
