Introducing Team Rubinius India
Sana: During my sophomore year, MiniDebConf India happened at our college and that got me introduced to Debian Packaging. Met a lot of awesome people in the Debian India community. Learning from them, was able to make contributions to LibreOffice hyphenation packages for Indian Languages. An year ahead, took a few sessions along with other contributors. Love the Debian India Community and would love to make more contributions :) While attending packaging sessions for packaging gem dependencies for Diaspora, I got introduced to Ruby on Rails. Thats how I began to learn Ruby and Rails to package a Diaspora gem dependency into Debian.
Akanksha: Concept of FOSS was introduced to me by our college’s open source group. Attending open source seminars and workshops has always been my passion. I got introduced to Ruby on Rails in the Rails Girls Pune event. Also attended the Rails 4.1 Release Party where I met our coaches Nishant Modak, Vipul Amler and Prathamesh Sonpatki. Got fascinated with the language and Rails and applied for Rails Girls Summer of Code so as to start contributing to open source.
What are we working on
We are working on making a memory visualizer tool for Rubinius. Hence we are called ‘Team Rubinius’.
Heap dump is one of the most important analysis tools for troubleshooting or fixing high memory usage problems by identifying the root cause of memory leaks in Ruby applications. Rubinius provides a heap dump interface which allows for analysis of memory dump of Rubinius. Our project aims at utilizing the information available from the heap dump file and displaying this information in a graphical way through a visualization tool that helps the user explore the memory usage of their application.
Learning so far
- Starting with basic concepts of Ruby, we studied the internals of Rubinius such as object structures, how array objects are represented internally, types of objects and their memory layout.
- We then went on to read and understand the heap dump code and well as the Gauge Application code. We tried out different example codes to identify memory leaks.
- We learned how Garbage Collectors work, what is Mark and Sweep Garbage Collection and how that is different from Generational Garbage Collection.
- We also learned about how memory leaks occur. We now know that memory leaks are possible even when you have a garbage collector which does things to avoid leaks whenever possible.
- Learned how memory visualizers work. Worked with VisualVM, Jhat and Eclipse Memory Analyzer (MAT).
- And there is still so much to learn.. :)
Progress so far
We started with understanding the format of the Json file generated by the heap dump tool to be able to use it to generate visualization in d3.js.
The Json file had too much information for visualization, so we played around with the heap dump code to generate our own reduced data-sets. One major issue we faced was that the number of objects and their related information was too huge that it would either clutter up the visualization or make the browser slow in rendering it.
Attended Deccan Ruby Conference and gave a lightening talk.
With inputs from our mentor we started to work on the diff of two heap dumps. We are now working on displaying the instance view in a histogram based visualization representing what percentage of objects are consuming how much memory.
To track our progress, follow our blog.