Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.20)

project(xprobe VERSION 0.6.0 LANGUAGES C)
project(xprobe VERSION 0.6.1 LANGUAGES C)

include(CTest)

Expand Down
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ members = [
resolver = "2"

[workspace.package]
version = "0.6.0"
version = "0.6.1"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/itdevwu/xprobe"
Expand Down
44 changes: 36 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<div align="center">
<h1>xprobe</h1>
<p><strong><i>AI-native heterogeneous profiling tool for CPU and GPU.</i></strong></p>
<p><strong>Find out why your CPU, Python, or CUDA process is slow — in two commands.</strong></p>
<p>A bounded Linux profiler for AI coding agents and the humans working with them:<br>
eBPF + perf + NVIDIA CUPTI, one CLI, strict JSON, no daemon.</p>
<p>
<a href="https://github.com/itdevwu/xprobe/actions/workflows/ci.yml"><img alt="CI status" src="https://img.shields.io/github/actions/workflow/status/itdevwu/xprobe/ci.yml?branch=master&amp;style=for-the-badge&amp;label=CI"></a>
<a href="https://github.com/itdevwu/xprobe/releases"><img alt="Latest release" src="https://img.shields.io/github/v/release/itdevwu/xprobe?style=for-the-badge&amp;sort=semver"></a>
Expand All @@ -9,12 +11,38 @@
</p>
</div>

`xprobe` is an AI harness for measuring latency between two observable events
in a process, on the CPU, NVIDIA GPU, or across both. Its bounded native
profiler combines sampled native/Python stacks, eBPF function, syscall,
tracepoint and CPython runtime evidence with NVIDIA CUPTI, an agent-friendly
CLI, strict JSON contracts, explicit correlation quality, and no daemon or
server lifecycle.
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/xprobe-flow-dark.svg">
<img alt="xprobe triages a slow PyTorch CUDA process into ranked findings, then measures request to launch 1.14 ms, launch to kernel 99 µs, and kernel 1.2 µs on CPU and GPU timelines" src="docs/assets/xprobe-flow-light.svg" width="860">
</picture>
</p>

<p align="center"><sub>Real numbers from the v0.6.0 release gate on an RTX 3060: a PyTorch CUDA workload and a request → launch → kernel path.</sub></p>

## What it does

Point xprobe at a running process. It watches one bounded window and tells you
where the time went — on-CPU hotspots, threads waiting for a CPU or blocked,
container CPU throttling, hot syscalls, GPU kernels, and GPU clock limits —
ranked by impact, each with a ready next measurement. The second command then
measures that exact latency: a function, a syscall, a CUDA API call, a kernel,
a copy, an NVTX range, or a whole request → launch → kernel path from a single
capture.

- **Built for AI agents.** Ships as an [Agent Skill](skills/xprobe-measure-latency/SKILL.md)
for Claude Code, Codex, and Cursor. Compact JSON with a `good`/`caution`
quality verdict, so an agent can act on results without reading 100 KB of
events.
- **CPU, Python, and GPU in one tool.** Sampled native and CPython stacks,
eBPF uprobes, syscalls, tracepoints, CPython GC, and CUDA 12/13 activity via
CUPTI, correlated with explicit confidence.
- **Bounded by design.** Every capture is limited by samples or duration,
timeout, and capacity; there is no daemon; CUDA injection is disclosed
before it happens; the raw events are always kept for offline re-analysis.
- **Honest about what it knows.** Sampled shares are estimates, temporal
matches are labeled heuristic, and anything a capture cannot answer is listed
as not covered.

## Install

Expand All @@ -23,7 +51,7 @@ only installation action required from the user:

```bash
npx skills@1 add \
https://github.com/itdevwu/xprobe/tree/v0.6.0/skills/xprobe-measure-latency \
https://github.com/itdevwu/xprobe/tree/v0.6.1/skills/xprobe-measure-latency \
--global
```

Expand Down
2 changes: 1 addition & 1 deletion docs/agent-integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ repairs the matching xprobe CLI itself:

```bash
npx skills@1 add \
https://github.com/itdevwu/xprobe/tree/v0.6.0/skills/xprobe-measure-latency \
https://github.com/itdevwu/xprobe/tree/v0.6.1/skills/xprobe-measure-latency \
--global
```

Expand Down
Binary file added docs/assets/social-preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/assets/social-preview.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions docs/assets/xprobe-flow-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading