# eunomia-bpf/bpf-developer-tutorial architecture

> Architecture diagram of the GitHub repository eunomia-bpf/bpf-developer-tutorial, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/eunomia-bpf/bpf-developer-tutorial
- Repository: https://github.com/eunomia-bpf/bpf-developer-tutorial

## Overview

This repository is an eBPF developer tutorial, not one integrated application: its numbered lessons and feature directories contain independent examples and tools. The principal workflow is a learner selecting an example, configuring and running its userspace and BPF components, then observing or affecting kernel, process, network, or GPU behavior. The README documents the broad capabilities; sampled code confirms the profiling event loop and fsession latency event production. Most lesson internals were not sampled, so the graph treats them as separate examples and avoids implying calls between them.

Main entry points: [`src/12-profile/src/main.rs`](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/main.rs) (CPU Profiler), [`src/52-fsession-latency/fsession_latency.c`](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/52-fsession-latency/fsession_latency.c) (Slow Read Tracing), [`src/1-helloworld/minimal.bpf.c`](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/1-helloworld/minimal.bpf.c) (Hello World), [`src/2-kprobe-unlink`](https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/2-kprobe-unlink) (Basic Tracing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_start["Getting Started"]
  node_hello["Hello World<br/>[minimal.bpf.c]"]
  node_basictrace["Basic Tracing"]
  node_bootstrap["libbpf Bootstrap"]
end

subgraph group_observe["Tracing and Observability"]
  node_profile["CPU Profiler<br/>[main.rs]"]
  node_profileevents["Profile Events<br/>[event.rs]"]
  node_profileperf["Perf Sampling<br/>[perf.rs]"]
  node_profilelinux["Syscall Support<br/>[syscall.rs]"]
  node_memleak["Memory Leak Tool<br/>[memleak.c]"]
  node_latency["Function Latency<br/>[funclatency.c]"]
  node_fsession["Slow Read Tracing<br/>[fsession_latency.c]"]
  node_fsessionbpf["Read Probe"]
  node_energy["Energy Monitoring<br/>[energy_monitor.c]"]
  node_cuda["CUDA Tracing<br/>[cuda_events.c]"]
end

subgraph group_network["Networking"]
  node_networklessons["Network Examples"]
  node_loadbalancer["XDP Load Balancer<br/>[xdp_lb.bpf.c]"]
  node_pacer["Egress Pacer<br/>[egress_pacer.c]"]
end

subgraph group_advanced["Security and Advanced Features"]
  node_replace["Text Replacement<br/>[textreplace2.c]"]
  node_sslsniff["TLS Sniffer<br/>[sslsniff.c]"]
  node_execinspect["Exec Inspector"]
  node_scheduler["Nest Scheduler<br/>[scx_nest.bpf.c]"]
  node_features["BPF Features"]
end

node_learner(("Developer"))

node_learner -->|"explores"| node_hello
node_learner -->|"explores"| node_basictrace
node_learner -->|"explores"| node_bootstrap
node_learner -->|"runs"| node_profile
node_profile -->|"initializes sampling"| node_profileperf
node_profile -->|"handles ring events"| node_profileevents
node_profile -->|"uses support"| node_profilelinux
node_learner -->|"explores"| node_memleak
node_learner -->|"explores"| node_latency
node_learner -->|"runs"| node_fsession
node_fsession -.->|"loads BPF program"| node_fsessionbpf
node_learner -->|"explores"| node_energy
node_learner -->|"explores"| node_cuda
node_learner -->|"explores"| node_networklessons
node_learner -->|"explores"| node_loadbalancer
node_learner -->|"explores"| node_pacer
node_learner -->|"explores"| node_replace
node_learner -->|"explores"| node_sslsniff
node_learner -->|"explores"| node_execinspect
node_learner -->|"explores"| node_scheduler
node_learner -->|"explores"| node_features

click node_hello "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/1-helloworld/minimal.bpf.c"
click node_basictrace "https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/2-kprobe-unlink"
click node_bootstrap "https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/11-bootstrap"
click node_profile "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/main.rs"
click node_profileevents "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/event.rs"
click node_profileperf "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/perf.rs"
click node_profilelinux "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/syscall.rs"
click node_memleak "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/16-memleak/memleak.c"
click node_latency "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/33-funclatency/funclatency.c"
click node_fsession "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/52-fsession-latency/fsession_latency.c"
click node_fsessionbpf "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/52-fsession-latency/fsession_latency.bpf.c"
click node_energy "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/48-energy/energy_monitor.c"
click node_cuda "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/47-cuda-events/cuda_events.c"
click node_networklessons "https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/23-http"
click node_loadbalancer "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/42-xdp-loadbalancer/xdp_lb.bpf.c"
click node_pacer "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/53-egress-pacer/egress_pacer.c"
click node_replace "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/28-detach/textreplace2.c"
click node_sslsniff "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/30-sslsniff/sslsniff.c"
click node_execinspect "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/54-exec-image-inspector/exec_image_inspector.c"
click node_scheduler "https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/45-scx-nest/scx_nest.bpf.c"
click node_features "https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/features"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_hello,node_basictrace,node_bootstrap toneBlue
class node_profile,node_profileevents,node_profileperf,node_profilelinux,node_memleak,node_latency,node_fsession,node_fsessionbpf,node_energy,node_cuda toneAmber
class node_networklessons,node_loadbalancer,node_pacer toneMint
class node_replace,node_sslsniff,node_execinspect,node_scheduler,node_features toneRose
class node_learner toneIndigo
```

## Components

### Getting Started

- [Hello World](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/1-helloworld/minimal.bpf.c): `src/1-helloworld/minimal.bpf.c`
- [Basic Tracing](https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/2-kprobe-unlink): `src/2-kprobe-unlink`
- [libbpf Bootstrap](https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/11-bootstrap): `src/11-bootstrap`

### Tracing and Observability

- [CPU Profiler](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/main.rs): `src/12-profile/src/main.rs`
- [Profile Events](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/event.rs): `src/12-profile/src/event.rs`
- [Perf Sampling](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/perf.rs): `src/12-profile/src/perf.rs`
- [Syscall Support](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/12-profile/src/syscall.rs): `src/12-profile/src/syscall.rs`
- [Memory Leak Tool](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/16-memleak/memleak.c): `src/16-memleak/memleak.c`
- [Function Latency](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/33-funclatency/funclatency.c): `src/33-funclatency/funclatency.c`
- [Slow Read Tracing](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/52-fsession-latency/fsession_latency.c): `src/52-fsession-latency/fsession_latency.c`
- [Read Probe](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/52-fsession-latency/fsession_latency.bpf.c): `src/52-fsession-latency/fsession_latency.bpf.c`
- [Energy Monitoring](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/48-energy/energy_monitor.c): `src/48-energy/energy_monitor.c`
- [CUDA Tracing](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/47-cuda-events/cuda_events.c): `src/47-cuda-events/cuda_events.c`

### Networking

- [Network Examples](https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/23-http): `src/23-http`
- [XDP Load Balancer](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/42-xdp-loadbalancer/xdp_lb.bpf.c): `src/42-xdp-loadbalancer/xdp_lb.bpf.c`
- [Egress Pacer](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/53-egress-pacer/egress_pacer.c): `src/53-egress-pacer/egress_pacer.c`

### Security and Advanced Features

- [Text Replacement](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/28-detach/textreplace2.c): `src/28-detach/textreplace2.c`
- [TLS Sniffer](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/30-sslsniff/sslsniff.c): `src/30-sslsniff/sslsniff.c`
- [Exec Inspector](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/54-exec-image-inspector/exec_image_inspector.c): `src/54-exec-image-inspector/exec_image_inspector.c`
- [Nest Scheduler](https://github.com/eunomia-bpf/bpf-developer-tutorial/blob/main/src/45-scx-nest/scx_nest.bpf.c): `src/45-scx-nest/scx_nest.bpf.c`
- [BPF Features](https://github.com/eunomia-bpf/bpf-developer-tutorial/tree/main/src/features): `src/features`

### Other components

- **Developer**

## Connections

- Developer → Hello World: explores (evidence: `README.md`)
- Developer → Basic Tracing: explores (evidence: `README.md`)
- Developer → libbpf Bootstrap: explores (evidence: `README.md`)
- Developer → CPU Profiler: runs (evidence: `README.md`)
- CPU Profiler → Perf Sampling: initializes sampling (evidence: `src/12-profile/src/main.rs`)
- CPU Profiler → Profile Events: handles ring events (evidence: `src/12-profile/src/main.rs`)
- CPU Profiler → Syscall Support: uses support (evidence: `src/12-profile/src/main.rs`)
- Developer → Memory Leak Tool: explores (evidence: `README.md`)
- Developer → Function Latency: explores (evidence: `README.md`)
- Developer → Slow Read Tracing: runs (evidence: `README.md`)
- Slow Read Tracing → Read Probe: loads BPF program
- Developer → Energy Monitoring: explores (evidence: `README.md`)
- Developer → CUDA Tracing: explores (evidence: `README.md`)
- Developer → Network Examples: explores (evidence: `README.md`)
- Developer → XDP Load Balancer: explores (evidence: `README.md`)
- Developer → Egress Pacer: explores (evidence: `README.md`)
- Developer → Text Replacement: explores (evidence: `README.md`)
- Developer → TLS Sniffer: explores (evidence: `README.md`)
- Developer → Exec Inspector: explores (evidence: `README.md`)
- Developer → Nest Scheduler: explores (evidence: `README.md`)
- Developer → BPF Features: explores (evidence: `README.md`)
