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
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `nettrack` BPF module for network I/O monitoring
Config options:
`frequency`: sampling frequency in Hz
`scaled`: report rates in bits/s instead of cumulative bytes
`scaled`: report rates in bits/s instead of interval bytes
- Configurable `nettrack` protocols, directions, metrics, and host/process/peer scopes
- Bounded per-process and per-peer network aggregation with independent peer sampling frequency

### Fixed
- Count successful TCP and UDP payload bytes instead of requested send sizes
- Replace `nettrack` perf-event and ring-buffer boundaries with cumulative map snapshots
- Spawn a separate thread for timer interrupt to fix starvation issues ([189c785](https://github.com/category-labs/manytrace/commit/189c785))

## [0.1.1] - 2025-07-11

### Added
- Initial release with core functionality
- Initial release with core functionality
24 changes: 23 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,28 @@ counters = ["cpu-cycles", "instructions", "cache-misses", "ipc"]
# page-faults, context-switches, cpu-migrations, ipc
```

#### network tracking

collects successful TCP and UDP application payload bytes. counters are aggregated in BPF maps
and sampled from userspace, so network tracking does not use periodic per-CPU interrupts or a
ring buffer. host byte throughput is the low-overhead default; process and peer aggregation are
independent opt-in scopes.

```toml
[bpf.nettrack]
frequency = 5
peer_frequency = 1
scaled = true
protocols = ["tcp", "udp"]
directions = ["send", "receive"]
scopes = ["host"] # add "process" or "peer" for more detail
metrics = ["bytes"] # optional: "operations", "errors"
```

process-name filters require `bpf.thread_tracker`. peer tracks contain remote IP addresses and
ports and may make traces sensitive; their kernel-map and Perfetto cardinality are bounded by
`max_peer_entries` and `max_peer_tracks`.

#### user tracing
![spans](_assets/manytrace_spans.png)

Expand All @@ -103,4 +125,4 @@ random_process_id = true

## License

Licensed under the GNU General Public License ([LICENSE](LICENSE) or https://www.gnu.org/licenses/gpl-3.0.html).
Licensed under the GNU General Public License ([LICENSE](LICENSE) or https://www.gnu.org/licenses/gpl-3.0.html).
Loading
Loading