Why we made INFERNOde



As a software developer, it can be difficult to quickly identify hot spots in your codebase that are the cause of performance bottlenecking. Flamegraphs provide a unique solution to this problem by taking tens of thousands of lines of data from stack traces and turning it into a easily understandable visual that lets you quickly identify areas of your application that need improving.

However flamegraphs alone dont provide the complete solution. Making a flamegraph requires a CPU profile from an application which can be complicated and time-consuming, especially if you've never done it before. That means that making and using flamegraphs isn't necessarily accessible for every developer if they lack the skills or the time.

This is where INFERNOde comes in. We take the difficult task of performance optimization, and make it accessible to developers of any skill level, without requiring any in-depth knowledge of Linux sub-systems, Dtrace, Node child processes, or Node event loop ticks.

With INFERNOde, all you have you to do is tell it where the Node.js application is you want to test, and watch the magic happen. INFERNOde gives you access to the full power of flamegraphs, without any need to know how they are made.



How we made INFERNOde



We want to give credit where credit is due. INFERNOde would not be possible without the amazing work of Brendan Gregg to build off of. He is the creator of flamegraphs, and part of the main inspiration for this project. If you haven't already visited his github repo on flamegraphs, check it out!

We started with some of the flamegraph work from Brendan Gregg, and built an application around it that can create flamegraphs, icicle charts, and differential flamegraphs, all using linux perf captures and dtrace. We accomplished this by using typescript to build an intuitive UI with React and Redux Toolkit, then building out the server-side logic with Node and Express. Then we connected it to a SQLite embedded database to ensure that only you have access to the content of your stack traces and application software.