Emutex Protime that helps engineers carefully assess the performance of critical execution paths of software.
Engineering high performance real-time applications requires that engineers carefully assess the performance of critical execution paths of software using performance profilers. In our experience there are many excellent profilers on the market, some free, some expensive. However, we find that many of these are overly complicated if simple CPU cycle measurements is all that is required.
Emutex Protime is a simple code profiling tool developed by Emutex that enables software engineers to accurately measure the CPU cycles consumed by code. The tool provides a library of code profiling functions that can be invoked manually at selected points in target code or hooked into target code using the instrumentation capability of good compilers, e.g. GNU Compiler Collection (GCC).
Protime's profiling functions are built around the use of the x86 opcode RDTSC (Read Time Stamp Counter) to measure CPU cycles consumed by instrumented blocks of code or individual functions as required. Protime records a number of RDTSC samples and reports the median number of cycles per measured block or function. This reduces outliers caused by external effects including cache misses, interrupts, context switches, etc. The result is an accurate representation of the typical number of CPU cycles consumed by a particular code block.
Protime produces simple text based reports showing CPU cycles (and hence time) consumed by code blocks, functions and function trees. The tool accounts for the effects of task switching on single core and across multiple cores. It tracks nested functions and excludes time spent in children when reporting function or block cycle counts. The Protime library can be included in both Linux kernel and user builds. In user mode, Protime reports results to a file and in kernel mode the results are available via the /proc file system.