Commit Graph

249 Commits

Author SHA1 Message Date
云微
2cdcd8b0de Make tutorials 50–53 safer to operate (#225)
* Make tutorials 50-53 safer to operate

* Make pacer conflict recovery interface-safe

* Keep tutorial prose on the user path

* Allow focused excerpts for long user-space loaders

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-22 01:36:44 -07:00
yuxi4096
b0d2c80dd5 nini 2026-07-21 18:22:56 -07:00
github-actions[bot]
41c2025bb3 docs: auto-generate documentation 2026-07-22 01:18:23 +00:00
yuxi4096
9ef395bd26 docs: normalize punctuation in tutorials 50 through 54 2026-07-21 18:17:31 -07:00
yuxi4096
4ce52b24df docs: improve tutorials 50 through 54 2026-07-21 18:05:31 -07:00
云微
ca1267d82a Add advanced eBPF tutorials 51–54 and tutorial agent skills (#220)
* Add targeted TCP connection quarantine tool

* Document TCP quarantine workflow

* Refresh package indexes before CI install

* Document TCP quarantine namespace scope

* Require BPF events for TCP iterator

* Add production fsession latency tracer

* Document fsession latency workflow

* Reject empty fsession CLI values

* Preserve successful fsession exit status

* Document fsession deadline regression test

* Drain fsession events before summary

* Document fsession PID and shutdown semantics

* Simplify fsession polling control flow

* Add bounded BPF egress pacer tutorial

* Test queued packet cleanup on signal

* Document the BPF egress pacer

* Polish and review the BPF egress pacer

* Refactor egress pacer option parsing

* Add executable image inspector lesson

* Build the exec image inspector in CI

* Document executable image inspection

* Handle re-exec chains in the image inspector

* Polish exec image inspector guidance

* Reduce exec inspector wait complexity

* Rewrite the egress pacer tutorial

* Rewrite the exec image inspector tutorial

* Polish the exec image inspector tutorial

* Correct the egress pacer tutorial

* Make the exec tutorial Chinese natural

* Fix egress tutorial prose checks

* Finish the exec tutorial style pass

* Clarify exec tutorial runtime evidence

* Polish exec tutorial scope wording

* Rewrite the egress pacer tutorial for readers

* Regenerate tutorial indexes

* Teach the egress pacer component by component

* Use standard Markdown in the egress tutorial

* Strengthen the egress pacer tutorial narrative

* jiji

* Use positive framing in the egress tutorial

* Rewrite the exec image inspector tutorial

* Rewrite the TCP quarantine tutorial

* Add the egress pacer lifecycle diagram

* Refresh TCP tutorial indexes

* Add the exec image inspection flow diagram

* Use one source directory link

* Rewrite the fsession latency tutorial

* Add fsession feature background

* Add BPF qdisc feature background

* Add TCP iterator feature background

* Add exec inspection feature background

* Require feature background in tutorial openings

* Polish fsession background prose

* Simplify repository tutorial skills

* Update exec inspector tooling revisions

* Restructure tutorials 51-54 following advanced guideline

- Update SKILL.md with strict section ordering and "why" requirements
- Rewrite README.zh.md for tutorials 51-54:
  - Add background sections explaining why traditional approaches fail
  - Move compilation/execution sections after code analysis
  - Add high-level mechanism explanation before code
  - Use paragraph style instead of bullet lists

* Consolidate skill guidelines and remove duplicates

- Update write-bpf-production-tutorial skill to reference 47, 48, 49
- Add structure requirements section with "Why" section emphasis
- Remove duplicate advanced-tutorial-guidelines.md (use scripts/guideline_advance.md instead)

* Rewrite English READMEs 51-54 to match Chinese structure

Restructure all four English tutorials to match their Chinese counterparts:
- Add "Why this approach is needed" sections explaining traditional limitations
- Add high-level mechanism sections before code
- Move compilation/execution sections after code analysis
- Add environment requirements tables
- Use consistent section ordering across all tutorials

* Regenerate TOC after tutorial title changes

Run generate_toc.py to sync SUMMARY and README files with
updated tutorial titles from the restructuring.

* Regenerate compatibility tables after title changes

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-19 19:34:09 -07:00
云微
c054586a39 Fix verified eBPF tutorial examples and instructions (#211)
* docs: fix XDP stub compile command

* docs: link hardirqs example headers

* fix: capture the actual TCP header length

* docs: refresh generated tutorial index

* Revert "docs: refresh generated tutorial index"

This reverts commit 6a2418a277.

* fix: print TCP header length as unsigned

* docs: sync TCP header debug format

* fix: address final tutorial portability review

* docs: auto-generate documentation

* Revert "docs: auto-generate documentation"

This reverts commit be93763602.

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-14 14:14:09 -07:00
云微
929aec4441 build: stop tracking generated tutorial artifacts (#215)
* build: stop tracking generated tutorial artifacts

* build: avoid duplicating the goroutine offset

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-14 06:32:13 -07:00
云微
b1d81046d7 ci: cover all libbpf Makefile tutorials (#213)
* ci: cover all libbpf Makefile tutorials

* ci: build modules against HWE headers

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-14 05:25:47 -07:00
云微
37375ff87e docs: add generated tutorial compatibility matrix (#212)
* docs: declare tutorial compatibility requirements

* docs: generate tutorial compatibility matrix

* fix: correct BPF Arena minimum kernel

* refactor: simplify compatibility validation

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-14 05:00:48 -07:00
云微
e08f604769 Fix bilingual tutorial indexes and internal links (#209)
* Fix bilingual tutorial index generation

* Check relative Markdown links in CI

* Harden documentation regression checks

* Reduce link parser complexity

* Run link checks for every repository change

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-14 04:10:51 -07:00
github-actions[bot]
8bfc912d6a docs: auto-generate documentation 2026-07-14 10:58:52 +00:00
云微
39e3f59119 ci: support Rust 1.97 and modernize workflows (#210)
* Modernize workflow actions and permissions

* Test the fentry tutorial in CI

* Support Rust 1.97 symbol mangling

* Limit documentation writes to main

* Harden Rust symbol resolution

---------

Co-authored-by: LinuxDev9002 <i@littlefisher.me>
2026-07-14 03:58:41 -07:00
云微
3a722c03d5 feat: add tcx and bpf token tutorials (#203)
* feat: add tcx and bpf token tutorials

* docs: auto-generate documentation

* docs: rewrite tcx and bpf_token tutorials with richer content and consistent style

Rewrote all 4 README files (EN/ZH for both tutorials) to match the
existing tutorial style with detailed background, full code listings,
step-by-step explanations, comparison tables, and proper references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* style: replace em dashes with colons, commas, and parentheses

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* docs: auto-generate documentation

* ci: add tcx and bpf_token builds to CI; simplify execl in token_userns_demo

- Add make targets for src/50-tcx and src/features/bpf_token to the
  test-libbpf CI workflow.
- Replace four separate execl() calls with a single execv() using a
  dynamically built argv array, reducing complexity and eliminating
  CodeFactor command-injection false positives.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* ci: fix mkdocs path in trigger-sync workflow

Use .venv/bin/mkdocs instead of bare mkdocs, since make install
puts it inside a virtualenv.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: LinuxDev9002 <linuxdev8883@example.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:23:23 -07:00
github-actions[bot]
ee6d522e40 docs: auto-generate documentation 2026-03-06 22:49:21 +00:00
LinuxDev9002
f5564cfa77 fix: Update links in README files for kprobe examples and clarify base program descriptions 2026-03-06 14:47:38 -08:00
KEROLT
d06ec2f281 fix: Correct tutorial 12 profile folded stack format (#202)
- Reorder stack processing to place kernel frames at bottom and user frames on top
- Match expected flamegraph.pl input format
- Simplify output to standard folded format: "comm;stack1;stack2 count"
- Remove timestamp and CPU metadata
2026-02-20 22:17:08 -08:00
Copilot
bb994bf436 Fix curl hanging in XDP load balancer: backend servers reject mismatched Host headers (#198)
* Initial plan

* Add simple HTTP server and update docs to fix curl hanging issue

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Fix code review issues: remove unnecessary shutdown() and fix spacing

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Add test script to verify HTTP servers handle mismatched Host headers

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Add comprehensive solution documentation for curl hanging issue

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Update src/42-xdp-loadbalancer/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: 云微 <1067852565@qq.com>

* Update src/42-xdp-loadbalancer/README.zh.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: 云微 <1067852565@qq.com>

* Update src/42-xdp-loadbalancer/SOLUTION.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: 云微 <1067852565@qq.com>

* Delete src/42-xdp-loadbalancer/__pycache__/simple_http_server.cpython-312.pyc

Signed-off-by: 云微 <1067852565@qq.com>

* Delete src/42-xdp-loadbalancer/SOLUTION.md

Signed-off-by: 云微 <1067852565@qq.com>

---------

Signed-off-by: 云微 <1067852565@qq.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>
Co-authored-by: 云微 <1067852565@qq.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-12 06:20:14 -08:00
Copilot
8e4e94c346 Remove incorrect cgroup filtering from runqlat (#201)
* Initial plan

* Fix incorrect cgroup filtering in runqlat - remove checks for waker instead of wakee

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Clarify that filter_cg is deprecated and has no effect

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Update docs to show DEPRECATED comment in code snippets and mention --filter_cg is no-op

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Remove filter_cg and cgroup_map completely from code and docs

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>
2026-02-11 22:51:53 -08:00
Copilot
251aa12262 Add troubleshooting guide for fentry attachment failures in 3-fentry-unlink (#200)
* Initial plan

* Add troubleshooting section for fentry-unlink example with kernel compatibility guidance

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>
2026-02-10 15:51:54 -08:00
Copilot
1d9958487a Fix Rust uprobe tutorial and add CI tests in dedicated workflow (#197)
* Initial plan

* Fix issue #173: Update Rust uprobe documentation to use debug build and correct function symbol

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Add CI tests for Rust uprobe tutorial (issue #173)

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Update src/37-uprobe-rust/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: 云微 <1067852565@qq.com>

* Update src/37-uprobe-rust/README.zh.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: 云微 <1067852565@qq.com>

* Use wildcard patterns for Rust symbol matching in bpftrace examples

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Add CI test to verify bpftrace can attach to Rust uprobe

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Separate bpftrace tests into new test-bpftrace.yml workflow

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

---------

Signed-off-by: 云微 <1067852565@qq.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>
Co-authored-by: 云微 <1067852565@qq.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-10 12:57:01 -08:00
Copilot
95377603c6 Fix tutorial 1 compilation with ecc by using vmlinux.h (#199)
* Initial plan

* Fix tutorial 1 compilation by including vmlinux.h

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

* Update README documentation to reference vmlinux.h consistently

Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: yunwei37 <34985212+yunwei37@users.noreply.github.com>
2026-02-10 12:04:28 -08:00
github-actions[bot]
98682eed04 docs: auto-generate documentation 2026-02-01 00:34:59 +00:00
github-actions[bot]
9d08062cb7 fix: Update struct references from config to dynptr_cfg in README files 2026-02-01 00:34:43 +00:00
github-actions[bot]
c42ba4f9ab Add BPF dynptr TC demo implementation
- Implement BPF program for TC ingress using dynptrs to safely parse packet headers and manage variable-length ringbuf records.
- Create user-space loader for the BPF program, allowing configuration of blocked ports and snapshot lengths for TCP payloads.
- Define necessary data structures and constants in header file for both BPF and user-space contexts.
- Add a comprehensive test script to validate functionality, including basic packet capture and port blocking tests.
2026-02-01 00:34:43 +00:00
github-actions[bot]
2fa73cbe3f docs: auto-generate documentation 2026-01-31 05:55:36 +00:00
github-actions[bot]
342acab9af docs: Update README and SUMMARY files to include Intel NPU kernel driver lessons and cgroup policy control
feat: Enhance TOC generation script to include non-numbered directories with .config files
chore: Add .config file for cgroup-based policy control
2026-01-31 05:55:22 +00:00
github-actions[bot]
6d3ba3ea34 feat: Add cgroup eBPF policy guard with TCP, device, and sysctl controls
- Implemented cgroup-based access control using eBPF with three main functionalities:
  1. Block TCP connections to specified ports.
  2. Deny access to specified devices.
  3. Control sysctl read/write operations.
- Added necessary Makefile and documentation for building and running the policy guard.
2026-01-31 05:37:35 +00:00
Littlefisher
42884e3cef docs: Revise README files for clarity on extending kernel behavior with BPF struct_ops 2026-01-11 23:39:46 -08:00
Littlefisher
34f690385e docs: Update README files to include information on extending GPU driver behavior with eBPF and the gpu_ext project 2026-01-11 23:27:20 -08:00
Littlefisher
48afb3265d docs: Enhance README files with examples of GPU scheduling and memory offloading using BPF struct_ops 2026-01-11 02:41:31 -08:00
github-actions[bot]
c1d56c531f docs: auto-generate documentation 2026-01-11 10:28:35 +00:00
Littlefisher
cbc6658f80 Add Chinese translation for eBPF tutorial on BPF struct_ops
This commit introduces a comprehensive Chinese translation of the eBPF tutorial focused on using BPF struct_ops to extend kernel subsystems. The tutorial covers the challenges of kernel development, the benefits of using BPF struct_ops, and provides detailed examples of implementing a kernel module, BPF program, and user-space loader. The content aims to enhance accessibility for Chinese-speaking developers interested in eBPF and kernel programming.
2026-01-11 02:28:21 -08:00
github-actions[bot]
8372e9bf1c feat: Enhance test_3 to safely read from kernel buffer and return length 2025-11-16 06:19:28 +00:00
github-actions[bot]
86c2f723f0 feat: Update struct_ops to change test_3 return type to int and add BPF helper support 2025-11-15 23:54:20 +00:00
github-actions[bot]
540ce67c47 fix: Remove bpf_printk calls from struct_ops BPF programs to comply with restrictions 2025-11-15 22:24:51 +00:00
github-actions[bot]
a1430cf552 docs: auto-generate documentation 2025-11-12 15:39:28 +00:00
Littlefisher
fd03b86248 feat: Update TOC generation functions to include output file directory parameter and adjust lesson paths in SUMMARY files 2025-11-12 07:39:14 -08:00
github-actions[bot]
78bad8296c docs: auto-generate documentation 2025-11-10 18:31:03 +00:00
github-actions[bot]
5ce10be3e1 feat: Implement BPF struct_ops example with custom kernel module and user-space loader 2025-11-10 18:30:48 +00:00
Yinzuo Jiang
ca927133b7 fix(32-wallclock-profiler): use absolute path to find tool paths (#186)
Problem:

`Path(__file__)` can be ".", in such case `self.oncpu_tool` is "oncputime", which can not be found by the shell.

Solution:

Translate `Path(__file__)` to absolute path.
2025-11-09 10:20:35 -08:00
Littlefisher
2c9870bf83 feat: Add initial implementation of struct_ops BPF program and kernel module with kfunc support 2025-11-08 15:51:36 -08:00
github-actions[bot]
134ee88067 docs: auto-generate documentation 2025-11-04 07:16:27 +00:00
Littlefisher
01ee4ea9ed fix: update image links to use absolute URLs in README and SUMMARY templates 2025-11-03 23:16:14 -08:00
github-actions[bot]
81be963985 docs: auto-generate documentation 2025-11-04 06:14:12 +00:00
Littlefisher
75ec466daa feat: Add book recommendation for eBPF observability and introduce configuration for GPU flamegraph 2025-11-03 22:13:59 -08:00
github-actions[bot]
b9b82fae6d docs: auto-generate documentation 2025-11-04 05:39:43 +00:00
Littlefisher
285e4f2579 feat: Add book recommendations and promotional content for eBPF learning resources 2025-11-03 21:39:29 -08:00
Littlefisher
cf6abdeaf2 Implement feature X to enhance user experience and optimize performance 2025-10-28 20:35:37 -07:00
Littlefisher
5afd7fd348 Enhance Flamegraph Documentation and GPU Profiling Scripts
- Added an example flamegraph for Qwen3 LLM inference, highlighting key insights and performance bottlenecks.
- Updated README.md to include detailed explanations of CPU and GPU profiling results, emphasizing the correlation between CPU stacks and GPU kernels.
- Modified gpuperf.py to ensure absolute paths are used for output files, improving reliability across different working directories.
- Enhanced merge_gpu_cpu_trace.py to strip ANSI escape sequences from CPU stack traces, ensuring cleaner output for analysis.
- Introduced a new SVG file for the Qwen3 flamegraph, providing a visual representation of profiling data with interactive features.
2025-10-28 13:23:16 -07:00