Visualizing OLAP Requests on SAP HANA System with Concurrency Flame Graph using SAP HANA Dump Analyzer
In the previous blog, we introduced the SAP HANA dump analyzer and highlighted the “Auto Analyzer” feature. One of the key aspects of the SAP HANA dump analyzer is that it enables users to visualize call stacks using Flame Graphs which provide intuitive results. In this blog series, I’m going to present the essential features in the SAP HANA dump analyzer, starting with the “Concurrency Flame Graph” in this post. The Concurrency Flame Graph, a variation of the standard Flame Graph, is intended to be used to visualize OLAP (Online Analytical Processing) requests running on HANA systems.
After loading a HANA runtime dump into the SAP HANA dump analyzer, you can initiate HANA OLAP request analysis by generating a Concurrency Flame Graph via the “Expert mode” tab -> “Concurrency” section. In the dropdown box, you can select:
- Thread Concurrency as Flame Graph: the OLAP workload will be visualized in Concurrency Flame Graph.
- Thread Concurrency as Mixed Flame Graph: the OLAP workload will be visualized in Concurrency Flame Graph. The mixed concurrency flame graph provides both call stacks Flame Graph and Concurrency Flame Graph. They can be used interactively. E.g. By moving the cursor onto different thread boxes on the Concurrency Flame Graph., the call stack of the corresponding thread on the flame graph is highlighted.
Fig.1 SAP HANA dump analyzer
The following part uses a mixed concurrency flame graph in Fig.2 as the example to explain the details.
Fig.2 Mixed Concurrency Flame Graph
The graph on upper area in Fig.2 is the Concurrency Flame Graph. The graph at the bottom area is the Call Stacks Flame Graph.
In SAP HANA context, Job Workers are threads, which are responsible for processing parallelized OLAP load and internal activities like savepoints or garbage collection.
The Concurrency Flame Graph visualizes:
- One OLAP request is received by a SQL Executor thread. It spawns multiple Job Worker threads for execution on one connection, all threads for the single connection are visualized as one column.
- If there are many columns at the bottom level, it means there are many requests executed at the same time.
- If there are large columns (i.e. all boxes from one connection occupies a large area), it means the request is processed by several threads in parallel.
- The runtime of the thread is visualized in color, the darker shade of red colored box represents connection runs for longer period of time.
Take the highlighted column in black rectangle in Fig.2 as the example:
- The column stands for all threads executing query on connection 418069 when the dump was taken.
- The call hierarchy of the threads is shown from the lower box to the upper boxes. Each box stands for a HANA thread.
- By moving the cursor onto the thread box, the tooltip tells the highlighted connection 418069 is executing plan viz of a statement. The query at the time was executed by 24 threads in total. The query was running for 165632s already.
Fig.3 Tooltip for Connection 418069
The concurrency flame graph is used directly in the Auto Analyzer if OLAP workload analysis is required. After you learn the above steps on how to read the Concurrency Flame Graph in the Expert Mode, you would easily understand the OLAP workload analysis from the Auto Analyzer.