TRACESHARK(1) | General Commands Manual | TRACESHARK(1) |
traceshark - A viewer for traces from trace-cmd and perf
traceshark [ OPTION ]... [ filename ]
traceshark is a graphical viewer for the Ftrace and Perf events that can be captured by the Linux kernel. It visualizes the following events:
cpu_frequency
cpu_idle
sched_migrate_task
sched_process_exit
sched_process_fork
sched_switch
sched_wakeup
sched_wakeup_new
sched_waking
The sched_waking events are not really visualized but there is a button to find the sched_waking event that has instigated a particular sched_wakeup event.
traceshark supports the options that are supported by all Qt applications. For details, check the Qt documentation, especially the documentations of the QApplication class.
Below is an example of how you can use perf to capture a trace that can be viewed with traceshark:
$ sudo mount -t tmpfs tmpfs /mnt/tmp $ cd /mnt/tmp $ sudo perf record -e power:cpu_frequency -e power:cpu_idle -e sched:sched_kthread_stop -e sched:sched_kthread_stop_ret -e sched:sched_migrate_task -e sched:sched_move_numa -e sched:sched_pi_setprio -e sched:sched_process_exec -e sched:sched_process_exit -e sched:sched_process_fork -e sched:sched_process_free -e sched:sched_process_wait -e sched:sched_stick_numa -e sched:sched_swap_numa -e sched:sched_switch -e sched:sched_wait_task -e sched:sched_wake_idle_without_ipi -e sched:sched_wakeup -e sched:sched_wakeup_new -e sched:sched_waking -e cpu-cycles -e cpu-cycles --call-graph=dwarf,20480 -m 512M -r 99 -a <Control-C> $ sudo perf script -f > tracefile.asc $ traceshark tracefile.asc&
It is also possible to use trace-cmd to capture a trace:
$ sudo mount -t tmpfs tmpfs /mnt/tmp $ cd /mnt/tmp $ sudo trace-cmd record -e cpu_frequency -e cpu_idle -e sched_kthread_stop -e sched_kthread_stop_ret -e sched_migrate_task -e sched_move_numa -e sched_pi_setprio -e sched_process_exec -e sched_process_exit -e sched_process_fork -e sched_process_free -e sched_process_wait -e sched_stick_numa -e sched_swap_numa -e sched_switch -e sched_wait_task -e sched_wake_idle_without_ipi -e sched_wakeup -e sched_wakeup_new -e sched_waking -b 32768 -r 99 <Control-C> $ trace-cmd report trace.dat > tracefile.asc $ traceshark tracefile.asc&
traceshark uses the QCustomPlot library to display one graph for each task in the trace. For this reason the UI might become slow when displaying a large trace with many thousands of tasks, because QCustomPLot has not been designed to display such a large number of graphs. This situation can be improved by compiling traceshark from source code and make sure that you use its own internal QCustomPlot, which contains some hacks to improve the performance with a large number of graphs.
traceshark was created by Viktor Rosendahl <viktor.rosendahl@iki.fi>.
Copyright (c) 2020 Viktor Rosendahl
23 February 2020 | v0.9.9-beta |