Skip to content

Releases: yandex/perforator

v0.0.7

01 Nov 21:28

Choose a tag to compare

Compatibility Changes

The database schema has changed. Migrations must be applied when upgrading from a previous version of Perforator.

Features

  • (Agent) Added basic support for ARM (beta) (3fd18c0)
  • (Agent) Added support for AMD BRS (c9029a5)
  • (CLI) Added support for text format output (ab5ecc2)
  • (Language support) Added support for PHP unwinding (65c4fd2)
  • (Microscopes) Added support for per-service microscopes (8e0a7f3)
  • (Microscopes) Added basic support for custom profile operations (beta)
  • (Proxy) Added optional stack sampling support for profiles on merge (f13013a)
  • (UI) Added a Tour of the UI (73ffdf4)
  • (UI) Added suggestions for environment variables (eb7e744)
  • (UI) Added support for left-heavy sorting of frames in the viewer (8f342d9, f021457)
  • (UI) Improved tooltips with highlighting (11a9e73)

Fixes

  • (Language support) Fixed incorrect caching of interpreter frames during rendering when addresses accidentally match; this was observed on CPython CodeObject (0bfc3bc)
  • (Language support) Fixed an issue where functions were cached by name only during profile building, which caused incorrect paths for Python's <module> (dc3c21d)
  • (Agent, Proxy) Fixed base address calculation (d151cdd, 3d8bbe7)
  • (Agent) Fixed DWARF unwinding when inside a PID namespace (965525d)
  • (Agent) Fixed a failure during unwind table building when .eh_frame contained overlapping FDEs (267e630)
  • (Agent) Fixed leakage of collected TLS variable values between processes (5f8885c)
  • (Agent) Disabled JVM-specific logic unless a process has a libjvm.so mapping (bd17293)
  • (Storage) Fixed an issue where storage would only accept one event type for an extended period due to a shared sampler counter (5506995)

Improvements

  • Python stack merging can now be disabled (424b6a0)
  • Added support for Rust demangling (701231b, aa81efc)
  • Switched to a round-robin connection strategy for ClickHouse (2a8f4e8)

Documentation

  • Added documentation for ELF address conversions (d151cdd)

v0.0.6

02 Jul 16:59

Choose a tag to compare

Compatibility changes:

  • Database schema has changed. Applying migrations is necessary when upgrading from previous Perforator version.
  • Agent with Kubernetes integration now uses KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT environment variables to reach API server if they are available. Previously hardcoded address kubernetes.default.svc.cluster.local was always used. This behavior can be controlled with kubernetes_api_server_host agent configuration field or agent.config.KubernetesAPIServerHost chart value.

Fixes:

  • (Language support) Fix perfmap-based JVM profiling when process working directory is read-only (f3d6f60)
  • (Agent) Support CRI-O and cri-dockerd container runtimes (272ee55)
  • (UI) Fix unstable behavior when viewing large flamegraphs (32a6fff)
  • (Language support) Fix NodeJS symbolization quality degradation over time (5d44eb0)
  • (Storage) Adjust GOMAXPROCS when running in container (37977c1)
  • (Proxy) Fix panic at startup when using Go v1.23 or higher (ee11159)
  • (CI) Fix AutoFDO build (c0e4425)
  • (UI) Fix root frame color calculation (8c0f439)
  • (Proxy) Do not count no profiles to merge errors on proxy (5ecbc0e)
  • (UI) Fix tab crash on large profiles (6c195b6)

Features:

  • (Language support) CPython v2.4 and later versions are now supported
  • (Language support) Cython is now supported
  • (UI) Allow to delete stacks with Alt+Click (15b1dce)
  • (Microscopes) Increase max microscope duration to 48h (was 1h) (73e9ca3)
  • (Query language) build_ids filter now filters out samples that don't contain any code from the specified binaries
  • (UI) Add search focus mode (8fd27c1)
  • (UI) Add title to search (4bc2d0f)
  • (UI) Add frame context menu (0f48371)
  • (UI) Add proxy name to task view (75c58cf)
  • (Agent) Add support for user-defined labels for profiles (80a70a5)
  • (Agent, CLI) Support uprobes
  • (Agent) Add namespace label and pod labels to profile (e28bf75)
  • (UI) Paginate profiles list (01d60a3)
  • (UI) Add top tab to task results (734d377)
  • (CLI) Add html-v2 output format (b4c4715)
  • (CLI) Add profile quality statistiscs to record --upload output (ca66809)
  • (UI) Paginate tasks list (ff021ef)
  • (CLI) Support local flamegraph construction from pprof/collapsed stacks; support local profile symbolization using split DWARF (5bc9cc3)
  • (Storage) Object storage requests routing can use HTTP proxy with proxy configuration discovered and refreshed at runtime (56cc43b)
  • (UI) Add side-by-side top view to flamegraph page ( b1132ce)

Improvements:

  • Avoid updating last used timestamp on every AnnounceBinaries to decrease write load on the database (af7164d)
  • Add metrics for object storage request retries (17d896a)
  • Improve interpreted language representation in new profile format (a958ab1)
  • Preserve flamegraph options in profiles uploaded via CLI (a54c9d3)
  • Improve pagination in ListProfiles RPC (940fd8d)
  • Unify TLS configuration (5e962ca, bb4dfdd)
  • Add total task count to ListTasks RPC (0e3aa3f)
  • Add service to atomic profile selector (2449719)
  • Make storage use cluster label provided by agent by default (963b040)
  • Change TCMalloc cache mode from per-core to per-thread in agent (411bd2c)
  • Upgrade TCMalloc (8f34d17)
  • Add exponential backoff to storage client (952b27e)
  • Optimize hover (dede1b3)

Documentation:

  • Document nginx ingress controller installation (e42f0af)
  • Add link to the Medium post (d0de017)
  • Clarify PERFORATOR_ENDPOINT expected format and default port (7a4cecb)
  • Remove incorrect claim about SVG output format support (04028e5)
  • Document multi-cluster perforator setup (6be8a54)
  • Remove docker compose-based databases setup (93af4f9)
  • Fix missing redirect (e55625e)
  • Add missing build step (dd7b6b1)
  • Explain python profiling implementation details

v0.0.5

04 Mar 12:33

Choose a tag to compare

General changes:

  • License was changed from MIT to Apache-2. Signing Contributor License Agreeming is no longer required to submit a pull request.

Changes:

  • (cli) Change PERFORATOR_ENDPOINT environment variable parsing - scheme is now denied and port has default value matching Helm chart (3723866)

Fixes:

  • (agent) Fix incorrect state reuse leading to incorrect wall-time profiles (58252a2)
  • (agent) Fix incorrect state reuse affecting Python processes profiling (27a3ed7)
  • (agent) Fix race condition affecting JVM processes profiling (aea16ce)
  • (agent) Fix TLS CA configuration when connecting to storage (5167b7b)

Enhancements:

  • (storage) Profile sampling probability can depend on event type (7896876)
  • (ui) Add 'cluster' field to selector for multi-cluster deployments (25d2ab3)
  • (agent, cli) Allow profiling individual threads (d812a33)
  • (ui) Add context menu (2f2e933)
  • (agent, storage) Add mutual TLS support for agent-to-storage communication (d6ce345)
  • (ui) Enable sourcemaps by default (283248e)
  • (storage, proxy) Allow plaintext ClickHouse connections (6b4ddc3)
  • (agent) Support dynamically-linked Python builds which are common in containers (6b56359)

v0.0.4

14 Feb 15:29

Choose a tag to compare

Important changes

  • Remove prometheus metrics from agent logs
  • Hide low-level messages by default in perforator record
  • Fix token being incorrectly required in perforator

v0.0.3

11 Feb 11:52

Choose a tag to compare

Important changes

v0.0.2

07 Feb 17:55

Choose a tag to compare

Multiple fixes based on initial feedback

v0.0.1

30 Jan 08:14

Choose a tag to compare

First public release