Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Protocol for transferring data #1

Open
iffyuva opened this issue Mar 21, 2016 · 1 comment
Open

Protocol for transferring data #1

iffyuva opened this issue Mar 21, 2016 · 1 comment

Comments

@iffyuva
Copy link

iffyuva commented Mar 21, 2016

hello there,
recently @headius visited our office, and we discussed alienist, and how this gem analyzes heap dump, serializes dump into json, and sends it to viewer. we are building a similar opensource tool, but for cruby/mri.

rbkit gem is a c-extension which will be plugged into apps. it exposes interface to start/stop profiling, start gc, take heapdumps. it uses msgpack to compress data, and zeromq to sent compressed data over the wire. client side app is a desktop app, which receives data, decompresses it, and shows nice stats. currently client is written in QT/C++, but we have plans to use electron/react to rewrite frontend.

protocol is documented here: https://github.com/code-mancers/rbkit/blob/master/docs/protocol.md @headius suggested that we can work together on this protocol, and optimize it further, so that we can use this protocol as a standard across jruby/cruby. this way community can write serveral front-end tools.

do let me know what you think. thanks.

/cc @headius @emilsoman @kgrz @gnufied

@enebo
Copy link
Owner

enebo commented Mar 21, 2016

@iffyuva yeah I think there is some interest in hooking into a protocol like this. The current analyzer alienist is using is only a post-mortem analyzer and lacks anything related to sampling or GC (it has not been written around dumping any of that info anyways). With that said their is a common subset of information which is needed about the objects being processed.

My main issue I have run into to date is reassembling heap dump from an Java Object layout and recomposing the Ruby layout. As a post-mortem utility it is somewhat ok but a pretty slow process.

We could also possibly provide some of this live info at some point too since JVM has lots of hooks. We would also have the benefit that we could emit the Ruby info directly and not have the post-mortem reassembly of Java layout back to valid Ruby info. So it should be much faster.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants