# IOx — Profiling
IOx includes an embedded `pprof` exporter compatible with the [go pprof](https://golang.org/pkg/net/http/pprof/) tool.
To use it, aim your favorite tool at your IOx host at the HTTP `/debug/pprof/profile` endpoint.
# Use the Go `pprof` tool:
Example
```shell
go tool pprof 'http://localhost:8080/debug/pprof/profile?seconds=5'
```
And you get output like:
```
Fetching profile over HTTP from http://localhost:8080/debug/pprof/profile?seconds=5
Saved profile in /Users/mkm/pprof/pprof.cpu.006.pb.gz
Type: cpu
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top
Showing nodes accounting for 93, 100% of 93 total
Showing top 10 nodes out of 185
flat flat% sum% cum cum%
93 100% 100% 93 100% backtrace::backtrace::libunwind::trace
0 0% 100% 1 1.08% <&str as nom::traits::InputTakeAtPosition>::split_at_position1_complete
0 0% 100% 1 1.08% <(FnA,FnB) as nom::sequence::Tuple>::parse
0 0% 100% 1 1.08% <(FnA,FnB,FnC) as nom::sequence::Tuple>::parse
0 0% 100% 5 5.38% ::try_poll
0 0% 100% 1 1.08% ::to_vec
0 0% 100% 1 1.08% ::allocate
0 0% 100% 1 1.08% as core::clone::Clone>::clone
0 0% 100% 3 3.23% as alloc::vec::spec_extend::SpecExtend>::spec_extend
0 0% 100% 1 1.08% as core::iter::traits::collect::Extend>::extend
```
# Interactive visualizations
The `go tool pprof` command can also open an interactive visualization in a web browser page,
that allows you to render a call graph, or a flamegraph or other visualizations, and also search for symbols etc. See:
```shell
go tool pprof -http=localhost:6060 'http://localhost:8080/debug/pprof/profile?seconds=30'
```
# Use the built in flame graph renderer
You may not always have the `go` toolchain on your machine.
IOx also knows how to render a flamegraph SVG directly if opened directly in the browser:
For example, if you aim your browser at an IOx server with a URL such as http://localhost:8080/debug/pprof/profile?seconds=5
You will see a beautiful flame graph such as
![Flame Graph](images/flame_graph.png)