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.

Outlook

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.

Infos

  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: ftp://ftp.linux-magazine.com/pub/listings/linux-magazine.com/235

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 mailto:mschilli@perlmeister.com he will gladly answer any questions.

Buy this article as PDF

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

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
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.

  • At a Glance

    Using extensions in Go and Ruby, Mike Schilli adapts the WTF terminal dashboard tool to meet his personal needs.

  • 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.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News