async-profiler — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited async-profiler (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Low-overhead sampling profiler for JVMs (HotSpot, OpenJ9, GraalVM CE) that combines AsyncGetCallTrace with perf_events to produce accurate stack traces — including Java, JIT-inlined, native, and kernel frames.
The body below is the workflow. Detailed knowledge lives in references/ and is loaded only when needed.
jps -v, jcmd, or pgrep -f java in a container. Confirm the workload has reached steady state; profiles taken during JIT warmup are dominated by C2 CompilerThread and don't reflect real hot paths.references/events.md for the full list including hardware counters.| Symptom | Event |
|---|---|
| High CPU, slow throughput | cpu |
| Low CPU but slow latency | wall (samples threads in any state) |
| Frequent young GC, GC pressure | alloc |
| Thread dump full of BLOCKED/WAITING | lock |
| Memory-bound suspicion (large data scans) | hardware cache-misses |
| GC pauses longer than expected | --ttsp (time-to-safepoint) |
| Container without perf permissions | itimer (fallback) |
references/attach-modes.md for full details.asprof -d 30 -f cpu.html <pid>-XX:+DisableAttachMechanism is setscripts/continuous-jfr.sh). Long enough to capture steady-state behavior; short enough to keep file size manageable.references/flame-graphs.md for color semantics, search, and reading patterns.jfrconv --diff baseline.jfr current.jfr diff.html. Blue frames in changed code paths confirm improvement; red signals regression.| Goal | Command |
|---|---|
| 30s CPU flame graph | asprof -d 30 -f cpu.html <pid> |
| Allocation profile | asprof -e alloc -d 60 -f alloc.html <pid> |
| Lock contention | asprof -e lock --lock 1ms -d 60 -f lock.html <pid> |
| Wall-clock (off-CPU visible) | asprof -e wall -t -d 60 -f wall.html <pid> |
| Time-to-safepoint | asprof --ttsp -d 60 -f ttsp.html <pid> |
| Continuous start/stop | asprof start -e cpu <pid> ... asprof stop -f out.jfr <pid> |
| List events for a PID | asprof list <pid> |
| Convert JFR to flame graph | jfrconv --cpu profile.jfr profile.html |
| Differential flame graph | jfrconv --diff baseline.jfr current.jfr diff.html |
Located in scripts/. Read a script before suggesting it; each encodes safe defaults.
| Script | Purpose |
|---|---|
scripts/install.sh | Download and install latest async-profiler for the current platform |
scripts/attach.sh <pid> [event] [seconds] | One-shot attach and flame graph |
scripts/continuous-jfr.sh <pid> [rotate] [dir] | Rotating JFR for production with hostname/PID-tagged output |
scripts/diff-profiles.sh <baseline> <current> [out] | Differential flame graph wrapping jfrconv --diff |
Read on demand. Each file is self-contained.
| File | When to read |
|---|---|
references/events.md | Picking the right event; full list including hardware counters and method-tracing |
references/attach-modes.md | Choosing PID-attach, -agentpath, programmatic API, or jcmd integration |
references/flags.md | Complete CLI flag reference with examples |
references/output-formats.md | flamegraph / jfr / collapsed / pprof / tree — when to use each |
references/flame-graphs.md | Reading flame graphs: color semantics, search, differential, gotchas |
references/jfr.md | JFR analysis with jfrconv, JMC, IntelliJ Profiler, Jeffrey |
references/pitfalls.md | Inlining, container limits, kernel perms, sampling skew, virtual threads |
references/platform-notes.md | Linux vs macOS vs Docker vs Kubernetes vs cloud (Lambda, Cloud Run) |
references/workflows.md | End-to-end scenarios — latency spike, alloc churn, deadlock, GC, A/B compare |
references/api.md | Programmatic Java API; embedding in tests and health endpoints |
references/integration.md | JMH, Spring Boot, Quarkus, Pyroscope, Parca, IntelliJ, Datadog |
When reporting profile findings to the user:
com.acme.Foo.bar is 42% of CPU samples."Pattern.".html or .jfr file so the user can open it.Avoid dumping full flame graph trees as text; the visual artifact is the deliverable.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.