Releases: yandex/perforator
Releases · yandex/perforator
v0.0.7
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
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.localwas always used. This behavior can be controlled withkubernetes_api_server_hostagent configuration field oragent.config.KubernetesAPIServerHostchart 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 mergeerrors 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_idsfilter 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_ENDPOINTexpected 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
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
v0.0.3
Important changes
- Fix eBPF under kernels from 5.6 to 5.12, from torvalds/linux@51c39bb to torvalds/linux@e5069b9 (#22)
- Fix various issues with TLS connections to databases.