Skip to content

Commit 7fd35ca

Browse files
committed
release: v0.3.9 β€” process breakdown, tree view, TUI improvements (#86)
1 parent 7c38837 commit 7fd35ca

5 files changed

Lines changed: 32 additions & 6 deletions

File tree

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## v0.3.9
4+
5+
### New Features
6+
7+
- **Group by process** (`--group-by-process`) β€” prefix each stack with `process_name (pid)` to split flamegraphs into per-process sub-trees. Works with all output formats. (#86)
8+
- **TUI process list view** β€” new Processes tab (via Tab key) showing all processes sorted by sample count with CPU% bar visualization. Enter to zoom into a process.
9+
- **TUI expandable call tree** β€” press `t` to toggle tree mode in Top or Processes views. Shows a perf report-style expandable call tree with overhead% and self%, expand/collapse with Enter/h. Expanded state persists across live data refreshes.
10+
- **TUI PID mode toggle** β€” press `p` to toggle PID mode on the fly, splitting the flamegraph by process without restarting.
11+
- **CodeGuru idle stack classification** β€” idle/swapper stacks (pid == 0) now use the `IDLE` counter type, which CodeGuru excludes from CPU and Latency views.
12+
313
## v0.3.8
414

515
### New Features

β€ŽREADME.mdβ€Ž

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ Run `probee` with no arguments or `probee --help` for the full list of options a
8787
- **Automatic termination** β€” stops when `--pid` target or `--cmd` process exits
8888
- **Rust & C++ demangling** β€” via gimli/blazesym
8989
- **BPF-based aggregation** β€” stack counting in kernel to reduce userspace data transfer
90-
- **Group by CPU** β€” per-core flamegraph breakdown
90+
- **Group by CPU / process** β€” per-core or per-PID flamegraph breakdown (`--group-by-cpu`, `--group-by-process`)
9191

9292
---
9393

@@ -116,6 +116,9 @@ sudo probee --time 5000 --html out.html --json out.json --collapse out.txt --svg
116116

117117
# Grouped by CPU
118118
sudo probee --svg profile.svg --frequency 999 --time 2000 --group-by-cpu
119+
120+
# Grouped by process (each PID gets its own flamegraph sub-tree)
121+
sudo probee --svg profile.svg --time 5000 --group-by-process
119122
```
120123

121124
### Targeting
@@ -237,12 +240,25 @@ cargo build --release --no-default-features
237240
| `hjkl` / arrows | Navigate cursor |
238241
| `Enter` | Zoom into selected frame |
239242
| `Esc` | Reset zoom |
243+
| `Tab` | Cycle views: Flamegraph β†’ Top β†’ Processes (β†’ Output) |
244+
| `t` | Toggle tree mode (expandable call tree in Top/Processes) |
245+
| `p` | Toggle PID mode (split flamegraph by process) |
240246
| `/` | Search frames with regex |
241247
| `#` | Highlight selected frame |
242248
| `n` / `N` | Next / previous match |
249+
| `m` | Cycle update mode: Accumulate / Reset / Decay |
243250
| `z` | Freeze / unfreeze live updates |
244251
| `q` or `Ctrl+C` | Quit |
245252

253+
**Views:**
254+
255+
| View | Description |
256+
|------|-------------|
257+
| **Flamegraph** | Interactive flame chart (default) |
258+
| **Top** | Flat function list sorted by overhead. Press `t` for expandable call tree. |
259+
| **Processes** | Process list with CPU% breakdown. `Enter` to zoom into a process. Press `t` for tree. |
260+
| **Output** | Child process stdout/stderr (when using `--cmd` or `--`) |
261+
246262
---
247263

248264
## Stack Unwinding

β€Žprofile-bee-common/Cargo.tomlβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "profile-bee-common"
3-
version = "0.3.8"
3+
version = "0.3.9"
44
edition = "2021"
55
license = "MIT"
66
description = "Shared types between profile-bee userspace and eBPF programs"

β€Žprofile-bee-tui/Cargo.tomlβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "profile-bee-tui"
3-
version = "0.3.8"
3+
version = "0.3.9"
44
edition = "2021"
55
license = "MIT"
66
description = "Terminal-based flamegraph viewer for profile-bee (forked from flamelens)"

β€Žprofile-bee/Cargo.tomlβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "profile-bee"
3-
version = "0.3.8"
3+
version = "0.3.9"
44
edition = "2021"
55
license = "MIT"
66
description = "eBPF-based CPU profiler with flamegraph generation, DWARF unwinding, and interactive TUI"
@@ -20,8 +20,8 @@ include = [
2020
[dependencies]
2121
aya = { git = "https://github.com/Brskt/aya", rev = "9e8f2dc" }
2222
aya-log = { git = "https://github.com/Brskt/aya", rev = "9e8f2dc" }
23-
profile-bee-common = { version = "0.3.8", path = "../profile-bee-common", features=["user"] }
24-
profile-bee-tui = { version = "0.3.8", path = "../profile-bee-tui", optional = true }
23+
profile-bee-common = { version = "0.3.9", path = "../profile-bee-common", features=["user"] }
24+
profile-bee-tui = { version = "0.3.9", path = "../profile-bee-tui", optional = true }
2525
anyhow = "1.0.42"
2626
clap = { version = "4.0", features = ["derive"] }
2727
tokio = { version = "1.18", features = ["macros", "rt", "rt-multi-thread", "net", "signal", "time", "process"] }

0 commit comments

Comments
Β (0)