---
name: "traceshark"
section: "1"
platform: "linux"
package: "traceshark"
version: "0.9.14~beta-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/traceshark"
---

# traceshark(1)

A viewer for traces from trace-cmd and perf

## NAME

traceshark - A viewer for traces from trace-cmd and perf

## SYNOPSIS

**traceshark \[** *OPTION* **\]... \[** *filename* **\]**

## DESCRIPTION

**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.

## OPTIONS

**traceshark** supports the options that are supported by all Qt applications. For details, check the Qt documentation, especially the documentations of the QApplication class.

## EXAMPLES

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&
```

## SEE ALSO

-

  More detailed information about how to use **traceshark**:

  **https://github.com/cunctator/traceshark**

-

  Documentation of the QApplication class and the command line options:

  **https://doc.qt.io/qt-5/qapplication.html**

-

  Sample traces can be found here:

  **https://github.com/cunctator/traceshark-resources**

## BUGS

**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.

## AUTHOR

**traceshark** was created by Viktor Rosendahl \<viktor.rosendahl@iki.fi\>.

## COPYRIGHT

Copyright (c) 2020 Viktor Rosendahl

-

  The license of this man page is GPLv2+:

  **http://www.gnu.org/licenses/old-licenses/gpl-2.0.html**
