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
What's Changed
- chore(deps): update github/codeql-action action to v2.3.1 by @renovate in #1589
- chore(deps): update github/codeql-action action to v2.3.2 by @renovate in #1591
- build(deps): update github.com/google/pprof digest to 905365e by @renovate in #1592
- build(deps): update github.com/ianlancetaylor/demangle digest to 24673e7 by @renovate in #1593
- chore(deps): update gcr.io/distroless/base-debian11 docker digest to df13a91 by @renovate in #1595
- build(deps): update gcr.io/distroless/static docker digest to 7198a35 by @renovate in #1594
- chore(deps): update dependency pre-commit to v3.3.0 by @renovate in #1596
- chore(deps): update dependency pre-commit to v3.3.1 by @renovate in #1598
- Add Go package to interact with libasyncprofiler by @v-thakkar in #1512
- build(deps): update module github.com/docker/docker to v23.0.5+incompatible by @renovate in #1600
- chore: Disable deprecated linters by @v-thakkar in #1601
- pkg/asyncprofiler: Refactor NewAsyncProfiler to use functional options by @v-thakkar in #1603
- chore(deps): update github/codeql-action action to v2.3.3 by @renovate in #1605
- build(deps): update module golang.org/x/sync to v0.2.0 by @renovate in #1606
- Overhaul process info discovery by @kakkoyun in #1507
- chore(deps): update docker.io/goreleaser/goreleaser-cross docker tag to v1.20.4 by @renovate in #1608
- 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
- chore(deps): update dependency github.com/go-delve/delve to v1.20.2 by @renovate in #1556
- build(deps): update module github.com/prometheus/client_model to v0.4.0 by @renovate in #1618
- *: 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 - build(deps): update module github.com/prometheus/client_golang to v1.15.1 by @renovate in #1624
- build(deps): update module golang.org/x/sys to v0.8.0 by @renovate in #1626
- build(deps): update module go.uber.org/atomic to v1.11.0 by @renovate in #1625
- 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
- build(deps): update module github.com/prometheus/common to v0.43.0 by @renovate in #1632
- build(deps): update module github.com/prometheus/prometheus to v0.43.1 by @renovate in #1637
- build(deps): update module google.golang.org/grpc to v1.55.0 by @renovate in #1638
- build(deps): update docker.io/library/busybox:1.36.0 docker digest to a8629bc by @renovate in #1639
- build(deps): update docker.io/library/busybox:1.36.0 docker digest to 9e2bbca by @renovate in #1640
- chore(deps): update dependency github.com/goreleaser/goreleaser to v1.18.1 by @renovate in #1641
- chore(deps): update dependency github.com/goreleaser/goreleaser to v1.18.2 by @renovate in #1642
- build(deps): update module github.com/docker/docker to v23.0.6+incompatible by @renovate in #1644
- build(deps): update github.com/google/pprof digest to eeec1cb by @renovate in #1645
- build(deps): update github.com/ianlancetaylor/demangle digest to d34d4e9 by @renovate in #1646
- build(deps): update golang.org/x/exp digest to dd950f8 by @renovate in #1647
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1648
- 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
- build(deps): update golang to v1.20.4 by @renovate in #1659
- chore(deps): update actions/setup-go action to v4 by @renovate in #1664
- chore(deps): update sigstore/cosign-installer action to v3 by @renovate in #1666
- chore(deps): update dependency pre-commit to v3.3.2 by @renovate in #1667
- chore(deps): update sigstore/cosign-installer action to v3.0.5 by @renovate in #1668
- build(deps): update module github.com/stretchr/testify to v1.8.3 by @renovate in #1671
- 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
- build(deps): update docker.io/library/busybox docker tag to v1.36.1 by @renovate in #1676
- build(deps): update module github.com/prometheus/prometheus to v0.44.0 by @renovate in #1677
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1679
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1680
- build(deps): update golang.org/x/exp digest to 03e9162 by @renovate in #1678
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1681
- 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
- chore(deps): update github/codeql-action action to v2.3.4 by @renovate in #1690
- build(deps): update module github.com/docker/docker to v24 by @renovate in #1691
- build(deps): update module github.com/docker/docker to v24.0.1+incompatible by @renovate in #1692
- chore(deps): update github/codeql-action action to v2.3.5 by @renovate in #1693
- build(deps): update kubernetes to v0.27.2 by @renovate in #1694
- *: Add inital tracing support using OTel (local testing using jaeger) by @kakkoyun in #1684
- chore(deps): pin dependencies by @renovate in #1695
- *: Remove unbounded caches by @kakkoyun in #1672
- *: Add metrics, everywhere by @kakkoyun in #1634
- chore(deps): update docker.io/jaegertracing/all-in-one:latest docker digest to 251dfdb by @renovate in #1697
- build(deps): update module github.com/prometheus/procfs to v0.10.0 by @renovate in #1698
- chore(deps): update docker.io/jaegertracing/all-in-one:latest docker digest to 2c9ff42 by @renovate in #1699
- chore(local-observability): use release container image tags by @maxbrunet in #1700
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1702
- build(deps): update golang.org/x/exp digest to 2e198f4 by @renovate in #1701
- build(deps): update module github.com/prometheus/common to v0.44.0 by @renovate in #1703
- build(deps): update module go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc to v0.42.0 by @renovate in #1704
- chore(deps): update docker.io/otel/opentelemetry-collector-contrib:0.78.0 docker digest to 42e8ba4 by @renovate in #1705
- bpf: Add mixed-mode unwinding for JIT sections by @Sylfrena in #1670
- Use libbpf's cpu number helper by @javierhonduco in #1709
- chore(deps): update github/codeql-action action to v2.3.6 by @renovate in #1711
- build(deps): update module github.com/docker/docker to v24.0.2+incompatible by @renovate in #1712
- chore(deps): update gcr.io/distroless/base-debian11 docker digest to 73deaaf by @renovate in #1713
- 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
- chore(deps): update kylemayes/install-llvm-action action to v1.8.1 by @renovate in #1719
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1722
- chore(deps): update docker.io/jaegertracing/all-in-one docker tag to v1.46.0 by @renovate in #1723
- build(deps): update module github.com/prometheus/procfs to v0.10.1 by @renovate in #1720
- build(deps): update github.com/google/pprof digest to 91b7bce by @renovate in #1721
- 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
- build(deps): update module github.com/stretchr/testify to v1.8.4 by @renovate in #1733
- Refactor converter component by @kakkoyun in #1734
- chore(deps): update quay.io/containers/podman docker tag to v4.5.1 by @renovate in #1737
- chore(deps): update docker.io/otel/opentelemetry-collector-contrib docker tag to v0.79.0 by @renovate in #1738
- build(deps): update golang to v1.20.5 by @renovate in #1736
- *: 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
- chore(deps): update actions/checkout action to v3.5.3 by @renovate in #1747
- chore(deps): update golangci-lint to v1.53.1 by @renovate in #1744
- chore(deps): update docker.io/goreleaser/goreleaser-cross docker tag to v1.20.5 by @renovate in #1749
- chore(deps): update golangci-lint to v1.53.2 by @renovate in #1750
- build(deps): update docker.io/library/busybox:1.36.1 docker digest to b58e890 by @renovate in #1751
- build(deps): update module github.com/opencontainers/runtime-spec to v1.1.0-rc.3 by @renovate in #1752
- build(deps): update docker.io/library/busybox:1.36.1 docker digest to 6e49438 by @renovate in #1753
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1754
- build(deps): update module github.com/aquasecurity/libbpfgo to v0.4.9-libbpf-1.2.0 by @renovate in #1748
- *: Remove 3rd-party multi-error packages by @kakkoyun in #1755
- chore(deps): update goreleaser/goreleaser-action action to v4.3.0 by @renovate in #1756
- chore(deps): update docker.io/goreleaser/goreleaser-cross:v1.20.5 docker digest to 965310d by @renovate in #1757
- tests/integration: enable in CI by @javierhonduco in #1758
- chore(deps): update dependency kubernetes/minikube to v1.30.1 by @renovate in #1425
- chore(deps): update github/codeql-action action to v2.20.0 by @renovate in #1761
- chore(deps): update dependency pre-commit to v3.3.3 by @renovate in #1762
- tests/integration: Fix stackContains by @javierhonduco in #1763
- cpu/process info: Reject inflight requests by @kakkoyun in #1765
- build(deps): update parca to v0.18.0 by @renovate in #1767
- *: Remove burrow.Cache use cache.LRU instead by @kakkoyun in #1760
- build(deps): update module golang.org/x/sync to v0.3.0 by @renovate in #1766
- 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
- chore(deps): jsonnet-bundler Lock file maintenance by @renovate in #1774
- 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
- build(deps): update module golang.org/x/sys to v0.9.0 by @renovate in #1779
- 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
- build(deps): update module k8s.io/apimachinery to v0.27.3 by @renovate in #1780
- build(deps): update module k8s.io/cri-api to v0.27.3 by @renovate in #1781
- build(deps): update kubernetes to v0.27.3 by @renovate in #1782
- build(deps): update module github.com/klauspost/compress to v1.16.6 by @renovate in #1783
Full Changelog: v0.19.0...v0.20.0