Skip to content

NewIn20

Bernd Hufmann edited this page Feb 15, 2024 · 2 revisions

NewIn20

Added Extension points

In this release 2 new extension points have been added:

  • org.eclipse.tracecompass.tmf.core.analysis.ondemand

This extension point is used to provide on-demand analyses. Unlike regular analyses, the on-demand ones are only executed when the user specifies it.

  • org.eclipse.tracecompass.tmf.ui.symbolProvider

This extension point can be used to transform from symbol addresses that might be found inside a TmfTrace into human readable texts, for example function names (e.g. used for Call Stack views)

Integration with LTTng-Analyses

The LTTng-Analyses project provides analysis script that can run on LTTng kernel traces to provide various metrics and statistics. If the LTTng-Analyses script are installed on the system (and accessible on the PATH), it is now possible to execute them directly from Trace Compass.

Project View additions

A new External Analyses tree item under the trace in the Project View will list the available analyses:

Image:Lttng-analyses-1-project-view.png

Running an analysis

Double-clicking, or right-clicking and choosing Run Analysis will bring up a dialog showing the command that is about to be executed. If a time range is selected in any of the time-aware views, the analysis will run only on this time range. If there is no time range selection, it will run on the whole trace.

Image:Lttng-analyses-2-config-dialog.png

The analysis execution dialog. We see in the background the selected time range, and the corresponding --begin and --end parameters passed to the script.

Result reports

Upon completion, a report containing the results will be opened, and placed under the Reports sub-tree item in the Project View. From there they can be re-opened or deleted. Each subsequent run of an analysis generates a new report.

Image:Lttng-analyses-3-reports.png

One report can contain one or more result tables, representing the output of the analysis.

Creating custom charts

The result tables can carry a lot of information, it is often more meaningful to display this information into charts. The view menu has options to create such charts:

Image:Lttng-analyses-4-create-chart.png

This action will bring up the chart configuration dialog, where the user can decide which columns should be used for the X and Y axis of each series:

Image:Lttng-analyses-5-chart-config-dialog.png

This will insert the corresponding chart next to the table in the view. The indicated button can be used to hide the result table, to give more space to the chart itself.

Image:Lttng-analyses-6-chart-shown.png

Bar charts can be created the same way:

Image:Lttng-analyses-7-bar-chart.png

Chart of the "Scheduling Latency Frequency Distribution" analysis. We can see some scheduling latencies on the right took much more time than the rest of them.

Importing custom analyses

The LTTng-Analyses mentioned above communicate with Trace Compass using the documented LAMI protocol. Any script implementing this protocol can be imported by the user and launched the same way.

Right-clicking on the External Analysis tree element brings up the option to import a new external analysis:

Image:External-analyses-1-add.png

Clicking this option will open the script configuration dialog, where the user has to give a name and the command-line to the script:

Image:External-analyses-2-dialog.png

If the script is found, and it correctly implements the LAMI protocol (i.e. responds to the --metadata command, among other things), it will be added and made available in the list of external analyses:

Image:External-analyses-3-item.png

From there, it can be executed like any other built-in script, and the same features (reports, charts, etc.) are available.

Data-driven pattern detection

The data-driven analysis and view of Trace Compass has been augmented to support data-driven pattern analysis. With this it possible to define a pattern matching algorithm and populate Timing Analysis views (similar to the views of chapter System call latency table). Other types of latency or timing analyses can be now defined using this approach. For more information about this feature refer to the Trace Compass User Guide.

Time graph view improvements

Gridlines in time graph views

Grid lines have been added to the time graph views such as the Control Flow view.

Image:InitialGridLineSupport.png

Persist settings for open traces

All views based on the time graph widgets (e.g. Control Flow view) now persist the current row selection (e.g. threads), filters and sort order (where applicable) for all open traces. Switching traces won't erase the settings.

Support for searching within time graph views

It is now possible to search in views based on the time graph views using CTRL+F keyboard short-cut. For example, with this users have the ability to search for a process, TID, PTID, etc. within the Control Flow view or a CPU, IRQ, etc. within the Resource view.

Image:FindInTimeGraphs.png

Horizontal scrolling using Shift+MouseWheel

It is possible to scroll horizontally within time graph views using Shift+MouseWheel on the horizontal scroll bar and within the time graph area.

Bookmarks and custom markers in time graph views

see chapter Bookmarks and custom markers

System call latency analysis

For analyzing of analyzing system call latencies in the Linux Kernel using LTTng kernel traces, the System Call Latency Analysis has been added. Various views will now display the results of the analysis in different ways.

System call latency table

The System Call Latency table lists all latencies occurred per system call type occurred within the currently open trace.

Image:SysCallLatencyAnalysis.png

System call latency scatter graph

The System Call Latency vs Time view visualizes system call latencies in the Linux Kernel over time.

Image:SyscallLatencyScatterChart.png

System call latency statistics

The System Call Latency Statistics view shows statistics about system call latencies. I lists the minimum, maximum and average latency as well as the standard deviation for a given system call type.

Image:SystemCallStatistics.png

System call latency density

The System Call Density view shows the distribution of the latencies for the current selected time window of the traces. Right-click with the mouse will open a context sensitive menu with 2 menu items for navigation to the minimum or maximum duration.

Image:SystemCallDensity.png

Critical flow view

A critical flow analysis and view has been added to show dependency chains for a given process. Process priority information is part of the state tooltip. This makes it possible to detect if a higher priority process was block by a lower priority process.

Image:CriticalPathView.png

Virtual CPU view

To better understand what is happening in such a virtual environment, it is necessary to trace all the machines involved, guests and hosts, and correlate this information in an experiment that will display a complete view of the virtualized environment. The Virtual CPU view has been added for that.

In order to be able to correlate data from the guests and hosts traces, each hypervisor supported by Trace Compass requires some specific events, that are sometimes not available in the default installation of the tracer. For QEMU/KVM special LTTng kernel modules exist which need to be installed on the traced system. For more information, please follow the instructions in the Trace Compass user guide.

Image:VirtualCPUView.png

Bookmarks and custom markers

Support for user bookmarks in time graph views

It is now possible to create bookmarks in time graph view for a single or time range selection. This will allow users to annotate their traces and easily navigate to region of interests. The bookmarks are shown in the newly added marker axis on the bottom of the time graph views. It is possible to minimize the marker axis as well as to hide marker categories.

Image:UserDefinedMarkers.png

Lost event markers in time graph views

Time graph views such as Control Flow or Resources view now highlight the durations where lost lost events occurred. .

Image:LostEventMarkers.png

Navigation for trace markers in time graph Views

It is possible to navigate from one marker forward and backwards in time graph views as well as it's possible to configure which marker type to include for the navigation. It is also possible to hide markers of a given type from the view menu.

Image:NavigationOfMarkers.png

API for trace specific markers

A new API is provided to define programmatically trace specific markers. This can be used, for example, to visualize time periods in the time graph views.

Resources view improvements

Display of soft IRQ names in the Resources view

The Resources view now displays the soft IRQ names together with the Soft IRQ numbers.

Image:ResourcesViewSoftIRQNames.png

Execution context and state aggregation

The Resources view now shows the execution contexts and adds the CPU states under the IRQ and SoftIRQ entries.

Image:RVExecutionContext.png

Following a single CPU across views

It is now possible to follow a single CPU from the Resources view using the context-sensitive menu. The CPU Usage view is the first view that uses this information to filter the CPU Usage per CPU.

Image:FilteredCPUUsageView.png

Control Flow view Improvements

Support for sorting in Control Flow view

It is possible to sort the columns of the tree by clicking on the column header. Subsequent clicking will change the sort order. The hierarchy, i.e. the parent-child relationship is kept. When opening a trace for the first time, the processes are sorted by birth time. The sort order and column will be preserved when switching between open traces. Note that when opening an experiment the processes will be sorted within each trace.

Image:ControlFlowViewSorting.png

Following single thread across views

It is now possible to follow a single thread from the Control Flow view using the context-sensitive menu. The Critical Path view is the first view that uses this information to trigger its analysis for the selected thread.

Image:CFVFollowThread.png

Grouping threads under a trace parent

The threads are no grouped under a trace tree node. The trace column has been removed. Image:CFV_GroupByTrace.png

Selecting flat or hierarchical thread presentation

It is now possible to switch between flat or hierarchical thread presentation per trace. For hierarchical presentation the threads are grouped under the parent thread. For the flat presentation no grouping is done.

Image:CFV_FlatHierarchical.png

Support of vertical zooming in time graph views

It is now possible to zoom vertically in all time graph views, for example Control Flow view or Resources view, using the key combination Ctrl+'+' or Ctrl+'-' or using the mouse with Shift+Ctrl+mouse wheel. The key combination Ctrl+'0' resets the vertical zoom to the default.

CPU Usage view improvements

Per CPU filtering in CPU Usage view

It is now possible to visualize the CPU usage per CPU in the view. The filtering can be triggered by using the Follow CPU menu item of context sensitive menu of the Resources view.

Image:FollowCPUAction.png

Kernel memory usage analysis

The Linux Kernel memory analysis and view have been added using LTTng Kernel traces. The Kernel Memory Usage view displays the relative Kernel memory usage over time.

Image:KernelMemoryUsage.png

Linux Input/Output analysis and views

The Linux Kernel input/output analysis have been added using LTTng Kernel traces.

I/O Activity view

The I/O Activity view shows the disk I/O activity (throughput) over time.

Image:io-view.png

Manage XML analysis files

A #dialog box has been added to manage XML analyses. This allows users to import, export and delete XML analysis files.

Image:ManageXMLAnalysis.png

Display of analysis properties

The Properties view now displays analysis properties when selecting an analysis entry in the Project explorer.

Image:AnalysisProperties.png

Importing traces as experiment

It is now possible to import traces and create an experiment with all imported traces using the Standard Import wizard.

Image:ImportAsExperiment.png

Importing LTTng traces as experiment from the Control view

It is now possible to import traces and create an experiment with all imported traces from the LTTng Control view. Image:LTTng2ImportExperimentDialog.png

Events Table filtering UI improvement

It is now possible to create a filter from the search string using the CTRL+ENTER key combination. A new collapsible header will be shown for all active filters. Multiple cumulative filters can be added at the same time.

Image:TraceEditor-NewFilterUI.png

Add support for unit of seconds in TmfTimestampFormat

The T pattern can be augmented with a suffix to indicate the unit of seconds to be used by the format. The following patterns are supported: T (sec), Td (deci), Tc (centi), Tm (milli), Tu (micro), Tn (nano). Amongst other places it is useful when defining custom parsers that need a unit of seconds.

Symbol provider for Call stack view

An extension point has been created to add a symbol provider for the Call Stack view. With this Trace Compass extensions can provide their own symbol mapping implementation. For traces taken with LTTng-UST 2.8 or later, the Callstack View will show the function names automatically, since it will make use of the debug information statedump events (which are enabled when using enable-event -u -a).

Per CPU thread 0

The Control Flow view have been updated to model thread ID 0 per CPU.

Speed-up import of large trace packeges

Importing traces have been optimized to speed-up the time it takes to import many log files.

Improve analysis requirement implementations

  • Cleaned-up of analyis requirement API
  • Added API to support requirements on event types and event fields. Using event field requirements it possible to define analysis requirements on LTTng event contexts.
  • Updated LTTng UST Call Stack and Kernel CPU Usage analysis requirement implementation

Pie charts in Statistics view

Pie Charts have been added to the Statistics view.

Image:StatisticsWithPieCharts.png

Support for LTTng 2.8+ Debug Info

Traces taken with LTTng-UST 2.8 and above now supply enough information to link every event to its source code location, provided that the ip and vpid contexts are present, and that the original binaries with debug information are available.

Image:Trace-with-debug-info.png A trace event originating from a shared library

Only the Binary Location information is shown if the binaries are not available on the system.

LTTng Live trace reading support disabled

It was decided to disable the LTTng Live trace support because of the shortcomings documented in bug 486728. We look forward to addressing the shortcomings in the future releases in order to re-enable the feature.

Bugs fixed in this release

See Bugzilla report Bugs Fixed in Trace Compass 2.0

Bugs fixed in the 2.0.1 release

See Bugzilla report Bugs Fixed in Trace Compass 2.0.1

Clone this wiki locally