Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/felixge/pprof-breakdown
https://github.com/felixge/pprof-breakdown
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/felixge/pprof-breakdown
- Owner: felixge
- Created: 2022-10-21T06:27:04.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-21T13:09:32.000Z (about 2 years ago)
- Last Synced: 2024-10-11T15:18:49.060Z (2 months ago)
- Language: Go
- Size: 19 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# pprof-breakdown
This repo contains the code and data used to analyze the efficiency of the pprof breakdown proposal.
## Methodology
This project attempts to quantify the efficiency of a proposed change to the pprof format that adds a new `breakdown` field to the `Sample` message in order to store timestamps, values and labels for individual events.
The data is generated by executing `make pprof-inputs pprof-outputs` which causes the execution of a few toy workloads that generate pprof CPU profiles. The CPU profiles are generated using a [fork of Go](https://github.com/felixge/go/pull/3) that implements the breakdown proposal.
After the initial files are generated, a few variants of them are generated. The `label` variants convert the breakdown inputs to using the existing label mechanism in pprof. Additional variants with and without compression are generated.
The results are best viewed in [this spreadsheet](https://docs.google.com/spreadsheets/d/158gORmju85Z1rwGtTEL71yrkmLHQw4KGPMYKrHfm8qU/edit#gid=1729544497).
For the individual workloads, see [./testdata/workloads/workloads.go](./testdata/workloads/workloads.go) and [./testdata/workloads/main.go](./testdata/workloads/main.go).
Alternatively you can take a look at the files in `testdata/pprof-inputs` and `testdata/pprof-outputs`, perhaps using protoc:
```
cat testdata/pprof-outputs/printf-10s.none.breakdown.pprof | protoc --decode perftools.profiles.Profile /path/to/profile.proto
```## Reproduce Results
If you're interested in reproducing the results, please:
1. Build this [fork of Go](https://github.com/felixge/go/pull/3) which adds the pprof breakdown feature to the CPU profiler
2. Run the code below:
```
PATH="/path/to/github.com/felixge/go/bin:$PATH" make pprof-inputs pprof-outputs
```