All-in-one performance analysis with standard Linux tools

In One Fell Swoop

All three listings can be compiled in one go with the commands from Listing 5. The second call creates an executable greggalizer that runs independently of any shared libraries. So it can be easily copied to related architectures to do its job there without any problems.

Listing 5

Compiling the Listings

$ go mod init greggalizer
$ go build greggalizer.go runit.go pane-splitter.go

When this is done, the call to greggalizer at the command line, as shown in Figure 1, hijacks the terminal, splits it into vertically stacked boxes, and prints the executed commands with parameters and the text output in them. The performance analysis can begin.


One way of potentially improving the script presented here would be to parallelize running of the commands, so that the user does not have to wait a few seconds in front of a blank screen until it fills up with results. Instead, the program could first draw the UI, launch the external processes simultaneously via Go routines and continuously keep filling the text widgets with new output via channels, as soon as it becomes available. The result would be a tool like top that regularly refreshes its widgets.


  1. Gregg, Brendan. BPF Performance Tools. Addison-Wesley, 2019
  2. "Programming Snapshot – bpftrace" by Mike Schilli, Linux Magazine, issue 230, January 2020, pg.56
  3. Listings for this article:

The Author

Mike Schilli works as a software engineer in the San Francisco Bay area, California. Each month in his column, which has been running since 1997, he researches practical applications of various programming languages. If you email him at he will gladly answer any questions.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Monitoring Station

    With a monitoring system implemented in Go, Mike Schilli displays the Docker containers that have been launched and closed on his system.

  • 4Pane 2.0

    4Pane provides additional confidence in file management in the form of a clever undo function. Advanced users can install supplemental scripts in an instant.

  • Ruby and Glade

    Application development shouldn’t be a chore. We’ll show you how to simplify the development process with the Ruby programming language and the Glade interface design utility.

  • SuperKaramba Workshop

    If you can’t find the SuperKaramba theme you’re looking for, you can always build your own.

  • Perl: PerlPanel

    One panel has a neat collection of applets and another has spectacular looks – but a combination of the two is rare. Now help draws nigh for the desktop: PerlPanel is extensible with do-it-yourself widgets.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95