mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-31 02:25:35 +03: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.
 |