Thursday, March 16, 2017

Improving io-stats translator

Hey all,

My Outreachy internship primarily involved tasks related to improving the io-stats translator of Gluster.

So what is a translator ?

I have shared a video in my last post regarding "Hacking Gluster FS" in which they explain it clearly. But to put in brief, The translators convert the requests from users into requests for storage. It is layered in such a way that the request passes through them. A translator can also modify requests on the way through.

The io-stats translator on which my tasks were related to is used to instrument the Gluster from within. The volume profile command provides an interface to get the per-brick I/O information for each File Operation (FOP) of a volume. The per brick information helps in identifying bottlenecks in the storage system.

To add a brief on my tasks,

1) As stated above, the profile command provides an interface to get the per-brick IO information for each file operation of a volume. So it is necessary that all file operation are listened for. To achieve this, my first task involved in finding the missing file operations and adding it to the io-stats translator.

The commit related to it can be found here.

2) While doing the above, my mentor suggested that doing the above using a code-generation method will help in reducing the code in Gluster code as many lines of code for each file operation looked similar and can be generated by means of a common template.

An initial step towards achieving this is to have all details related to every file operations together. In this attempt, we found a file operation in the name of "compound" is missing in the list. We attempted to add it. The related commit can be found here.

3)With the support to all the file operations added, our next step was to make the code generation framework work. The related work can be found here. We had few issues with it and the same can be found in the comments of the commit.

With this completed, my next tasks involve in making the Gluster profile command more useful. I shall share my learning and work related to it in my next blog post.