Skip to content
Back to skills

S32trace Analyze Performance

ASecurity

Analyze an S32DS Performance View .perf export together with its ELF binary and project source tree to answer questions about function timing, call counts, hot functions, call-graph structure, and annotated source. Use when the user mentions a .perf file, performance profiling, inclusive/exclusive time, call graph, hot functions, or wants to know where CPU time is spent. Trigger phrases: "analyze perf file", "load .perf", "where does the CPU spend time", "which function is slowest", "show me ...

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 15, 2026
businessnoderailsdebuggingperformancedocumentation

Works with

  • mcp

Security analysis

A100/100

Scanned October 15, 2026

npx -y skills add nxp-agentic-ai/s32-ds-ai-support --skill s32trace-analyze-performance --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of S32trace Analyze Performance?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for S32trace Analyze Performance
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nxp-agentic-ai-s32trace-analyze-performance/badge)](https://www.skillsdirectory.com/skills/nxp-agentic-ai-s32trace-analyze-performance)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: s32trace-analyze-performance
description: >
  Analyze an S32DS Performance View .perf export together with its ELF binary
  and project source tree to answer questions about function timing, call counts,
  hot functions, call-graph structure, and annotated source.
  Use when the user mentions a .perf file, performance profiling, inclusive/exclusive
  time, call graph, hot functions, or wants to know where CPU time is spent.
  Trigger phrases: "analyze perf file", "load .perf", "where does the CPU spend time",
  "which function is slowest", "show me the call graph", "who calls X", "what does X call",
  "inclusive time", "exclusive time", "how many times was X called", "performance hotspot",
  "show source for hot function", "open performance view", "profile results".
license: LA_OPT_Online Code Hosting NXP_Software_License
metadata:
  author: NXP
  version: "1.0.0"
  product: s32trace
  tags: '[s32trace, performance, perf, callgraph, hotspot, profiling, elf, dwarf]'
---

# S32Trace Performance Analysis

Answers performance questions from an S32DS Performance View export using three
local inputs: the `.perf` file, the ELF binary (with DWARF debug info), and the
project source tree.

## When to use

Trigger this skill when the user wants to:
- load a `.perf` + ELF + source tree and get a performance overview
- identify which functions consume the most CPU time (inclusive or exclusive)
- understand the call graph: who calls a function, and what it calls
- rank functions by call count to find frequently executed code
- view a source snippet for a hot function
- answer "where does the CPU spend most of its time?"
- answer "how many times was function X called?"

Do not use this skill to configure S32Trace (use `s32trace-create-configuration`),
analyze raw trace events (use `s32trace-analyze-trace`), or examine code coverage
(use `s32trace-analyze-coverage`).

## Available Capabilities

| Type | Name | Purpose |
|------|------|---------|
| MCP tool | `search_actions` | discover available actions, their input schemas, and descriptions |
| MCP tool | `execute_action` | validated dispatcher -- pass `action_name` + action-specific `params` |

All performance operations are routed through `execute_action`:

| Action name | Required params | Optional params |
|---|---|---|
| `performance.load` | `perf_path`, `elf_path`, `source_root` | `extra_source_roots`, `label`, `snippet_window` |
| `performance.summary` | `session_id` | `core`, `top_k` |
| `performance.function` | `session_id`, `name` | `core` |
| `performance.hotspots` | `session_id` | `sort_by` (`inclusive`/`exclusive`/`calls`), `top_k`, `core` |
| `performance.callgraph` | `session_id`, `root` | `depth`, `direction` (`callees`/`callers`), `core` |
| `performance.get_source` | `session_id` | `symbol`, `file_hint`, `line`, `core`, `snippet_window` |

Call `search_actions` first (or with a focused query such as `"performance load"`)
to get the full parameter documentation before calling `execute_action`.

## Typical workflow

```
performance.load          -> returns session_id + load summary
  -> performance.summary   (overview: top functions by inclusive/exclusive time and call count)
  -> performance.function  (per-function detail + callers + callees)
  -> performance.hotspots  (ranked hotspot list by chosen metric)
  -> performance.callgraph (nested call-tree from a root function, up or down)
  -> performance.get_source (source snippet for a hot function)
```

## Quickstart

1. Call `search_actions(query="performance load")` to confirm the action schema.
2. Ask the user for the `.perf`, ELF, and source root paths.
3. Call `execute_action(action_name="performance.load", params={...})`.
   Record `session_id` -- it is required by every subsequent call.
4. Unless the user has a specific question, call `performance.summary` and present
   `top_by_inclusive_time` (where most wall-clock time is spent), `top_by_exclusive_time`
   (self-time hot functions), and `top_by_call_count`.
5. Answer follow-up questions using the action table above.

## Workflow

1. **Identify inputs.** Confirm from the user:
   - Absolute path to the **`.perf`** file (`perf_path`).
     Typically at `<workspace>/.AnalysisData/<session>/<name>.perf`.
   - Absolute path to the **ELF** with DWARF debug info (`elf_path`).
     Must be the exact binary that was profiled.
   - Absolute path to the **project source root** (`source_root`).
     Needed for `performance.get_source` to return annotated source text.

2. **Load the session.** Call:

   ```
   execute_action(
     action_name = "performance.load",
     params = {
       "perf_path":   "<absolute path to .perf>",
       "elf_path":    "<absolute path to .elf>",
       "source_root": "<absolute path to project src/>",
       "label":       "my_perf_session"
     }
   )
   ```

   Verify: `function_count > 0`, `source.available: true`.

3. **Get an overview.** Call `performance.summary` unless the user has a specific question.
   Key fields to present:
   - `top_by_inclusive_time` -- functions with the highest total accumulated time
   - `top_by_exclusive_time` -- functions with the highest self-time (ignoring callees)
   - `top_by_call_count` -- most frequently called functions

4. **Answer specific questions.**

   | User question | Action to call | Key params |
   |---|---|---|
   | "Where does the CPU spend time?" | `performance.summary` | `top_k` |
   | "Which function has the most self-time?" | `performance.hotspots` | `sort_by="exclusive"` |
   | "How many times was `crc16_step` called?" | `performance.function` | `name="crc16_step_..."` |
   | "Show me the call graph for `main`" | `performance.callgraph` | `root="main"` |
   | "Who calls `slow_leaf`?" | `performance.callgraph` | `root="slow_leaf", direction="callers"` |
   | "What does `slow_mid3` call?" | `performance.callgraph` | `root="slow_mid3"` |
   | "Show me the source for the hottest function" | `performance.get_source` | `symbol=<name>` |

5. **Inline/mangled function names.** S32DS names inlined copies as
   `funcname_0x<address>`. When the user asks about `clamp_i32`:
   1. Call `performance.hotspots` to list all instances.
   2. Call `performance.function` with the exact mangled name for per-instance detail.

6. **Call-graph exploration.** When the user asks "why is my main so slow?":
   1. Call `performance.callgraph(root="main", depth=3)` to see the full downward tree.
   2. Look for children with high `pct_inclusive`.
   3. Drill into those with `performance.function` for per-callee breakdown.
   4. Call `performance.get_source` to view the actual code.

## Guardrails

**Scope**
- All performance actions are read-only; no file is written and no S32DS process is started.
- Do not call configurator actions (`configurator.*`) from this skill.

**Destructive actions**
- None. `performance.load` writes only to an in-memory session cache; it does not touch any file.

**Secrets**
- No secrets or PII involved; no redaction required.

**Refuse-and-escalate**
- `performance.load` returns `error`: report the message verbatim and ask the user to
  verify the file paths.
- `source.available` is `false` after load: ask the user for the correct `source_root`.
- `performance.function` returns `found: false`: use `performance.hotspots` first to
  confirm the exact symbol name (mangled names include the hex address).
- `performance.callgraph` node marked `truncated=true`: increase `depth` parameter.
- Stale `session_id`: call `performance.load` again and record the new `session_id`.

**Resource limits**
- Default `top_k` is 10 for summary and hotspots. Increase only when explicitly requested.
- Default callgraph `depth` is 3. Values above 6 may produce very large responses.

## Validation loop

1. After `performance.load`, verify `function_count > 0` and (when `source_root` given)
   `source.available: true`.
2. After `performance.summary`, confirm `total_functions > 0`.
3. Pass criterion: `session_id` is in hand and the load summary matches expectations
   (correct core, function count, source available).

## Out of scope

- Creating or editing S32Trace configuration XML (use `s32trace-create-configuration`).
- Trace event analysis from a decoded CSV (use `s32trace-analyze-trace`).
- Code coverage analysis from a `.flatprofiler` (use `s32trace-analyze-coverage`).
- Timeline analysis from a `.timeline` (use `s32trace-analyze-timeline`).
- Compiling, flashing, or debugging firmware.

## See Also

- `search_actions(query="performance")` -- returns the full parameter schema for
  all 6 `performance.*` actions.
- `s32trace-analyze-coverage` -- sibling skill for code coverage analysis.
- `s32trace-analyze-timeline` -- sibling skill for timeline / sampling analysis.
- `s32trace-analyze-trace` -- sibling skill for trace event / timing analysis.
- `s32trace-create-configuration` -- skill for configuring the trace capture.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.