Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Rbkit – a low-pause profiler for ruby (codemancers.com)
67 points by gnufied on Jan 16, 2015 | hide | past | favorite | 13 comments



This is really really cool. Thanks for posting. I'm especially interested in memory usage right now. I wrote a way to generate load and measure memory impact on your app: https://github.com/schneems/derailed_benchmarks

Comparing the two, it looks like this app only uses heap size for memory and doesn't take into account memory that isn't being used but hasn't been freed. https://www.dropbox.com/s/679sd83gqlkligk/Screenshot%202015-...

From `ps` i'm seeing about ~ 200mb RSS usage where rbkit is only showing ~50mb. I wonder what we could do to increase the accuracy here without having to shell out (very slow).

Also as a note if the gem install fails, on a mac I needed to run this:

    $ brew install msgpack
    $ brew install zeromq
Then it worked fine. Thanks again! Projects like this get me really excited for a future with faster applications and better informed developers.


I think, we have some work to document what those values mean. RES in graph - is not total RSS memory usage, it is memory ruby has allocated on C heap via `malloc` calls.

If you are familiar with Ruby internals, ruby heap can store small sized objects (such as smaller strings, smaller arrays etc) in its own heap, but for larger objects ruby uses `malloc` and the ruby heap itself just keeps a pointer to memory allocated. The RES size in graph is approximately that value.

Total RSS size of ruby process is lot bigger, it is combination of C heap, Ruby heap and other allocations which ruby is not even aware of (such as a C extension using `malloc` calls).


Sorry for replying here again. So yeah - we plan to report RSS memory as well, but we obviously don't want to shell out.

But - we can do this in C though via the rbkit library. A quick google search returns something like - http://nadeausoftware.com/articles/2012/07/c_c_tip_how_get_p...

Happy to merge a PR that reports this data to the desktop app (from then on it is trivial to actually display or plot it on desktop app).


The Ruby community has gotten very serious about speed in the last year or so. This bodes well for the entire language. Well done guys!


That's the best apart about having a community like this. When a focus/problem gets presented it wields such a massive amount of force/man-hours to attack the problem


This is something we have been working in our free time for last several months. The instrumentation support in Ruby seems to be coming together at last and ko1 (Koichi Sasada) has done lot of work in that regard.

For those interested in quickly finding out, what rbkit can do , check http://rbkit.codemancers.com/v0.1.10/docs/using-rbkit-deskto...



This looks brilliant. I was hoping it worked for my ruby-1.8.7 application though :( Are there similar applications for versions of ruby lower than ruby-2.1.0?


One potential option is using one of the JRuby 1.7.x releases, which still supports the Ruby 1.8 language level. You'll be able to use all the JVM tools, such as VisualVM, which offer similar functionality.


I think support for Ruby 1.8.7 has ended, so it is very unlikely you will see anything like this written for that version of Ruby. You should seriously consider migrating from that version.

Having said that - As one of the authors of Rbkit - it does not even work on 1.9.x - because instrumentation support we require from Ruby isn't simply there.


Seems like a useful utility. Good work Hemant and team.


Brilliant! When profilers are this easy to use, more people will use them, and the whole Ruby ecosystem will see better performance. Well done.


Nice, it looks like Java's VisualVM, I will give it a try :)




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: