austin1
Frame stack sampler for cpython
Usage
austin [OPTION ...]
command
[ARG ...]
Overview
Austin is a frame stack sampler for CPython that is used to extract profiling data out of a running Python process (and all its children, if required) that requires no instrumentation and has practically no impact on the tracee.
-
-b, --binary -
Emit data in the MOJO binary format. See https://github.com/P403n1x87/austin/wiki/The-MOJO-file-format for more details.
-
-C, --children -
Attach to child processes.
-
-f, --full -
Produce the full set of metrics (time +mem
-mem).
-
-g, --gc -
Sample the garbage collector state.
-
-h, --heap=n_mb -
Maximum heap size to allocate to increase sampling accuracy, in MB (default is 0).
-
-i, --interval=n_us -
Sampling interval in microseconds (default is 100). Accepted units: s, ms, us.
-
-m, --memory -
Profile memory usage.
-
-o, --output=FILE -
Specify an output file for the collected samples.
-
-p, --pid=PID -
Attach to the process with the given PID.
-
-P, --pipe -
Pipe mode. Use when piping Austin output.
-
-s, --sleepless -
Suppress idle samples to estimate CPU time.
-
-t, --timeout=n_ms -
Start up wait time in milliseconds (default is 100). Accepted units: s, ms.
-
-w, --where=PID -
Dump the stacks of all the threads within the process with the given PID.
-
-x, --exposure=n_sec -
Sample for n_sec seconds only.
-
-?, --help -
Give this help list
-
--usage -
Give a short usage message
-
-V, --version -
Print program version
Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options.
Examples
Profile wall time of a Python script
$ austin python3 myscript.py
Profile CPU time of an executable Python script
$ austin -s ./myscript.py
Profile a Python application
$ austin uwsgi --http :9090 --wsgi-file foobar.py
Profile child processes
$ austin -C uwsgi --http :9090 --wsgi-file foobar.py
Attach to a running Python process
# austin -p <pid>
Attach to a process and its children
# austin -Cp <pid>
Where is a Python process at?
# austin -w <pid>
Set the sampling interval
# austin -i 10ms -p <pid>
Save collected on-CPU samples to file
$ austin -so /path/to/file.austin ./myscript.py
Sample for 5 seconds only
# austin -x 5 -p <pid>
Releases
3 releases since Debian 11 (Bullseye); the text changed 1 time.
--binary since Debian 13 (Trixie);
--exposure since Debian 13 (Trixie);
--gc since Debian 13 (Trixie);
--heap since Debian 13 (Trixie);
--pipe since Debian 13 (Trixie);
--where since Debian 13 (Trixie);
-P since Debian 13 (Trixie);
-b since Debian 13 (Trixie);
-g since Debian 13 (Trixie);
-h since Debian 13 (Trixie);
-w since Debian 13 (Trixie);
-x since Debian 13 (Trixie).
--alt-format until Debian 12 (Bookworm);
--exclude-empty until Debian 12 (Bookworm);
-a until Debian 12 (Bookworm);
-e until Debian 12 (Bookworm).