In this posting I summarize top-down performance counter analysis to evaluate workloads and show how this can be measured on Haswell using likwid-perfctr and perf. In part 2 to follow, I’ll describe how top down metrics have been added to wspy.
Continue reading →
geekbench – a quick look
Geekbench is a system benchmark that I see frequently in comparing Android devices such as tablets or mobile phones. The benchmark is also available for PC processors running Windows and Linux. Geekbench is developed and sold by Primate Labs.
I was curious about the Geekbench workload and whether it is interesting enough to buy a copy. Fortunately, there is an “tryout” version that I can use for that exercise. A comparison of this edition and the normal and “pro” versions is here. In this exercise, I downloaded the Geekbench tryout version and ran it under wspy to see what I could learn.
Continue reading →
Three basic metrics to assess a workload
This article summarizes three overall metrics to assess performance of a workload running on a microprocessor. These metrics provide an overall picture of what determines the performance and provide clues on where to dig for a deeper understanding. Following the discussion of the metrics, I provide examples using multiple workloads and describe how these metrics can be collected.
Continue reading →
wspy – a workload spy
wspy is both a code base and a tool for performance analysis.
As a code base, I modify wspy to run particular experiments and measurements. This lets me experiment trying particular techniques and interfaces to create a quick and dirty tool for a particular analysis. Occasionally I’ll find a situation it isn’t quite robust e.g. run out of file descriptors. As that happens or as I need new experiments I’m changing and updating the code.
The code is hosted at github.com under an MIT license, though I am the only contributor. However, using github makes it easy to pull the code onto multiple (internet connected) systems and also reuse the experimental code if it proves useful.
As a tool, wspy has three main types of data collection.
- A periodic sampling of overall system state such as CPU usage or disk information with hooks to add future items like network usage or memory..
- A monitoring of the processes in a workload to create a “process tree” for both analysis and output.
- A sampling of hardware performance counters. Initially focused on metrics such as IPC, but generic enough to measure most any event.
These are described in more detail below along with some examples.
Continue reading →
wspy – added on_cpu and on_core metrics
wspy is now enhanced to provide two new metrics, for a particular process tree:
- on_cpu – what percentage of the total time are all the cores scheduled to run in either user or system time?
- on_core – what percentage of the total time would a single core be busy?
trace-cmd and kernelshark
Found a new tool for creating and browsing kernel ftrace events.
Continue reading →
wspy – followup: support for ptrace as well as ftrace
As a followup to my post about ptrace vs ftrace I have added a basic ptrace support to wspy.
Continue reading →
wspy – instrumentation: ftrace and ptrace
While the names sound different, ptrace and ftrace are two rather different methods of implementing process instrumentation.
Continue reading →
wspy – added –set-counters
I have enhanced wspy to add –set-counters option.
Continue reading →
wspy – adding support for –show-counters
Added a new option to wspy to get the performance counters from the linux kernel. This builds on my previous learnings to inventory the system and build counter information provided by the system including event numbers, umasks and other fields.
Continue reading →