v0.20.0
This Parca Agent release includes three main additions:
- Improved support for short lived processes.
- Add support for unwinding mixed stacks (JIT/DWARF/frame-pointer).
- Various metadata stability improvements.
Apart from these dozens of parca Agent performance improvements landed.
Happy profiling!
— Parca Maintainers
Changelog
- Add Go package to interact with libasyncprofiler by @v-thakkar in #1512
- chore: Disable deprecated linters by @v-thakkar in #1601
- pkg/asyncprofiler: Refactor NewAsyncProfiler to use functional options by @v-thakkar in #1603
- Overhaul process info discovery by @kakkoyun in #1507
- local dev/testing: Add missing dependencies for local tilt test setup by @kakkoyun in #1610
- pkg/asyncprofiler: Fix options format in SetAction by @v-thakkar in #1609
- *: Fetch labels at the first encounter with a process by @kakkoyun in #1611
- chore(container): add commit timestamp to image tag by @maxbrunet in #1621
- cpu.go: Show error if there's an error loading the BPF code by @javierhonduco in #1620
- Upgrade libbpfgo to
80f41e18e690
by @javierhonduco in #1622 - Profile correctness tests by @javierhonduco in #1627
- tests: Move integration tests to their own dir by @javierhonduco in #1629
- chore: Remove exclude-rules for the arguments pkg by @v-thakkar in #1630
- *: Remove retry limit and fix race conditions around ObjectFile by @kakkoyun in #1623
- pkg/perf: Optimize perf map parsing by @brancz in #1650
- build(container): add metadata labels by @maxbrunet in #1656
- internal/pprof: Remove unused vendored pprof packages by @javierhonduco in #1652
- Do not normalize addresses from JIT'd code by @javierhonduco in #1651
- tests/integration: Improve assertions by @javierhonduco in #1660
- deploy/tilt(dev): Add and configure kube-prometheus for local dev cluster by @kakkoyun in #1661
- *: Fix metadata caching issues by @kakkoyun in #1653
- Bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible by @dependabot in #1636
- pkg/perf: Reduce allocs in ReadMap when parsing a large file by @marselester in #1669
- pkg/discovery: Handle multi-target discovery groups properly by @kakkoyun in #1682
- main: Add pprof config flags by @kakkoyun in #1683
- metadata/debuginfo: Add a flag to disable caching for metadata and debuginfo components by @kakkoyun in #1685
- pkg/cpu: Fix variable shadowing of error value by @Sylfrena in #1688
- *: Add inital tracing support using OTel (local testing using jaeger) by @kakkoyun in #1684
- *: Remove unbounded caches by @kakkoyun in #1672
- *: Add metrics, everywhere by @kakkoyun in #1634
- chore(local-observability): use release container image tags by @maxbrunet in #1700
- bpf: Add mixed-mode unwinding for JIT sections by @Sylfrena in #1670
- Use libbpf's cpu number helper by @javierhonduco in #1709
- objectfile: Fix concurrent read and premature close issues by @kakkoyun in #1689
- go.*/gprc: Upgrade grpc middlewares by @kakkoyun in #1715
- *: Add native histograms by @kakkoyun in #1717
- Enable native histograms for local promethei by @kakkoyun in #1718
- *: Separate obtaining raw data and pprof conversion by @brancz in #1716
- pkg/maps: Don't report not ELF errors by @brancz in #1724
- Disable RPC logging by default by @kakkoyun in #1725
- Use more conventional naming by @kakkoyun in #1728
- grpc: Fix codec issue causes kubernetes metadata problems by @kakkoyun in #1729
- pkg/process: Save whether mapping contains debuginfo to upload by @brancz in #1730
- pkg/profiler/cpu: Prevent creating unnecessary closure by @brancz in #1731
- bpf: enable JIT unwinding by default by @Sylfrena in #1727
- Refactor converter component by @kakkoyun in #1734
- *: Introduce lightweight LRU cache and use in hotpaths by @brancz in #1732
- debuginfo/manager: Exclude the time to wait for goroutines turn by @kakkoyun in #1739
- fix(config): fix reloading config from Kubernetes ConfigMap by @maxbrunet in #1735
- buildid: Simplify and optimize build id extraction by @kakkoyun in #1740
- pkg/process: Ensure debuginfo is uploaded by @brancz in #1743
- pkg/process: Filter mappings to only consider executable sections by @brancz in #1745
- pkg/process: Fix race by @brancz in #1746
- *: Remove 3rd-party multi-error packages by @kakkoyun in #1755
- tests/integration: enable in CI by @javierhonduco in #1758
- tests/integration: Fix stackContains by @javierhonduco in #1763
- cpu/process info: Reject inflight requests by @kakkoyun in #1765
- *: Remove burrow.Cache use cache.LRU instead by @kakkoyun in #1760
- maps/vdso: Simplify Base Address calculation by @kakkoyun in #1768
- Upgrade ainur by @kakkoyun in #1771
- *: Simplify ObjectFile life-cycle by @kakkoyun in #1770
- *: Avoid constant recreation of goroutines by @kakkoyun in #1759
- Use puzpuzpuz/xsync instead of sync.Map by @kakkoyun in #1772
- Improve Process Info cache performance by @kakkoyun in #1773
- Add a flag to configure RPC unary timeout by @kakkoyun in #1775
- Add a flag to control object file pool size by @kakkoyun in #1776
- Do not cache process info if we failed to read a mapping by @kakkoyun in #1777
- Add flags to control perf event buffer event handling by @kakkoyun in #1778
Full Changelog: v0.19.0...v0.20.0
Docker images
docker pull ghcr.io/parca-dev/parca-agent:v0.20.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.