Releases: josepdcs/kubectl-prof
1.9.0
🦀 Rust Profiling
Profile a Rust application using cargo-flamegraph (default and recommended):
kubectl prof mypod -t 1m -l rust -o flamegraph🔥 cargo-flamegraph Benefits
kubectl-prof uses cargo-flamegraph as the default profiling tool for Rust applications, offering several advantages:
- 📊 Rust-optimized profiling - Specifically designed for Rust applications with excellent symbol resolution
- 🎨 Beautiful visualizations - Generates clean, colorized FlameGraphs with Rust-specific color palette
- ⚡ Low overhead - Minimal performance impact during profiling
- 🔍 Deep insights - Captures detailed stack traces including inline functions and generics
- 🛠️ Built on perf - Leverages the powerful Linux
perftool under the hood
Available output format:
flamegraph- Interactive FlameGraph visualization (SVG format)
What's Changed
- chore(deps): bump k8s.io/cli-runtime from 0.34.2 to 0.34.3 by @dependabot[bot] in #90
- chore(deps): bump k8s.io/kubectl from 0.34.2 to 0.34.3 by @dependabot[bot] in #88
- chore(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 by @dependabot[bot] in #86
- chore(deps): bump k8s.io/client-go from 0.34.3 to 0.35.0 by @dependabot[bot] in #91
- chore(deps): bump k8s.io/cli-runtime from 0.34.3 to 0.35.0 by @dependabot[bot] in #95
- chore(deps): bump k8s.io/kubectl from 0.34.3 to 0.35.0 by @dependabot[bot] in #93
- Implement profiling for Rust using flamegraph-rs/flamegraph by @josepdcs in #96
Full Changelog: 1.8.1...1.9.0
1.8.1
1.8.0
What's Changed
- Upgrade async-profiler to 4.2 by @isra17 in #76
- Ctimer event type for async-profiler 4.x is available now by @josepdcs in #79
- Agent: Use the /kubectl-prof/ shared directory instead of /tmp by @isra17 in #77
- Fix development environment by @isra17 in #75
- Readme rewritten by @josepdcs in #80
- Output agent logs by @isra17 in #78
- Updated dependencies and polishing by @josepdcs in #81
New Contributors
Full Changelog: 1.7.0...1.8.0
1.7.0
1.6.0
1.5.0
Changelog
Highlights
Support for obtaining memory heap snapshots for NodeJS apps
With this new feature, it is now possible to obtain a memory heap snapshot for a NodeJS app by using the -o heapsnapshot option.
Example:
kubectl prof mypod -l node -o heapsnapshot
For profiling NodeJS Pod and to generate the heap snapshot output, node process needs to be run with --heapsnapshot-signal flag. Something like that:
CMD [ "node", "--perf-basic-prof", "--heapsnapshot-signal=SIGUSR2", "app2.js" ]
Information about that here and here.
Capabilities have been reduced from SYS_ADMIN to PERFMON and SYSLOG by default for profiling Java pods
According to the Kernel documentation, PERFMON and SYSLOG should be enough for collecting performance samples.
However, if you need to run with SYS_ADMIN, you can specify it using the new --capabilities option. This one can be used multiple times to add more than one capability.
Example:
kubectl prof my-pod -t 5m -l java -o flamegraph --local-path=/tmp --capabilities=SYS_ADMIN
Features
1.4.1
1.3.0
Changelog
Highlights
Profiling a bunch of pods by using a label selector
Now kubectl-prof supports profiling a set of pods with a specific selector. They can be filtered using the --selector option. For example:
- Profile the pods with the label selector "app=my-app" for 5 minutes with JFR format for java language by using
--selectoroption:
kubectl prof --selector app=myapp -t 5m -l java -o jfr
In addition, you can define the number of pods to be profiled simultaneously by using --pool-size-profiling-jobs.
For example, the following command will profile five pods simultaneously:
kubectl prof --selector app=myapp -t 5m -l java -o jfr --pool-size-profiling-jobs 5