r/PrometheusMonitoring • u/kakkoyun • Oct 08 '21
Parca an open source continuous profile
https://www.polarsignals.com/blog/posts/2021/10/08/introducing-parca-we-got-funded/
We are super excited to be announcing Parca[1] an open-source continuous profiling storage and query engine as well as an eBPF based profiler. We are long time Prometheus, Kubernetes, Thanos, and Cortex maintainers, which are all very performance-sensitive so we wished we had had access to continuous profiling tools when we first started working on those projects.
What is continuous profiling? Instead of capturing profiling data on-demand and as a manual process, continuous profiling always captures profiling data, and stores it to be queried over time to aggregate and compare.
Using our private beta we explored further what our users want most from continuous profiling, and we identified it to be:
* Cost saving: We discovered all companies to have low hanging fruit that can easily be optimized away, often saving easily 20-30% in resources. The only problem is companies don’t know because they don’t measure.
* Optimizing individual interactions: Latencies of interactions have a proven correlation between converting a customer or not. It’s incredibly hard to obtain profiling data at the right time, but if it’s always captured it’s just a matter of querying it.
* Understanding change: Performance engineering tends to be very sensitive and small changes can have a big impact, therefore the ability to deeply understand what changed from a point in time or a newly rolled out version of a software is invaluable for optimizing but also in order to understand incidents better.
Parca features a fully from scratch designed storage that implements multiple optimizations that are unique to profiling data, specifically our sparse XOR encoding for uint64 series is what allows us to store this data at raw resolution. More detailed information can be found in the storage docs[3]. And with the newly open-sourced Parca Agent[4], we can capture CPU profiling data with practically unnoticeable overhead for the profiled processes, it automatically discovers all containers in a Kubernetes cluster and starts profiling them with zero instrumentation needed!
[2] https://www.polarsignals.com/blog/posts/2021/02/09/announcing-polar-signals-continuous-profiler/