LIKWID Performance Tools
LIKWID stands for “Like I Knew What I’m Doing.” It is an easy to use yet powerful command line performance tool suite for the GNU/Linux operating system. While the focus of LIKWID is on x86 processors, some of the tools are portable and not limited to any specific architecture.
LIKWID tries to be as simple to install and use as possible, so we go without fancy GUIs and scary library dependencies. It includes the following tools (click on the links for documentation):
- likwid-topology : Display the thread and cache topology on multicore/multisocket computers
- likwid-perfctr : Count hardware performance events. It can be used as wrapper application, which does not require modification of the code to be analyzed, or with a marker API, which restricts the event counting to parts of the code.
- likwid-perfscope : Tool to perform live plotting of performance data using gnuplot.
- likwid-pin : Pin the threads of an application without changing the code. Works for OpenMP, C++11 threads, pthreads, etc., and essentially with any threading library that builds on pthreads.
- likwid-bench : A benchmarking framework that allows rapid prototyping of threaded assembly kernels and full control over problem sizes, data placement, affinity, etc.
- likwid-mpirun : A wrapper script for simple and flexible pinning of MPI and MPI/threaded hybrid applications. Comes with integrated likwid-perfctr support.
- likwid-powermeter : Access RAPL counters (for energy measurements) and query “Turbo Mode” steps on Intel processors. RAPL counters are also available in likwid-perfctr.
- likwid-memsweeper : Sweep out the file system buffer cache in ccNUMA domains and purge last level caches.
- likwid-setFrequencies : Set the clock frequency of CPU cores and (on Intel CPUs that support it) the Uncore.
- likwid-agent : Monitoring agent for LIKWID with multiple output backends.
- likwid-genTopoCfg : Config file writer that saves system topology to file for faster startup.
Accurate hardware event counting on modern processors is difficult because of lacking documentation and annoying bugs (e.g., miscounting). We try to support new architectures as soon as possible and validate event counts using well-understood benchmarks. LIKWID supports most current x86 microarchitectures, including the Intel Xeon Phi and AMD Zen. Please consult the Github pages for the latest information.
- T. Röhl, J. Eitzinger, G. Hager, and G. Wellein: LIKWID Monitoring Stack: A flexible framework enabling job specific performance monitoring for the masses. Accepted for the HPCMASPA 2017, the Workshop on Monitoring and Analysis for High Performance Computing Systems Plus Applications, held in conjunction with IEEE Cluster 2017, Honolulu, HI, September 5, 2017. Preprint: arXiv:1708.01476
- T. Röhl, J. Eitzinger, G. Hager, and G. Wellein: Validation of Hardware Events for Successful Performance Pattern Identification in High Performance Computing. In: A. Knüpfer et al. (eds.), Tools for High Performance Computing 2015, Springer International Publishing, ISBN 978-3-319-39589-0 (2016), 17-28. DOI: 10.1007/978-3-319-39589-0_2
- T. Röhl, J. Treibig, G. Hager, and G. Wellein: Overhead Analysis of Performance Counter Measurements. In: Proc. PSTI 2014, the Fifth International Workshop on Parallel Software Tools and Tool Infrastructures, Sept 11, 2014, Minneapolis, MN. DOI: 10.1109/ICPPW.2014.34
- J. Treibig, G. Hager, and G. Wellein: likwid-bench: An Extensible Microbenchmarking Platform for x86 Multicore Compute Nodes. In: H. Brunst et al. (eds.), Tools for High Performance Computing 2011. Springer, ISBN 978-3-642-31475-9, (2012) 27-36 . DOI: 978-3-642-31475-9.
- J. Treibig, G. Hager and G. Wellein: LIKWID: A lightweight performance-oriented tool suite for x86 multicore environments. Proceedings of PSTI2010, the First International Workshop on Parallel Software Tools and Tool Infrastructures, San Diego CA, September 13, 2010. DOI: 10.1109/ICPPW.2010.38, Preprint: arXiv:1004.4431