Lttngtop is a ncurses interface for reading and browsing traces recorded by the LTTng tracer and displaying various statistics. As of now, the cpu usage, performance counters and per process/file I/O bandwidth are displayed. This version currently only supports offline traces, but a live version is in alpha and will be available for testing soon.
Input trace path
LTTngTop requires that the pid, procname, tid and ppid context information are enabled during tracing.
The command --create-local-session does all the required setup for a local trace (that must be stopped and destroyed manually by the user). And the command --create-live-session does all the required setup for a live trace on localhost (it must also be stopped and destroyed manually by the user).
If you want the CPU activity view, you need the sched_switch event, if you want the I/O statistics, you need to enable the system call tracing, and if you want the performance counters, you need to enable them for the events you are interested in (or all of them). Note, there is a hardware limitation for the number of performance counter you can enable, check dmesg for information.
The following example creates a trace with all events enabled, the mandatory context informations and three performance counters. It assumes that you are running as root or with a user part of the tracing group and a lttng-sessiond launched as root.
lttng create lttngtop lttng enable-event -k lttng_statedump_start,lttng_statedump_end,lttng_statedump_process_state,lttng_statedump_file_descriptor,lttng_statedump_vm_map,lttng_statedump_network_interface,lttng_statedump_interrupt,sched_process_free,sched_switchsched_process_fork -s lttngtop lttng enable-event -k --syscall -a -s lttngtop lttng add-context -k -t pid -t procname -t tid -t ppid -t perf:cache-misses -t perf:major-faults -t perf:branch-load-misses -s lttngtop lttng start lttngtop sleep 10 lttng stop lttngtop lttng destroy lttngtop
In addition to offline traces, LTTngTop can read traces while they are being recorded. The official supported way of doing live streaming is using lttng-tools >=2.4 and following the documentation in live-reading-howto.txt of lttng-tools and README-LIVE of lttngtop. An other experimental way of doing live tracing is with mmap, but this requires some more work because is not officially supported and requires out-of-tree patches to lttng-tools and babeltrace.
To use the network live-reading, the user only needs to specify the relayd hostname or IP address with the option -r. For now, LTTngTop will only connect to the first live session established on the relay, but in a near future, the user will be able to choose which session to attach to.
The default mode after attaching to a session is to start reading the trace from this point in time. In order to read the trace from the beginning, the user can specify the -b option.
- 'F2': CPUTop
- Switch to the CPUTop view which displays the CPU usage of each process
- 'F3': PerfTop
- Switch to the PerfTop view which displays the performance counters (PMU) value of each process (if enabled during tracing)
- 'F4': IOTop
- Switch to the IOTop view which displays the I/O usage of each process (as of now read and writes on any file descriptor network or disk)
- 'Enter': Process details
- Display all relevant information for the process selected
- 'Space': Highlight
- Highlights the process under the blue line to make it easy to find it across all views or toggle view in preference panel
- 'q': Quit
- Exit the program
- 't': Threads
- Toggle threads display in CPUTop
- 'r': Preferences
- Display the preference menu for the current view, this menu helps select the column displayed (only in PerfTop view for now) and the column to sort, use 's' to sort and 'space' to toggle the view
- 's': Sort
- In preference view, sort on the currently selected line
- 'p': Pause/Resume
- Pause the display, hit again to resume the refresh (only works when the trace has not been fully displayed)
- 'Right arrow': Move forward in time
- Display the next second of data, can be hit several time to bypass the default 1 second refresh period to fast forward
- 'Left arrow': Move backward in time
- Display the previous second of data, automatically switch to pause if not already enabled
- 'Up arrow' / 'k': Move UP the cursor
- Move up the blue line to select processes
- 'Down arrow' / 'j': Move DOWN the cursor
- Move down the blue line to select processes
- '>': Sort the next column
- Update the sorting to the next column
- '<': Sort the previous column
Update the sorting to the previous column
The I/O history has some problems with the file names, and we are missing some system calls parsing to have the complete I/O accounting.
If you encounter any issues or usability problem, please report it on our mailing list <[email protected]> to help improve this project.
LTTngTop is distributed under the GPLv2 license. See the LICENSE file in the source tree for details.
Mailing list for support and development: <[email protected]>.
You can find us on IRC server irc.oftc.net (OFTC) in #lttng.
LTTngTop was originally written by Julien Desfossez, with contribution from Mathieu Bain for the I/O bandwidth view, and suggestions and ideas from the team working with the LTTng project. It is currently maintained by Julien Desfossez <[email protected]>