mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-21 12:16:54 +02:00
70 lines
2.0 KiB
Markdown
70 lines
2.0 KiB
Markdown
# Profiling Lazygit
|
|
|
|
If you want to investigate what's contributing to CPU or memory usage, start
|
|
lazygit with the `-profile` command line flag. This tells it to start an
|
|
integrated web server that listens for profiling requests.
|
|
|
|
## Save profile data
|
|
|
|
### CPU
|
|
|
|
While lazygit is running with the `-profile` flag, perform a CPU profile and
|
|
save it to a file by running this command in another terminal window:
|
|
|
|
```sh
|
|
curl -o cpu.out http://127.0.0.1:6060/debug/pprof/profile
|
|
```
|
|
|
|
By default, it profiles for 30 seconds. To change the duration, use
|
|
|
|
```sh
|
|
curl -o cpu.out 'http://127.0.0.1:6060/debug/pprof/profile?seconds=60'
|
|
```
|
|
|
|
### Memory
|
|
|
|
To save a heap profile (containing information about all memory allocated so
|
|
far since startup), use
|
|
|
|
```sh
|
|
curl -o mem.out http://127.0.0.1:6060/debug/pprof/heap
|
|
```
|
|
|
|
Sometimes it can be useful to get a delta log, i.e. to see how memory usage
|
|
developed from one point in time to another. For that, use
|
|
|
|
```sh
|
|
curl -o mem.out 'http://127.0.0.1:6060/debug/pprof/heap?seconds=20'
|
|
```
|
|
|
|
This will log the memory usage difference between now and 20 seconds later, so
|
|
it gives you 20 seconds to perform the action in lazygit that you are interested
|
|
in measuring.
|
|
|
|
## View profile data
|
|
|
|
To display the profile data, you can either use speedscope.app, or the pprof
|
|
tool that comes with go. I prefer the former because it has a nicer UI and is a
|
|
little more powerful; however, I have seen cases where it wasn't able to load a
|
|
profile for some reason, in which case it's good to have the pprof tool as a
|
|
fallback.
|
|
|
|
### Speedscope.app
|
|
|
|
Go to https://www.speedscope.app/ in your browser, and drag the saved profile
|
|
onto the browser window. Refer to [the
|
|
documentation](https://github.com/jlfwong/speedscope?tab=readme-ov-file#usage)
|
|
for how to navigate the data.
|
|
|
|
### Pprof tool
|
|
|
|
To view a profile that you saved as `cpu.out`, use
|
|
|
|
```sh
|
|
go tool pprof -http=:8080 cpu.out
|
|
```
|
|
|
|
By default this shows the graph view, which I don't find very useful myself.
|
|
Choose "Flame Graph" from the View menu to show a much more useful
|
|
representation of the data.
|