Microsoft informed the community that a set of open-source tools called Microsoft-Performance-Tools for Linux-Android available to measure system performance. Here are the details.
Microsoft Performance Tools for Linux
Microsoft Performance Tools for Linux and Android is a set of programs that helps to analyze system performance by parsing various log and trace files. This set of tools used by the internal teams at Microsoft to measure Windows performance for past 15+ years. Now it is made available as open-source for Linux and Android.
What it does
With these set of tools, you can analyze what the operating system or application code is doing. This is super handy for debugging OS level problems of critical applications. The set of tools makes an ecosystem of performance analyzer which you can use to understand several OS inner workings and get a graphical representation.
As per the announcement, this utility can monitor and gives you insight of the following items (not a full list) –
- System calls
- Disk Activity and IO
- Context Switches for processes
- File events
- Threads by Process
- CPU stress level by time
Think about a scenario, where you are debugging a crash of a complex game in Linux. Or, trying to figure out a bug in the most complex program – such as Firefox or Update Manager or File manager. You can easily configure this tool to capture several logs and easily identify the spikes in CPU or memory or processes at the thread level.
How it works in Linux
The entire tool set is cross-platform. It is based on open-source .NET core and depends on version 3.0+. The open-source .NET core can easily be installed in Ubuntu or Fedora. The tool make use of the following open-source performance monitoring programs which need to be configured with this tool developed by Microsoft.
- LTTng (Linux Kernel CPU scheduling, Processes, Threads, Block IO/Disk, Syscalls, File events, etc)
- perf Linux CPU Sampling(cpu-clock)
- Perfetto Android & Chromium (CPU Scheduling, CPU Sampling, CPU Frequency, FTrace, Android Logs, Generic Events / Default Tracks, GPU Counters)
- Cloud-Init (by Canonical)
- WaLinuxAgent (Microsoft Azure Linux Agent)
This utility support parsing and logging from above utilities and requires separate configurations.
And it is programmable. That means, once configured, you can write your own small program [in shell script or Python or any programming language] to consume the utility.
If you want to try it out, refer to the official guides below.
With all the Microsoft hate aside and their direction towards Linux in general, this is really a neat set of utility that can help the Linux community. We will cover separate guides on how to set it up in Ubuntu and other Linux and measure Linux distribution performance, and see how it works. So, stay tuned.