

Show HN: Rbkit – a low-pause profiler for ruby - gnufied
http://rbkit.codemancers.com/

======
thinkbohemian
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](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-...](https://www.dropbox.com/s/679sd83gqlkligk/Screenshot%202015-01-16%2009.26.32.png?dl=0)

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.

~~~
gnufied
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).

------
nateberkopec
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!

~~~
ScotterC
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

------
gnufied
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...](http://rbkit.codemancers.com/v0.1.10/docs/using-rbkit-desktop-app)

------
sciurus
Neat! Here's a few other profiling/tracing tools I know of for Ruby:

[https://github.com/SamSaffron/memory_profiler](https://github.com/SamSaffron/memory_profiler)

[https://github.com/tmm1/rblineprof](https://github.com/tmm1/rblineprof)

[https://github.com/tmm1/stackprof](https://github.com/tmm1/stackprof)

[https://github.com/quirkey/stackprof-
remote](https://github.com/quirkey/stackprof-remote)

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

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

------
keithxm23
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?

~~~
nirvdrum
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.

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

