TABARNAC visualization

TABARNAC: Tools for Analyzing the Behavior of Applications Running on Numa ArChitectures provides several visualisations of memory traces and gives you hints to improve your applications' memory behavior.

For hints on NUMA optimization see General Advices

Note:

Topology

topo

Data structure usages

The following plot shows the structures sizes in pages (usually one page = 4096 bytes) this information can give a hint on the importance of the different data structures and on the possible kind of optimization.

Note:

plot of chunk ShowStructSize

The following visualization shows the number of accesses and the ratio Read/Write for every data structures. As the previous plot, it helps to understand the importance of each structure.

plot of chunk TotalRWPlot

The next table tells which structures are not read or written by which thread, this information is useful to determine if duplication is a possible solution.

## [1] Struct   Thread   Type     NbAccess
## <0 rows> (or 0-length row.names)

Access distribution

The following plots shows for each structure how much each thread access each pages.The horizontal ̀Avg lines indicate the average access per pages and the vertical the average access per thread.

plot of chunk Distribution plot of chunk Distribution plot of chunk Distribution

First Touch

By default, on recent operating systems, when an application runs on a NUMA machine, data are mapped according to the first touch policy aka near to the first thread which use it. The following plot show the repartition of the first touch over the structures. The first touch pattern should be similar to the distribution pattern of the previous plots. If the plot is a straight line, it means that one thread is initializing the whole structure which is generally a source of performance issues on NUMA machines, you should try to split the initialization such that each thread is responsible for a part or manually distribute the structure on the nodes.

plot of chunk firsttouch plot of chunk firsttouch plot of chunk firsttouch