Releases: parca-dev/parca
v0.22.0
What's Changed
Highlights
- Relative Comparisons in #4578
- Call View Table Panel in #4678:
- Sum-By labels in Metrics Graph in #4790
- Make symbolizer read-time in #4564
- Combine relative and absolute range picker in #4777
- Invert stack stacks in icicle graph in #4577
- Add OTel profiling support by @brancz in #4579
Changes
Features
- pkg/parca: Add forwarder mode by @brancz in #4531
- ui: Add a
timezone
parameter to Parca context by @yomete in #4549 - Retrieve sources from debuginfod server if debuginfo is from there by @brancz in #4602
- Add support for Iceberg storage by @thorfour in #4650
- ui: Change the compare button to be within the navbar by @yomete in #4784
- ui: CRA -> Vite migration by @manojVivek in #4796
- Introduce Apache Arrow-based ingestion protocol by @brancz in #4834
Enhancements
- pkg: change trace print to debug log by @alxric in #4310
- ui: Extendable flamegraph color profiles by @manojVivek in #4328
- ui: Pnpm migration by @manojVivek in #4566
- pkg/config: support seconds in pprof configuration by @alperkokmen in #4623
- Use new Filter API to filter by function by @yomete in #4714
- ui: Make handling of selections more robust by @brancz in #4725
- normalizer: build arrow records directly without converting to parquet by @asubiotto in #4740
- pkg/normalizer: Support named profiles by @brancz in #4760
- pkg/normalizer: Sanitize all labels by @brancz in #4844
- ui: Configuring step count as a derivative of screen size such that there are 10px gap per point by @manojVivek in #4847
- Only request debuginfod with GNU build ID by @brancz in #4865
- ui/packages/profile: Always sent the profile type along for Labels and Values by @metalmatze in #4863
- Add build ID type to initiate upload request by @brancz in #4866
- ui: URL State hook revamp by @manojVivek in #4864
- area/ui: Temporarily hide the callgraph viz by @yomete in #4927
- ui: Add text showing the timeframe of the query by @brancz in #4955
Bug Fixes
- pkg/query: Don't filter unsymbolized when no function name is provided by @brancz in #4333
- Update index to not use /* anymore for Go 1.22 by @metalmatze in #4404
- ui: Fixed the bug that was resetting the profile selection state on page load by @manojVivek in #4476
- pkg/parcacol: Correctly handle delta non cpu/ns profiles by @metalmatze in #4592
- ui: Profile info section fixed by @manojVivek in #4629
- ui: Fixed the build id truncation on tooltip by @manojVivek in #4653
- pkg/query: Fix panic when diffing two profiles by @yomete in #4681
- pkg/query: Only fetch mappings from
profileB
when in compare mode by @yomete in #4713 - pkg/debuginfo: Loosen build ID validation by @brancz in #4741
- fix(snap): store profiles in SNAP_COMMON by default by @jnsgruk in #4797
- don't perform a merge query when report type is metadata only by @thorfour in #4886
- ui: Auto query redirect fix when there is pathPrefix set by @manojVivek in #4948
- pkg/symbol: Fix DWARF panic by @brancz in #4947
- ui: Encoding the values before setting it to the URL by @manojVivek in #4962
New Contributors
- @alxric made their first contribution in #4310
- @deterclosed made their first contribution in #4407
- @alperkokmen made their first contribution in #4623
Full Changelog: v0.21.0...v0.22.0
v0.21.0
What's Changed
Highlights
The UI has seen many improvements in this release, including a redesign of the time range picker,
a new feature to highlight similar stacks when hovering on a node,
and the replacement of loading spinners with skeleton placeholders.
Now, the UI also displays CPU cores per second for sample count profiles to make them comparable with different underlying profiling durations.
Changes
- Time Range picker redesign by @monicawoj in #4139
- Display CPU cores and CPU seconds for samples count profiles by @brancz in #4304
Features
- pkg/query: Add filtering runtimes by @brancz in #4034, #4038 and #4039
- ui: Highlight similar stacks when hovering on a node by @yomete in #4180
- ui: Replace loading spinners with skeleton placeholders by @yomete in #4293
Enhancements
- ui: Allow copying system name if different from the function name by @brancz in #4022
- ui: Fixing useURLState to be SSR proof by @manojVivek in #4027
- Add additional snap configuration options by @morphis in #4069
- ui: Minor auto suggestion improvements to eliminate pauses in query builder by @manojVivek in #4155
- refactor: separate Normalizer and Ingester by @Cluas in #4170
- ui: Unify date time format in Metrics graph by @yomete in #4247
- ui: Added support for now keyword in time range selector by @manojVivek in #4248
- pkg: Move the uiFS out of the server package by @metalmatze in #4105
- ui: Considering diffs less than 0.1% as no change in flamegraph compare mode by @manojVivek in #4297
- proto: Added http path annotations for debuginfo endpoints by @manojVivek in #4301
- ui: Add week and year to presets in DateTimeRangePicker by @metalmatze in #4303
- ui: Migrating from babel to swc for js transpiling by @manojVivek in #4315
- Improve filter profile data by @thorfour in #4313
- Add new flag to use an on-disk index by @thorfour in #4323
Bug Fixes
- config: Validate duplicate job names by @nabokihms in #3986
- ui: Profile view mobile fixes by @manojVivek in #4029
- dark mode dropdown style fixes by @monicawoj in #4063
- fix y axis ticks for small intervals by @monicawoj in #4067
- area/ui: Fix UI crashes when a row is exactly 0 by @yomete in #4100
- pkg/query: Fix panic when filtering no python when no python is present by @brancz in #4099
- Handle possible nil in profiling config by @adrien-f in #4075
- Fix bug when loading Metrics graph by @yomete in #4165
- fix relative time picker minus click by @monicawoj in #4173
- ui: Fix datetime picker bug when zooming on graph using mouse drag and drop by @yomete in #4250
- Fix Ingester tests by @gernest in #4249
- Encode query params when navigation is triggered in useURLState by @yomete in #4288
- pkg/debuginfo: init logger by @dreamerlzl in #4291
- Fix Dockerfile for parca server by @orgads in #4257
- Add missing commas, correction of spelling errors by @patsevanton in #4320
New Contributors
- @nabokihms made their first contribution in #3986
- @morphis made their first contribution in #4069
- @adrien-f made their first contribution in #4075
- @Cluas made their first contribution in #4170
- @gernest made their first contribution in #4249
- @dreamerlzl made their first contribution in #4291
- @orgads made their first contribution in #4257
- @patsevanton made their first contribution in #4320
Full Changelog: v0.20.0...v0.21.0
v0.20.0
What's Changed
This release features tons of performance improvements, this is the lowest CPU and memory usage Parca server yet!
Highlights:
- All interactions that previously required holding shift and interacting, are now replaced with right-clicks.
- Icicle graphs can now be grouped by binary, filename and address in addition to previously only function name and labels.
- Display function inlining information in the UI.
Changes
Apache Arrow is now the one and only format to read and write data in the internal storage.
- Remove ExperimentalArrow flag by @thorfour in #3884
- Right-click context menu for Icicle Graph by @monicawoj in #3855
- Metrics Graph - click info panel by @monicawoj in #3908
Features
- UI: Show whether function was inlined in hover bubble. by @brancz in #3896
- UI: Allow aggregating icicle graph by binary, filename and address by @brancz in #3897
- UI: Add visibility dropdown for columns by @metalmatze in #3780
- scrape: Support parsing executable info out of pprof comments by @brancz in #3911
Enhancements
- query: Only aggregate by labels if report uses labels by @brancz in #3883
- ui: Provision to show hints for visualizations by @manojVivek in #3907
- ui: Metrics graph axis labels by @monicawoj in #3913
Bug fixes
- query: Fix nil panic when building flat flamegraph by @brancz in #3892
- ingestion: Ensure base address normalizaton only happens once by @brancz in #3903
Full Changelog: v0.19.0...v0.20.0
v0.19.0
v0.19.0 is the biggest and most exciting Parca release yet!
Highlights:
- A complete re-design of the UI. ✨
- All APIs are now served in Apache Arrow format. This completes the migration to being fully Apache Arrow based for ingestion and querying. 📈
- Queries can now filter by arbitrary profile labels (trace ID, customer ID, or whatever else is added to profiling data). 🔍
- Icicle graphs can now group by profile labels (such as thread ID or name). 📊
Aside from that, there are countless performance improvements and bug fixes.
Full Changelog:
- ui-perf: Protobuf long type handled as
Bigint
instead ofstring
on the UI by @manojVivek in #2934 - ui: Redundant query request fix by @manojVivek in #3331
- fix(server): handle gRPC-Web requests over HTTP2 by @maxbrunet in #3352
- ui: Flamegraph crash fix by @manojVivek in #3362
- ui: Fixes the bug where flamegraph goes blank for some instrumented profiles by @manojVivek in #3363
- Allow filtering data by pprof labels by @brancz in #3365
- ui: Handling 0 as a divisor in BigInt divide util by @manojVivek in #3374
- ui/shared/profile/IcicleGraphArrow: Create arrow-based IcicleGraph by @metalmatze in #3326
- ui: Making a default query on initial page load by @manojVivek in #2609
- pkg/debuginfo: Improve debuginfod client by @brancz in #3413
- pkg/query: TestGenerateFlamegraphArrowWithInlined by @metalmatze in #3415
- ui: Passing MetricsGraph variables through Parca Context by @manojVivek in #3439
- parca: add --storage-snapshot-trigger-size by @asubiotto in #3432
- pkg/query: Support unsymbolized profiles with arrow fg by @metalmatze in #3433
- pkg/query: Correctly sum up total cumulative value by @metalmatze in #3440
- pkg/query/flamegraph_arrow: Cast strings to bytes by @metalmatze in #3441
- debuginfo: Add traces by @kakkoyun in #3396
- pkg/debuginfo: Allow user to force a debuginfo upload by @brancz in #3450
- ui: Metrics graph compare fix by @manojVivek in #3455
- Dependency inject the memory.Allocator for rendering by @thorfour in #3461
- ui: Arrow Flamegraph shows pprof labels by @metalmatze in #3460
- ui: value formatter crash fix by @manojVivek in #3467
- Add SortBy and GroupBy actions for Icicle Graphs by @metalmatze in #3479
- Symbolize without intermediate format directly in Apache Arrow format by @brancz in #3519
- pkg/config: Allow configuring to keep only certain sample types by @brancz in #3540
- Fix for panic when building from dictionaries by @thorfour in #3543
- Update badges by @kakkoyun in #3560
- ui: Callgraph undefined diff handled in tooltip by @manojVivek in #3559
- pkg/query: Replace remaining slices.Clone by @brancz in #3565
- pkg/query: Add fast map of strings to json marshaling by @brancz in #3564
- pkg/query: Fix cases where dicts are empty by @brancz in #3580
- ui: UI Build failure fix by @manojVivek in #3591
- flamegraph_arrow: Inject artifical label node by @metalmatze in #3516
- *: Allow uploading debuginfo sources by @brancz in #3590
- Refactor the flamegraphBuilder by @metalmatze in #3594
- pkg/query/flamegraph_arrow: Cast bytes to string when accessing maps keys by @metalmatze in #3597
- feat(snap): add config options to send profiles to a remote store by @jnsgruk in #3572
- ui/packages/profile: Disable automatic retries for merge queries by @metalmatze in #3514
- pkg/query/flamegraph_arrow: Expose diff values, dont set to null by @metalmatze in #3624
- *: Allow normalizing server side by @brancz in #3625
- ci: fix snap test - s/port/http-address/g by @jnsgruk in #3622
- pkg/debuginfo: Save sources upload without extension by @brancz in #3631
- index.tsx: fix typo by @javierhonduco in #3637
- pkg/query/flamegraph_arrow: Add tracing by @metalmatze in #3635
- pkg/query/flamegraph_arrow: Properly calculate height by @metalmatze in #3632
- pkg/query: Improve flamegraph performance through dictionary unification by @brancz in #3651
- ui: Reverting prettier-plugin-tailwindcss upgrade by @manojVivek in #3658
- add startline to function when symbolizing elf by @albertlockett in #3648
- Improve flamegraph rendering performance by @brancz in #3661
- ui: Sources Panel UI improvements by @manojVivek in #3657
- Add source report: View sources and show profiling data inline by @brancz in #3666
- Move table to using arrow by @metalmatze in #3659
- ui: Disabling sources view by default by @manojVivek in #3668
- ui: Read source UI improvements by @manojVivek in #3670
- Use checked allocator by @thorfour in #3673
- pkg/query: Fix how inlined functions are determined to be root by @brancz in #3684
- ui/packages/profile/Table: Check functionname for empty string by @metalmatze in #3687
- Implementing redesign by @monicawoj in #3548
- pkg/query: Small arrow flamegraph cleanups by @brancz in #3685
- ui: Fix to show the loader on top of the source pane by @manojVivek in #3686
- pkg/query: Reduce copy children cpu by @brancz in #3695
- ui: Fix unexpectedly unfocusing matchers input by @brancz in #3701
- fix profile view header bug and button spacing by @monicawoj in #3705
- go.mod: Update frostdb and arrow by @brancz in #3706
- pkg/query: Ignore staticcheck lint by @brancz in #3707
- ui: Minor UI fixes by @manojVivek in #3714
- ui: Source View - Scroll to line fix by @manojVivek in #3716
- ui: Parca minor style tweaks for Input and Select component by @manojVivek in #3717
- pkg/query: Reduce dependency on sample labels by @brancz in #3718
- pkg/query: Use hash of labels instead of marshaling labels to json by @brancz in #3719
- General styling and dark mode improvements by @monicawoj in #3720
- Fix double free by @thorfour in #3726
- ui: Reading string from Arrow ArrayBuffers by @manojVivek in #3727
- pkg/parca: Add --http-read-timeout and --http-write-timeout options by @quite4work in #3689
- Fix Clear Selection button in table by @monicawoj in #3728
- fix memory leak by @thorfour in #3733
- pkg/query/flamegraph_arrow: Trim using breadth-first-search #3722 by @thorfour in #3730
- ui: Minor UI fixes by @manojVivek in #3735
- ui: Flamegraph - passing width from the parent instead of detecting from within by @manojVivek in #3736
- ui/shared/profile: Pass down arrow response object by @metalmatze in #3738
- pkg/query: Use maps instead of slices for children for O(1) access by @brancz in #3743
- fix(ui): remove unused tableFromIPC import by @maxbrunet in #3746
- ci: yarn cache config tweaks by @manojVivek in #3739
- pkg/query/flamegraph_arrow: Return empty record if no samples by @metalmatze in #3740
- pkg/query/flamegraph_arrow: Remove locationFolded column by @metalmatze in #3752
- Disable P...
v0.18.0
We're happy to release Parca v0.18.0!
This release comes packed with performance improvements, enhancements and so many fixes to the UI and CI!
- Parca will now automatically use the system settings for light or dark themes.
- gRPC Prometheus histograms are now exposed as native histograms giving them a much higher fidelity.
- If running with a custom path prefix, all API endpoints will now be served under this prefix.
Happy profiling!
What's Changed
Enhancements
- ui: Improve dark styling for targets page and Pill component by @metalmatze in #2894
- ui: DateTimePicker adds seconds and uses yyyy-MM-dd HH:mm:ss by @metalmatze in #2920
- ui: Fetch dark mode settings from system settings by @yomete in #3016
- pkg/parcacol: Reduce allocs in sampleKey by @marselester in #3061
- pkg/metastore: Reduce allocs in MakeLocationID by @marselester in #3064
- pkg: Hidden flag to disable address normalization for debugging by @marselester in #2955
- Arrow v12 by @thorfour in #3138
- build(container): add metadata labels by @maxbrunet in #3139
- chore(container): add commit timestamp to image tag by @maxbrunet in #3095
- pkg: Use native histograms for gRPC request/responses by @metalmatze in #3123
- perf(grpc): use optimized code from vtprotobuf by @maxbrunet in #3019
- pkg/metastore: Reduce allocs in kv.go by @marselester in #3136
- pkg/scrape: apply optimizations from upstream prometheus by @maxbrunet in #3176
- debuginfo/store: Use tracer.Start instead of SpanFromContext by @kakkoyun in #3270
- ui: Automatically use system settings for Parca's theme by @yomete in #3276
Bug fixes
- pkg/debuginfo: Set debuginfod user-agent by @brancz in #2924
- pkg/server: serve everything under path prefix when set by @maxbrunet in #3186
- pkg/config: fix reloading config from Kubernetes ConfigMap by @maxbrunet in #3230
- ui: Fix circumstances where there is only a single label by @brancz in #2922
- ui: fix dropdown component by @monicawoj in #2947
- ui: Fix link to release page by @ilpianista in #3024
- ui(ci): ensure yarn lockfile is the source of truth by @maxbrunet in #3038
- ui: Remove useEffect fn responsible for resetting current icicle path by @yomete in #3173
- ui: Trigger profile view update on expression change by @brancz in #3183
- ui: Fixes the flame graph tooltip overflow when multiple visualizations are enabled by @manojVivek in #3198
- ui: list active targets only by @maxbrunet in #3196
- ui: fix profile type dropdown overflow by @monicawoj in #3209
- ui: fix click, drag, and keydown behavior by @monicawoj in #3208
- ui: corrected the key for profile-selector by @themohammadsa in #3210
- ui: modified height of profile-selector by @themohammadsa in #3216
- ui: fix tooltip freeze bug by @monicawoj in #3235
- ui: Fix Callgraph crash by @monicawoj in #3267
- bah humbug; forgot to remove panic by @thorfour in #2938
Docker images
docker pull ghcr.io/parca-dev/parca:v0.18.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
New Contributors
- @ilpianista made their first contribution in #3024
- @susarlanikhilesh made their first contribution in #3107
- @themohammadsa made their first contribution in #3210
Full Changelog: v0.17.0...v0.18.0
v0.17.0
Features
- EXPERIMENTAL arrow ingestion: create the arrow record from the sorted buffer by @thorfour in #2696
- introduce deterministic metrics graph coloring by @monicawoj in #2826
Enhancements
- ui: Flamegraph tooltip perf improvement by @manojVivek in #2692
- ui: Improve showing filtered and trimmed nodes in ProfileIcicleGraph by @metalmatze in #2758
- Show step duration in metrics graph tooltip by @monicawoj in #2785
- Callgraph makeover + fixes by @monicawoj in #2651
- Trim flame graph nodes relative to node's parent by @metalmatze in #2815
- Show absolute and relative percentages in tooltip by @metalmatze in #2766
- Dockerfile: Downloading grpc-health-probe with retries by @manojVivek in #2703
- pkg/parcacol: Support ingesting uncompressed pprof by @brancz in #2751
- Bump frost by @thorfour in #2811
- proto/parca/share: Add total and filtered to QueryResponse by @metalmatze in #2866
- Optimize render flamegraph by @thorfour in #2879
Fixes
- Shareability fixes by @monicawoj in #2677
- Fix archive filename template by @kakkoyun in #2679
- deploy: Update config after flag changes by @kakkoyun in #2683
- fix "Add panel" and visualization type selectors by @monicawoj in #2767
- fix profile selector by @monicawoj in #2812
- ui: Type fix and version synced by @manojVivek in #2853
- pkg/debuginfod: Fix caching and follow redirects of debuginfod servers by @brancz in #2847
Full Changelog: v0.16.0...v0.17.0
Docker images
docker pull ghcr.io/parca-dev/parca:v0.17.0
Thanks!
Join our Discord server;
Follow us on Twitter;
Read the documentation.
v0.16.2
Bug fixes
- ui: User preferences icon and release notes viewer bugfix by @manojVivek in #2694
Full Changelog: v0.16.1...v0.16.2
v0.16.1
Bug fixes
- Fix link sharing and updating queries when changing time selection. @monicawoj in #2677
Full Changelog: v0.16.0...v0.16.1
v0.16.0
This release is a major milestone for the Parca project. We have removed the Merge
button, as we are now comfortable with the performance of these queries being run by default when querying data. We now felt comfortable after months of work improving the performance of the storage.
Many many more awesome changes, below is a more exhaustive changelog.
Happy profiling!
What's Changed
Enhancements
- Various components: Merges with Step Duration instead of Single Profile requests. @monicawoj and @metalmatze in #2516
- api: Skip returning data to the frontend that will never be possible to be visualized in an Icicle graph. @manojVivek in #2299
- api: Ensure pprof download is compatible with Go PGO. @brancz in #2520
- ui: Add Github Star button and Release Notes Viewer which show the release notes within Parca UI. @manojVivek in #2366
- ui: Persist even more of what is on-screen into the URL for shareability. @monicawoj in #2115
- ui: Visualization Panels drag n drop feature. @monicawoj in #2403
- ui: Binary based colored stack. @manojVivek in #2381
- ui: Icicle graph - Hiding the mappingPrefix when there is only one mapping. @manojVivek in #2564
- ui: Added screen with info when no data is received on the server. @manojVivek in #2567
- ui: Add a tooltip when a MetricsGraph tooltip label is hovered over. @yomete in #2571
- ui: Flamegraph tooltip improvements by @manojVivek in #2600
- storage: Improve performance through schema changes. @asubiotto in #2391
- symbolization: Add priority for symtab search and support plt symbol. @zdyj3170101136 in #2491
- symbolization: Use symbols liner either HasSymtab or HasDynsym. @zdyj3170101136 in #2637
Bug fixes
- ui: Fix displaying targets error and handle scraper-only mode correctly. @brancz in #2325
- ui: Fix false positive Profile has no samples message in visualisations. @yomete in #2511
- ui: Add a button to clear search string after clicking on a table row. @yomete in #2501
- ui: Fixed the unnecessary re-rendering of flamegraph. @manojVivek in #2644
- scrape: Handle HTTP redirects with specific error correctly. @ShubhamPalriwala in #2270
- debuginfo: Fix instantiation of upstream debuginfod servers. @brancz in #2497
- api: Translate empty
""
matcher values to NULL. @metalmatze in #2616
New Contributors
- @ShubhamPalriwala made their first contribution in #2270
- @zdyj3170101136 made their first contribution in #2491
- @Franqsanz made their first contribution in #2602
Full Changelog: v0.15.0...v0.16.0
v0.15.0
Breaking changes
This release has a breaking change in the debuginfo upload protocol, which is only compatible with Parca Agent v0.11.0 or higher (more details in #2248).
Changelog
Changes
Enhancements
- ft:
Filter by function
functionality added to ProfileView by @manojVivek in #2062 #2156 #2236 - pkg/debuginfo: Always attempt to reupload corrupted files by @brancz in #2101
- pkg/debuginfo: Better errors in uploads by @brancz in #2113
- pkg/scrape: Allow profiles to be treated as already normalized by @brancz in #2124
- ui: UI user preferences by @manojVivek in #2158
- ui: Suggestion list scrolls with active suggestion by @manojVivek in #2164
- ui: Query data caching on the Frontend by @manojVivek in #2173
- ui: Add a reset zoom button for the call graph by @yomete in #2249
- ui: Flamegraph tooltip performance fix by @manojVivek in #2265
- pkg/debuginfo: Allow uploads to be done via signed URLs by @brancz in #2248
- grafana-pugin: Grafana plugin updated to use
flamegraph_table
report by @manojVivek in #2271 - pkg/debuginfo: Validate size of upload is set by @brancz in #2282
- ui: Using a virtual table component to improve
TopTable
performance andcompare
option added to benchmark runner by @manojVivek in #2225 - parcacol: change stacktrace column to plain encoding by @asubiotto in #2283
- Use scrape interval correctly by @fabxc in #2220
- pkg/symbolizer: Improved caching in symbolization by @brancz in #2311
- ui/packages/app/web: Hide agent or scraper target sections if non-existing by @metalmatze in #2227
- pkg/profilestore: Reduce allocs in writeSeries by @marselester in #2176
- pkg/parcacol: Improve sparse labelset ingestion by @metalmatze in #2201
- pkg/parcacol: Group all profiles of a write request into one buffer by @brancz in #2202
- symbolizer: Log addresses in hexadecimal by @javierhonduco in #2226
- querydiff: perform the profile selections concurrently by @thorfour in #2242
Bug fixes
- fix(deploy): fix local storage by @maxbrunet in #2089
- ui: Fix escaped characters bug by @yomete in #2198
- ui: URL encode label-values in single profile URL params by @brancz in #2199
- fix query bar spacing bug by @monicawoj in #2247
New Contributors
Full Changelog: v0.14.0...v0.15.0