From c572e7f511c04719106bccffb0295bbf17c76102 Mon Sep 17 00:00:00 2001 From: yunwei37 <1067852565@qq.com> Date: Tue, 6 Dec 2022 16:10:45 +0800 Subject: [PATCH] fix bpf programs with useless attach --- 1-helloworld/.gitignore | 1 + {11-llcstat => 11-bootstrap}/README.md | 0 17-biopattern/biolatency.md | 121 --------------- 17-biopattern/biostacks.md | 100 ------------- 17-biopattern/bitesize.md | 63 -------- 18-further-reading/README.md | 82 +---------- 2-kprobe-unlink/.gitignore | 1 + 2-kprobe-unlink/README.md | 11 +- 20-tc/README.md | 92 ++++++++---- 3-fentry-unlink/.gitignore | 1 + 3-fentry-unlink/README.md | 9 ++ 4-opensnoop/README.md | 70 +++++---- 4-opensnoop/opensnoop.bpf.c | 22 +-- 4-opensnoop/opensnoop.h | 21 --- 5-uprobe-bashreadline/README.md | 17 +-- 5-uprobe-bashreadline/bashreadline.bpf.c | 8 +- 6-sigsnoop/README.md | 5 +- 6-sigsnoop/sigsnoop.bpf.c | 30 ---- 6-sigsnoop/sigsnoop.md | 74 ---------- 7-execsnoop/README.md | 138 ++++-------------- 7-execsnoop/{execsnoop.bpf.h => execsnoop.h} | 6 - 8-runqslower/README.md | 10 ++ .../{core_fixes.h => core_fixes.bpf.h} | 0 8-runqslower/runqslower.bpf.c | 4 +- .../{runqslower.bpf.h => runqslower.h} | 0 9-runqlat/bits.bpf copy.h | 31 ---- 9-runqlat/maps.bpf copy.h | 26 ---- imgs/ebpf-chatgpt-signal.png | Bin 0 -> 94878 bytes imgs/ebpf-chatgpt-signal2.png | Bin 0 -> 78899 bytes 29 files changed, 183 insertions(+), 760 deletions(-) rename {11-llcstat => 11-bootstrap}/README.md (100%) delete mode 100644 17-biopattern/biolatency.md delete mode 100644 17-biopattern/biostacks.md delete mode 100644 17-biopattern/bitesize.md delete mode 100644 4-opensnoop/opensnoop.h rename 7-execsnoop/{execsnoop.bpf.h => execsnoop.h} (56%) rename 8-runqslower/{core_fixes.h => core_fixes.bpf.h} (100%) rename 8-runqslower/{runqslower.bpf.h => runqslower.h} (100%) delete mode 100644 9-runqlat/bits.bpf copy.h delete mode 100644 9-runqlat/maps.bpf copy.h create mode 100644 imgs/ebpf-chatgpt-signal.png create mode 100644 imgs/ebpf-chatgpt-signal2.png diff --git a/1-helloworld/.gitignore b/1-helloworld/.gitignore index 7d5aebf..f0f4c81 100644 --- a/1-helloworld/.gitignore +++ b/1-helloworld/.gitignore @@ -4,3 +4,4 @@ package.json *.skel.json *.skel.yaml package.yaml +ecli diff --git a/11-llcstat/README.md b/11-bootstrap/README.md similarity index 100% rename from 11-llcstat/README.md rename to 11-bootstrap/README.md diff --git a/17-biopattern/biolatency.md b/17-biopattern/biolatency.md deleted file mode 100644 index 423fca2..0000000 --- a/17-biopattern/biolatency.md +++ /dev/null @@ -1,121 +0,0 @@ -## eBPF 入门实践教程:编写 eBPF 程序 Biolatency: 统计系统中发生的I/O事件 - -### 背景 - -Biolatency 可以统计在该工具运行后系统中发生的I/O事件个数,并且计算I/O事件在不同时间段内的分布情况,以 -直方图的形式展现给用户。 - -### 实现原理 - -Biolatency 主要通过 tracepoint 实现,其在 block_rq_insert, block_rq_issue, -block_rq_complete 挂载点下设置了处理函数。在 block_rq_insert 和 block_rq_issue 挂载点下, -Biolatency 会将IO操作发生时的request queue和时间计入map中。 -```c -int trace_rq_start(struct request *rq, int issue) -{ - if (issue && targ_queued && BPF_CORE_READ(rq->q, elevator)) - return 0; - - u64 ts = bpf_ktime_get_ns(); - - if (filter_dev) { - struct gendisk *disk = get_disk(rq); - u32 dev; - - dev = disk ? MKDEV(BPF_CORE_READ(disk, major), - BPF_CORE_READ(disk, first_minor)) : 0; - if (targ_dev != dev) - return 0; - } - bpf_map_update_elem(&start, &rq, &ts, 0); - return 0; -} - -SEC("tp_btf/block_rq_insert") -int block_rq_insert(u64 *ctx) -{ - if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0)) - return 0; - - if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 11, 0)) - return trace_rq_start((void *)ctx[1], false); - else - return trace_rq_start((void *)ctx[0], false); -} - -SEC("tp_btf/block_rq_issue") -int block_rq_issue(u64 *ctx) -{ - if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0)) - return 0; - - if (LINUX_KERNEL_VERSION < KERNEL_VERSION(5, 11, 0)) - return trace_rq_start((void *)ctx[1], true); - else - return trace_rq_start((void *)ctx[0], true); -} - -``` -在block_rq_complete 挂载点下,Biolatency 会根据 request queue 从map中读取 -上一次操作发生的时间,然后计算与当前时间的差值来判断其在直方图中存在的区域,将该区域内的IO操作 -计数加一。 -```c -SEC("tp_btf/block_rq_complete") -int BPF_PROG(block_rq_complete, struct request *rq, int error, - unsigned int nr_bytes) -{ - if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0)) - return 0; - - u64 slot, *tsp, ts = bpf_ktime_get_ns(); - struct hist_key hkey = {}; - struct hist *histp; - s64 delta; - - tsp = bpf_map_lookup_elem(&start, &rq); - if (!tsp) - return 0; - delta = (s64)(ts - *tsp); - if (delta < 0) - goto cleanup; - - if (targ_per_disk) { - struct gendisk *disk = get_disk(rq); - - hkey.dev = disk ? MKDEV(BPF_CORE_READ(disk, major), - BPF_CORE_READ(disk, first_minor)) : 0; - } - if (targ_per_flag) - hkey.cmd_flags = rq->cmd_flags; - - histp = bpf_map_lookup_elem(&hists, &hkey); - if (!histp) { - bpf_map_update_elem(&hists, &hkey, &initial_hist, 0); - histp = bpf_map_lookup_elem(&hists, &hkey); - if (!histp) - goto cleanup; - } - - if (targ_ms) - delta /= 1000000U; - else - delta /= 1000U; - slot = log2l(delta); - if (slot >= MAX_SLOTS) - slot = MAX_SLOTS - 1; - __sync_fetch_and_add(&histp->slots[slot], 1); - -cleanup: - bpf_map_delete_elem(&start, &rq); - return 0; -} - -``` -当用户中止程序时,用户态程序会读取直方图map中的数据,并打印呈现。 - -### Eunomia中使用方式 - - -### 总结 -Biolatency 通过 tracepoint 挂载点实现了对IO事件个数的统计,并且能以直方图的 -形式进行展现,可以方便开发者了解系统I/O事件情况。 \ No newline at end of file diff --git a/17-biopattern/biostacks.md b/17-biopattern/biostacks.md deleted file mode 100644 index 3fb08fd..0000000 --- a/17-biopattern/biostacks.md +++ /dev/null @@ -1,100 +0,0 @@ -## eBPF 入门实践教程:编写 eBPF 程序 Biostacks: 监控内核 I/O 操作耗时 - - -### 背景 -由于有些磁盘I/O操作不是直接由应用发起的,比如元数据读写,因此有些直接捕捉磁盘I/O操作信息可能 -会有一些无法解释的I/O操作发生。为此,Biostacks 会直接追踪内核中初始化I/O操作的函数,并将磁 -盘I/O操作耗时以直方图的形式展现。 - -### 实现原理 -Biostacks 的挂载点为 fentry/blk_account_io_start, kprobe/blk_account_io_merge_bio 和 -fentry/blk_account_io_done。fentry/blk_account_io_start 和 kprobe/blk_account_io_merge_bio -挂载点均时内核需要发起I/O操作中必经的初始化路径。在经过此处时,Biostacks 会根据 request queue ,将数据存入 -map中。 -```c -static __always_inline -int trace_start(void *ctx, struct request *rq, bool merge_bio) -{ - struct internal_rqinfo *i_rqinfop = NULL, i_rqinfo = {}; - struct gendisk *disk = BPF_CORE_READ(rq, rq_disk); - dev_t dev; - - dev = disk ? MKDEV(BPF_CORE_READ(disk, major), - BPF_CORE_READ(disk, first_minor)) : 0; - if (targ_dev != -1 && targ_dev != dev) - return 0; - - if (merge_bio) - i_rqinfop = bpf_map_lookup_elem(&rqinfos, &rq); - if (!i_rqinfop) - i_rqinfop = &i_rqinfo; - - i_rqinfop->start_ts = bpf_ktime_get_ns(); - i_rqinfop->rqinfo.pid = bpf_get_current_pid_tgid(); - i_rqinfop->rqinfo.kern_stack_size = - bpf_get_stack(ctx, i_rqinfop->rqinfo.kern_stack, - sizeof(i_rqinfop->rqinfo.kern_stack), 0); - bpf_get_current_comm(&i_rqinfop->rqinfo.comm, - sizeof(&i_rqinfop->rqinfo.comm)); - i_rqinfop->rqinfo.dev = dev; - - if (i_rqinfop == &i_rqinfo) - bpf_map_update_elem(&rqinfos, &rq, i_rqinfop, 0); - return 0; -} - -SEC("fentry/blk_account_io_start") -int BPF_PROG(blk_account_io_start, struct request *rq) -{ - return trace_start(ctx, rq, false); -} - -SEC("kprobe/blk_account_io_merge_bio") -int BPF_KPROBE(blk_account_io_merge_bio, struct request *rq) -{ - return trace_start(ctx, rq, true); -} - -``` -在I/O操作完成后,fentry/blk_account_io_done 下的处理函数会从map中读取之前存入的信息,根据当下时间 -记录时间差值,得到I/O操作的耗时信息,并更新到存储直方图数据的map中。 -```c -SEC("fentry/blk_account_io_done") -int BPF_PROG(blk_account_io_done, struct request *rq) -{ - u64 slot, ts = bpf_ktime_get_ns(); - struct internal_rqinfo *i_rqinfop; - struct rqinfo *rqinfop; - struct hist *histp; - s64 delta; - - i_rqinfop = bpf_map_lookup_elem(&rqinfos, &rq); - if (!i_rqinfop) - return 0; - delta = (s64)(ts - i_rqinfop->start_ts); - if (delta < 0) - goto cleanup; - histp = bpf_map_lookup_or_try_init(&hists, &i_rqinfop->rqinfo, &zero); - if (!histp) - goto cleanup; - if (targ_ms) - delta /= 1000000U; - else - delta /= 1000U; - slot = log2l(delta); - if (slot >= MAX_SLOTS) - slot = MAX_SLOTS - 1; - __sync_fetch_and_add(&histp->slots[slot], 1); - -cleanup: - bpf_map_delete_elem(&rqinfos, &rq); - return 0; -} -``` -在用户输入程序退出指令后,其用户态程序会将直方图map中的信息读出并打印。 - -### Eunomia中使用方式 - - -### 总结 -Biostacks 从源头实现了对I/O操作的追踪,可以极大的方便我们掌握磁盘I/O情况。 \ No newline at end of file diff --git a/17-biopattern/bitesize.md b/17-biopattern/bitesize.md deleted file mode 100644 index dd4a0be..0000000 --- a/17-biopattern/bitesize.md +++ /dev/null @@ -1,63 +0,0 @@ -## eBPF 入门实践教程:编写 eBPF 程序 Bitesize: 监控块设备 I/O - -### 背景 - -为了能更好的获得 I/O 操作需要的磁盘块大小相关信息,Bitesize 工具被开发。它可以在启动后追踪 -不同进程所需要的块大小,并以直方图的形式显示分布 - -### 实现原理 - -Biteszie 在 block_rq_issue 追踪点下挂在了处理函数。当进程对磁盘发出了块 I/O 请求操作时, -系统会经过此挂载点,此时处理函数或许请求的信息,将其存入对应的map中。 -```c -static int trace_rq_issue(struct request *rq) -{ - struct hist_key hkey; - struct hist *histp; - u64 slot; - - if (filter_dev) { - struct gendisk *disk = get_disk(rq); - u32 dev; - - dev = disk ? MKDEV(BPF_CORE_READ(disk, major), - BPF_CORE_READ(disk, first_minor)) : 0; - if (targ_dev != dev) - return 0; - } - bpf_get_current_comm(&hkey.comm, sizeof(hkey.comm)); - if (!comm_allowed(hkey.comm)) - return 0; - - histp = bpf_map_lookup_elem(&hists, &hkey); - if (!histp) { - bpf_map_update_elem(&hists, &hkey, &initial_hist, 0); - histp = bpf_map_lookup_elem(&hists, &hkey); - if (!histp) - return 0; - } - slot = log2l(rq->__data_len / 1024); - if (slot >= MAX_SLOTS) - slot = MAX_SLOTS - 1; - __sync_fetch_and_add(&histp->slots[slot], 1); - - return 0; -} - -SEC("tp_btf/block_rq_issue") -int BPF_PROG(block_rq_issue) -{ - if (LINUX_KERNEL_VERSION >= KERNEL_VERSION(5, 11, 0)) - return trace_rq_issue((void *)ctx[0]); - else - return trace_rq_issue((void *)ctx[1]); -} -``` - -当用户发出中止工具的指令后,其用户态代码会将map中存储的数据读出并逐进程的展示追踪结果 - -### Eunomia中使用方式 - - -### 总结 -Bitesize 以进程为粒度,使得开发者可以更好的掌握程序对磁盘 I/O 的请求情况。 \ No newline at end of file diff --git a/18-further-reading/README.md b/18-further-reading/README.md index 167db71..5d71abf 100644 --- a/18-further-reading/README.md +++ b/18-further-reading/README.md @@ -1,81 +1 @@ -## eBPF 入门实践教程:编写 eBPF 程序 syscount 监控慢系统调用 - -### 背景 - -`syscount` 可以统计系统或者某个进程发生的各类syscall的总数或者时耗时。 - -### 实现原理 -`syscount` 的实现逻辑非常直观,他在 `sys_enter` 和 `sys_exit` 这两个 `tracepoint` 下挂载了 -执行函数。 -```c -SEC("tracepoint/raw_syscalls/sys_enter") -int sys_enter(struct trace_event_raw_sys_enter *args) -{ - u64 id = bpf_get_current_pid_tgid(); - pid_t pid = id >> 32; - u32 tid = id; - u64 ts; - - if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0)) - return 0; - - if (filter_pid && pid != filter_pid) - return 0; - - ts = bpf_ktime_get_ns(); - bpf_map_update_elem(&start, &tid, &ts, 0); - return 0; -} - -SEC("tracepoint/raw_syscalls/sys_exit") -int sys_exit(struct trace_event_raw_sys_exit *args) -{ - if (filter_cg && !bpf_current_task_under_cgroup(&cgroup_map, 0)) - return 0; - - u64 id = bpf_get_current_pid_tgid(); - static const struct data_t zero; - pid_t pid = id >> 32; - struct data_t *val; - u64 *start_ts, lat = 0; - u32 tid = id; - u32 key; - - /* this happens when there is an interrupt */ - if (args->id == -1) - return 0; - - if (filter_pid && pid != filter_pid) - return 0; - if (filter_failed && args->ret >= 0) - return 0; - if (filter_errno && args->ret != -filter_errno) - return 0; - - if (measure_latency) { - start_ts = bpf_map_lookup_elem(&start, &tid); - if (!start_ts) - return 0; - lat = bpf_ktime_get_ns() - *start_ts; - } - - key = (count_by_process) ? pid : args->id; - val = bpf_map_lookup_or_try_init(&data, &key, &zero); - if (val) { - __sync_fetch_and_add(&val->count, 1); - if (count_by_process) - save_proc_name(val); - if (measure_latency) - __sync_fetch_and_add(&val->total_ns, lat); - } - return 0; -} - -``` -当syscall发生时,`syscount`会记录其tid和发生的时间并存入map中。在syscall完成时,`syscount` 会根据用户 -的需求,统计syscall持续的时间,或者是发生的次数。 -### Eunomia中使用方式 - - -### 总结 -`sycount` 使得用户可以较为方便的追踪某个进程或者是系统内系统调用发生的情况。 \ No newline at end of file +# 更多的参考资料 \ No newline at end of file diff --git a/2-kprobe-unlink/.gitignore b/2-kprobe-unlink/.gitignore index 7d5aebf..f0f4c81 100644 --- a/2-kprobe-unlink/.gitignore +++ b/2-kprobe-unlink/.gitignore @@ -4,3 +4,4 @@ package.json *.skel.json *.skel.yaml package.yaml +ecli diff --git a/2-kprobe-unlink/README.md b/2-kprobe-unlink/README.md index c0b370c..e77def0 100644 --- a/2-kprobe-unlink/README.md +++ b/2-kprobe-unlink/README.md @@ -76,6 +76,15 @@ Packing ebpf object and config into package.json... sudo ecli package.json ``` +在另外一个窗口中: + +```shell +touch test1 +rm test1 +touch test2 +rm test2 +``` + 在 /sys/kernel/debug/tracing/trace_pipe 文件中,应该能看到类似下面的 kprobe 演示输出: ```shell @@ -90,4 +99,4 @@ $ sudo cat /sys/kernel/debug/tracing/trace_pipe 通过本文的示例,我们学习了如何使用 eBPF 的 kprobe 和 kretprobe 捕获 unlink 系统调用。更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档:https://github.com/eunomia-bpf/eunomia-bpf -本文是 eBPF 入门开发实践指南的第二篇。下一篇文章将介绍如何使用 eBPF 的内核映射(maps)进行数据交换和共享。 +本文是 eBPF 入门开发实践指南的第二篇。下一篇文章将介绍如何在 eBPF 中使用 fentry 监测捕获 unlink 系统调用 diff --git a/20-tc/README.md b/20-tc/README.md index 3b5f1ec..501b6f2 100644 --- a/20-tc/README.md +++ b/20-tc/README.md @@ -1,8 +1,70 @@ ## eBPF 入门实践教程: -`tc` (short for Traffic Control) is an example of handling ingress network traffics. -It creates a qdisc on the `lo` interface and attaches the `tc_ingress` BPF program to it. -It reports the metadata of the IP packets that coming into the `lo` interface. +## tc 程序示例 + +```c +#include +#include +#include +#include + +#define TC_ACT_OK 0 +#define ETH_P_IP 0x0800 /* Internet Protocol packet */ + +/// @tchook {"ifindex":1, "attach_point":"BPF_TC_INGRESS"} +/// @tcopts {"handle":1, "priority":1} +SEC("tc") +int tc_ingress(struct __sk_buff *ctx) +{ + void *data_end = (void *)(__u64)ctx->data_end; + void *data = (void *)(__u64)ctx->data; + struct ethhdr *l2; + struct iphdr *l3; + + if (ctx->protocol != bpf_htons(ETH_P_IP)) + return TC_ACT_OK; + + l2 = data; + if ((void *)(l2 + 1) > data_end) + return TC_ACT_OK; + + l3 = (struct iphdr *)(l2 + 1); + if ((void *)(l3 + 1) > data_end) + return TC_ACT_OK; + + bpf_printk("Got IP packet: tot_len: %d, ttl: %d", bpf_ntohs(l3->tot_len), l3->ttl); + return TC_ACT_OK; +} + +char __license[] SEC("license") = "GPL"; +``` + +这段代码定义了一个 eBPF 程序,它可以通过 Linux TC(Transmission Control)来捕获数据包并进行处理。在这个程序中,我们限定了只捕获 IPv4 协议的数据包,然后通过 bpf_printk 函数打印出数据包的总长度和 Time-To-Live(TTL)字段的值。 + +需要注意的是,我们在代码中使用了一些 BPF 库函数,例如 bpf_htons 和 bpf_ntohs 函数,它们用于进行网络字节序和主机字节序之间的转换。此外,我们还使用了一些注释来为 TC 提供附加点和选项信息。例如,在这段代码的开头,我们使用了以下注释: + +```c +/// @tchook {"ifindex":1, "attach_point":"BPF_TC_INGRESS"} +/// @tcopts {"handle":1, "priority":1} +``` + +这些注释告诉 TC 将 eBPF 程序附加到网络接口的 ingress 附加点,并指定了 handle 和 priority 选项的值。 + +总之,这段代码实现了一个简单的 eBPF 程序,用于捕获数据包并打印出它们的信息。 + +## 编译运行 + +```console +docker run -it -v `pwd`/:/src/ yunwei37/ebpm:latest +``` + +or compile with `ecc`: + +```console +$ ecc tc.bpf.c +Compiling bpf object... +Packing ebpf object and config into package.json... +``` ```shell $ sudo ecli ./package.json @@ -21,27 +83,3 @@ $ sudo cat /sys/kernel/debug/tracing/trace_pipe sshd-1254728 [006] ..s1 8737831.674349: 0: Got IP packet: tot_len: 72, ttl: 64 node-1254811 [007] ..s1 8737831.674550: 0: Got IP packet: tot_len: 71, ttl: 64 ``` - -## Compile and Run - - - -Compile: - -```console -docker run -it -v `pwd`/:/src/ yunwei37/ebpm:latest -``` - -or compile with `ecc`: - -```console -$ ecc tc.bpf.c -Compiling bpf object... -Packing ebpf object and config into package.json... -``` - -Run: - -```console -sudo ecli ./package.json -``` \ No newline at end of file diff --git a/3-fentry-unlink/.gitignore b/3-fentry-unlink/.gitignore index 7d5aebf..f0f4c81 100644 --- a/3-fentry-unlink/.gitignore +++ b/3-fentry-unlink/.gitignore @@ -4,3 +4,4 @@ package.json *.skel.json *.skel.yaml package.yaml +ecli diff --git a/3-fentry-unlink/README.md b/3-fentry-unlink/README.md index 66f16a1..d0e1393 100644 --- a/3-fentry-unlink/README.md +++ b/3-fentry-unlink/README.md @@ -50,6 +50,15 @@ $ sudo ecli package.json Runing eBPF program... ``` +在另外一个窗口中: + +```shell +touch test_file +rm test_file +touch test_file2 +rm test_file2 +``` + 运行这段程序后,可以通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出: ```console diff --git a/4-opensnoop/README.md b/4-opensnoop/README.md index df5fdd6..59bd1a5 100644 --- a/4-opensnoop/README.md +++ b/4-opensnoop/README.md @@ -9,45 +9,28 @@ eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网 首先,我们需要编写一段 eBPF 程序来捕获进程打开文件的系统调用,具体实现如下: ```c -// SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2019 Facebook -// Copyright (c) 2020 Netflix #include #include -#include "opensnoop.h" - -/// Process ID to trace +/// @description "Process ID to trace" const volatile int pid_target = 0; -SEC("tracepoint/syscalls/sys_enter_open") -int tracepoint__syscalls__sys_enter_open(struct trace_event_raw_sys_enter* ctx) -{ - u64 id = bpf_get_current_pid_tgid(); - u32 pid = id; - - if (pid_target && pid_target != pid) - return false; - // Use bpf_printk to print the process information - bpf_printk("Process ID: %d enter sys open\n", pid); - return 0; -} - SEC("tracepoint/syscalls/sys_enter_openat") int tracepoint__syscalls__sys_enter_openat(struct trace_event_raw_sys_enter* ctx) { - u64 id = bpf_get_current_pid_tgid(); - u32 pid = id; + u64 id = bpf_get_current_pid_tgid(); + u32 pid = id; - if (pid_target && pid_target != pid) - return false; - // Use bpf_printk to print the process information - bpf_printk("Process ID: %d enter sys openat\n", pid); - return 0; + if (pid_target && pid_target != pid) + return false; + // Use bpf_printk to print the process information + bpf_printk("Process ID: %d enter sys openat\n", pid); + return 0; } -/// Trace open family syscalls. +/// "Trace open family syscalls." char LICENSE[] SEC("license") = "GPL"; + ``` 上面的 eBPF 程序通过定义两个函数 tracepoint__syscalls__sys_enter_open 和 tracepoint__syscalls__sys_enter_openat 并使用 SEC 宏把它们附加到 sys_enter_open 和 sys_enter_openat 两个 tracepoint(即在进入 open 和 openat 系统调用时执行)。这两个函数通过使用 bpf_get_current_pid_tgid 函数获取调用 open 或 openat 系统调用的进程 ID,并使用 bpf_printk 函数在内核日志中打印出来。 @@ -66,9 +49,7 @@ Runing eBPF program... ```console $ sudo cat /sys/kernel/debug/tracing/trace_pipe - <...>-3840345 [010] d... 3220701.101143: bpf_trace_printk: Process ID: 3840345 enter sys open <...>-3840345 [010] d... 3220701.101179: bpf_trace_printk: Process ID: 3840345 enter sys openat - <...>-3840345 [010] d... 3220702.157967: bpf_trace_printk: Process ID: 3840345 enter sys open <...>-3840345 [010] d... 3220702.158000: bpf_trace_printk: Process ID: 3840345 enter sys openat ``` @@ -80,12 +61,39 @@ $ sudo cat /sys/kernel/debug/tracing/trace_pipe 可以通过执行 ecli -h 命令来查看 opensnoop 的帮助信息: -```c +```console +$ ecli package.json -h +Usage: opensnoop_bpf [--help] [--version] [--verbose] [--pid_target VAR] +Trace open family syscalls. + +Optional arguments: + -h, --help shows help message and exits + -v, --version prints version information and exits + --verbose prints libbpf debug information + --pid_target Process ID to trace + +Built with eunomia-bpf framework. +See https://github.com/eunomia-bpf/eunomia-bpf for more information. +``` + +可以通过 --pid_target 参数来指定要捕获的进程的 pid,例如: + +```console +$ sudo ./ecli run package.json --pid_target 618 +Runing eBPF program... +``` + +运行这段程序后,可以通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出: + +```console +$ sudo cat /sys/kernel/debug/tracing/trace_pipe + <...>-3840345 [010] d... 3220701.101179: bpf_trace_printk: Process ID: 618 enter sys openat + <...>-3840345 [010] d... 3220702.158000: bpf_trace_printk: Process ID: 618 enter sys openat ``` ## 总结 本文介绍了如何使用 eBPF 程序来捕获进程打开文件的系统调用。在 eBPF 程序中,我们可以通过定义 tracepoint__syscalls__sys_enter_open 和 tracepoint__syscalls__sys_enter_openat 函数并使用 SEC 宏把它们附加到 sys_enter_open 和 sys_enter_openat 两个 tracepoint 来捕获进程打开文件的系统调用。在这两个函数中,我们可以使用 bpf_get_current_pid_tgid 函数获取调用 open 或 openat 系统调用的进程 ID,并使用 bpf_printk 函数在内核日志中打印出来。在 eBPF 程序中,我们还可以通过定义一个全局变量 pid_target 来指定要捕获的进程的 pid,从而过滤输出,只输出指定的进程的信息。 -更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档:https://github.com/eunomia-bpf/eunomia-bpf \ No newline at end of file +更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档: diff --git a/4-opensnoop/opensnoop.bpf.c b/4-opensnoop/opensnoop.bpf.c index 4b9f2a8..93cef09 100644 --- a/4-opensnoop/opensnoop.bpf.c +++ b/4-opensnoop/opensnoop.bpf.c @@ -1,27 +1,9 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2019 Facebook -// Copyright (c) 2020 Netflix #include #include -#include "opensnoop.h" - -/// Process ID to trace +/// @description "Process ID to trace" const volatile int pid_target = 0; -SEC("tracepoint/syscalls/sys_enter_open") -int tracepoint__syscalls__sys_enter_open(struct trace_event_raw_sys_enter* ctx) -{ - u64 id = bpf_get_current_pid_tgid(); - u32 pid = id; - - if (pid_target && pid_target != pid) - return false; - // Use bpf_printk to print the process information - bpf_printk("Process ID: %d enter sys open\n", pid); - return 0; -} - SEC("tracepoint/syscalls/sys_enter_openat") int tracepoint__syscalls__sys_enter_openat(struct trace_event_raw_sys_enter* ctx) { @@ -35,5 +17,5 @@ int tracepoint__syscalls__sys_enter_openat(struct trace_event_raw_sys_enter* ctx return 0; } -/// Trace open family syscalls. +/// "Trace open family syscalls." char LICENSE[] SEC("license") = "GPL"; diff --git a/4-opensnoop/opensnoop.h b/4-opensnoop/opensnoop.h deleted file mode 100644 index a5aa43f..0000000 --- a/4-opensnoop/opensnoop.h +++ /dev/null @@ -1,21 +0,0 @@ -/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ -#ifndef __OPENSNOOP_H -#define __OPENSNOOP_H - -#define TASK_COMM_LEN 16 -#define NAME_MAX 255 -#define INVALID_UID ((uid_t)-1) - -// used for export event -struct event { - /* user terminology for pid: */ - unsigned long long ts; - int pid; - int uid; - int ret; - int flags; - char comm[TASK_COMM_LEN]; - char fname[NAME_MAX]; -}; - -#endif /* __OPENSNOOP_H */ \ No newline at end of file diff --git a/5-uprobe-bashreadline/README.md b/5-uprobe-bashreadline/README.md index 26b28f5..098b2c2 100644 --- a/5-uprobe-bashreadline/README.md +++ b/5-uprobe-bashreadline/README.md @@ -19,12 +19,9 @@ uprobe 是一种用于捕获用户空间函数调用的 eBPF 的探针,我们 例如,我们可以使用 uprobe 来捕获 bash 的 readline 函数调用,从而获取用户在 bash 中输入的命令行。示例代码如下: ```c -/* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright (c) 2021 Facebook */ #include #include #include -#include "bashreadline.h" #define TASK_COMM_LEN 16 #define MAX_LINE_SIZE 80 @@ -39,8 +36,9 @@ uprobe 是一种用于捕获用户空间函数调用的 eBPF 的探针,我们 * specified (and auto-attach is not possible) or the above format is specified for * auto-attach. */ -SEC("uprobe//bin/bash:readline") -int BPF_KRETPROBE(printret, const void *ret) { +SEC("uretprobe//bin/bash:readline") +int BPF_KRETPROBE(printret, const void *ret) +{ char str[MAX_LINE_SIZE]; char comm[TASK_COMM_LEN]; u32 pid; @@ -98,13 +96,14 @@ Runing eBPF program... ```console $ sudo cat /sys/kernel/debug/tracing/trace_pipe -PID 12345 (bash) read: ls -l -PID 12345 (bash) read: date -PID 12345 (bash) read: echo "Hello eBPF!" + bash-32969 [000] d..31 64001.375748: bpf_trace_printk: PID 32969 (bash) read: fff + bash-32969 [000] d..31 64002.056951: bpf_trace_printk: PID 32969 (bash) read: fff ``` 可以看到,我们成功的捕获了 bash 的 readline 函数调用,并获取了用户在 bash 中输入的命令行。 ## 总结 -在上述代码中,我们使用了 SEC 宏来定义了一个 uprobe 探针,它指定了要捕获的用户空间程序 (bin/bash) 和要捕获的函数 (readline)。此外,我们还使用了 BPF_KRETPROBE 宏来定义了一个用于处理 readline 函数返回值的回调函数 (printret)。该函数可以获取到 readline 函数的返回值,并将其打印到内核日志中。通过这样的方式,我们就可以使用 eBPF 来捕获 bash 的 readline 函数调用,并获取用户在 bash 中输入的命令行。更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档:https://github.com/eunomia-bpf/eunomia-bpf +在上述代码中,我们使用了 SEC 宏来定义了一个 uprobe 探针,它指定了要捕获的用户空间程序 (bin/bash) 和要捕获的函数 (readline)。此外,我们还使用了 BPF_KRETPROBE 宏来定义了一个用于处理 readline 函数返回值的回调函数 (printret)。该函数可以获取到 readline 函数的返回值,并将其打印到内核日志中。通过这样的方式,我们就可以使用 eBPF 来捕获 bash 的 readline 函数调用,并获取用户在 bash 中输入的命令行。 + +更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档:https://github.com/eunomia-bpf/eunomia-bpf diff --git a/5-uprobe-bashreadline/bashreadline.bpf.c b/5-uprobe-bashreadline/bashreadline.bpf.c index 4457715..8058734 100644 --- a/5-uprobe-bashreadline/bashreadline.bpf.c +++ b/5-uprobe-bashreadline/bashreadline.bpf.c @@ -1,9 +1,6 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright (c) 2021 Facebook */ #include #include #include -#include "bashreadline.h" #define TASK_COMM_LEN 16 #define MAX_LINE_SIZE 80 @@ -18,8 +15,9 @@ * specified (and auto-attach is not possible) or the above format is specified for * auto-attach. */ -SEC("uprobe//bin/bash:readline") -int BPF_KRETPROBE(printret, const void *ret) { +SEC("uretprobe//bin/bash:readline") +int BPF_KRETPROBE(printret, const void *ret) +{ char str[MAX_LINE_SIZE]; char comm[TASK_COMM_LEN]; u32 pid; diff --git a/6-sigsnoop/README.md b/6-sigsnoop/README.md index 46eae45..418de0f 100755 --- a/6-sigsnoop/README.md +++ b/6-sigsnoop/README.md @@ -2,9 +2,9 @@ ## sigsnoop +示例代码如下: + ```c -// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -/* Copyright (c) 2021~2022 Hengqi Chen */ #include #include #include "sigsnoop.h" @@ -85,7 +85,6 @@ int tkill_exit(struct trace_event_raw_sys_exit *ctx) } char LICENSE[] SEC("license") = "Dual BSD/GPL"; - ``` 上面的代码定义了一个 eBPF 程序,用于捕获进程发送信号的系统调用,包括 kill、tkill 和 tgkill。它通过使用 tracepoint 来捕获系统调用的进入和退出事件,并在这些事件发生时执行指定的探针函数,例如 probe_entry 和 probe_exit。 diff --git a/6-sigsnoop/sigsnoop.bpf.c b/6-sigsnoop/sigsnoop.bpf.c index 119512b..97e602b 100755 --- a/6-sigsnoop/sigsnoop.bpf.c +++ b/6-sigsnoop/sigsnoop.bpf.c @@ -64,34 +64,4 @@ int kill_exit(struct trace_event_raw_sys_exit *ctx) return probe_exit(ctx, ctx->ret); } -SEC("tracepoint/syscalls/sys_enter_tkill") -int tkill_entry(struct trace_event_raw_sys_enter *ctx) -{ - pid_t tpid = (pid_t)ctx->args[0]; - int sig = (int)ctx->args[1]; - - return probe_entry(tpid, sig); -} - -SEC("tracepoint/syscalls/sys_exit_tkill") -int tkill_exit(struct trace_event_raw_sys_exit *ctx) -{ - return probe_exit(ctx, ctx->ret); -} - -SEC("tracepoint/syscalls/sys_enter_tgkill") -int tgkill_entry(struct trace_event_raw_sys_enter *ctx) -{ - pid_t tpid = (pid_t)ctx->args[1]; - int sig = (int)ctx->args[2]; - - return probe_entry(tpid, sig); -} - -SEC("tracepoint/syscalls/sys_exit_tgkill") -int tgkill_exit(struct trace_event_raw_sys_exit *ctx) -{ - return probe_exit(ctx, ctx->ret); -} - char LICENSE[] SEC("license") = "Dual BSD/GPL"; diff --git a/6-sigsnoop/sigsnoop.md b/6-sigsnoop/sigsnoop.md index e59540c..eb51d85 100644 --- a/6-sigsnoop/sigsnoop.md +++ b/6-sigsnoop/sigsnoop.md @@ -6,80 +6,6 @@ `sigsnoop` 在利用了linux的tracepoint挂载点,其在syscall进入和退出的各个关键挂载点均挂载了执行函数。 ```c -SEC("tracepoint/syscalls/sys_enter_kill") -int kill_entry(struct trace_event_raw_sys_enter *ctx) -{ - pid_t tpid = (pid_t)ctx->args[0]; - int sig = (int)ctx->args[1]; - - return probe_entry(tpid, sig); -} - -SEC("tracepoint/syscalls/sys_exit_kill") -int kill_exit(struct trace_event_raw_sys_exit *ctx) -{ - return probe_exit(ctx, ctx->ret); -} - -SEC("tracepoint/syscalls/sys_enter_tkill") -int tkill_entry(struct trace_event_raw_sys_enter *ctx) -{ - pid_t tpid = (pid_t)ctx->args[0]; - int sig = (int)ctx->args[1]; - - return probe_entry(tpid, sig); -} - -SEC("tracepoint/syscalls/sys_exit_tkill") -int tkill_exit(struct trace_event_raw_sys_exit *ctx) -{ - return probe_exit(ctx, ctx->ret); -} - -SEC("tracepoint/syscalls/sys_enter_tgkill") -int tgkill_entry(struct trace_event_raw_sys_enter *ctx) -{ - pid_t tpid = (pid_t)ctx->args[1]; - int sig = (int)ctx->args[2]; - - return probe_entry(tpid, sig); -} - -SEC("tracepoint/syscalls/sys_exit_tgkill") -int tgkill_exit(struct trace_event_raw_sys_exit *ctx) -{ - return probe_exit(ctx, ctx->ret); -} - -SEC("tracepoint/signal/signal_generate") -int sig_trace(struct trace_event_raw_signal_generate *ctx) -{ - struct event event = {}; - pid_t tpid = ctx->pid; - int ret = ctx->errno; - int sig = ctx->sig; - __u64 pid_tgid; - __u32 pid; - - if (failed_only && ret == 0) - return 0; - - if (target_signal && sig != target_signal) - return 0; - - pid_tgid = bpf_get_current_pid_tgid(); - pid = pid_tgid >> 32; - if (filtered_pid && pid != filtered_pid) - return 0; - - event.pid = pid; - event.tpid = tpid; - event.sig = sig; - event.ret = ret; - bpf_get_current_comm(event.comm, sizeof(event.comm)); - bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU, &event, sizeof(event)); - return 0; -} ``` diff --git a/7-execsnoop/README.md b/7-execsnoop/README.md index 24ce82c..a3f5f29 100644 --- a/7-execsnoop/README.md +++ b/7-execsnoop/README.md @@ -1,7 +1,35 @@ -## eBPF 入门实践教程七:捕获进程执行/退出时间,通过 perf event array 向用户态打印输出 +# eBPF 入门实践教程七:捕获进程执行/退出时间,通过 perf event array 向用户态打印输出 + +eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具,它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 + +本文是 eBPF 入门开发实践指南的第七篇,主要介绍如何捕获 Linux 内核中进程执行的事件,并且通过 perf event array 向用户态命令行打印输出,不需要再通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出。 ## execsnoop +通过 perf event array 向用户态命令行打印输出,需要编写一个头文件,一个 C 源文件。示例代码如下: + +头文件:execsnoop.h + +```c +#ifndef __EXECSNOOP_H +#define __EXECSNOOP_H + +#define TASK_COMM_LEN 16 + +struct event { + int pid; + int ppid; + int uid; + int retval; + bool is_exit; + char comm[TASK_COMM_LEN]; +}; + +#endif /* __EXECSNOOP_H */ +``` + +源文件:execsnoop.bpf.c + ```c // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) #include @@ -76,8 +104,6 @@ char LICENSE[] SEC("license") = "GPL"; 使用这段代码,我们就可以捕获 Linux 内核中进程执行的事件。我们可以通过工具(例如 eunomia-bpf)来查看这些事件,并分析进程的执行情况。 - - ## Compile and Run Compile: @@ -104,109 +130,3 @@ time pid ppid uid retval args_count args_size comm args 23:07:57 32959 32946 1000 0 1 17 oneko /usr/games/oneko ``` - -## details in bcc - -Demonstrations of execsnoop, the Linux eBPF/bcc version. - -execsnoop traces the exec() syscall system-wide, and prints various details. -Example output: - -``` -# ./execsnoop -COMM PID PPID RET ARGS -bash 33161 24577 0 /bin/bash -lesspipe 33163 33161 0 /usr/bin/lesspipe -basename 33164 33163 0 /usr/bin/basename /usr/bin/lesspipe -dirname 33166 33165 0 /usr/bin/dirname /usr/bin/lesspipe -dircolors 33167 33161 0 /usr/bin/dircolors -b -ls 33172 33161 0 /usr/bin/ls --color=auto -top 33173 33161 0 /usr/bin/top -oneko 33174 33161 0 /usr/games/oneko -systemctl 33175 2975 0 /bin/systemctl is-enabled -q whoopsie.path -apport-checkrep 33176 2975 0 /usr/share/apport/apport-checkreports -apport-checkrep 33177 2975 0 /usr/share/apport/apport-checkreports --system -apport-checkrep 33178 2975 0 /usr/share/apport/apport-checkreports --system - -``` - -This shows process information when exec system call is called. - -USAGE message: - -``` -usage: execsnoop [-h] [-T] [-t] [-x] [--cgroupmap CGROUPMAP] - [--mntnsmap MNTNSMAP] [-u USER] [-q] [-n NAME] - [-l LINE] [-U] [--max-args MAX_ARGS] - -Trace exec() syscalls - -options: - -h, --help show this help message and exit - -T, --time include time column on output (HH:MM:SS) - -t, --timestamp include timestamp on output - -x, --fails include failed exec()s - --cgroupmap CGROUPMAP - trace cgroups in this BPF map only - --mntnsmap MNTNSMAP trace mount namespaces in this BPF map only - -u USER, --uid USER trace this UID only - -q, --quote Add quotemarks (") around arguments. - -n NAME, --name NAME only print commands matching this name (regex), any - arg - -l LINE, --line LINE only print commands where arg contains this line - (regex) - -U, --print-uid print UID column - --max-args MAX_ARGS maximum number of arguments parsed and displayed, - defaults to 20 - -examples: - ./execsnoop # trace all exec() syscalls - ./execsnoop -x # include failed exec()s - ./execsnoop -T # include time (HH:MM:SS) - ./execsnoop -U # include UID - ./execsnoop -u 1000 # only trace UID 1000 - ./execsnoop -u user # get user UID and trace only them - ./execsnoop -t # include timestamps - ./execsnoop -q # add "quotemarks" around arguments - ./execsnoop -n main # only print command lines containing "main" - ./execsnoop -l tpkg # only print command where arguments contains "tpkg" - ./execsnoop --cgroupmap mappath # only trace cgroups in this BPF map - ./execsnoop --mntnsmap mappath # only trace mount namespaces in the map - - -``` - -The -T and -t option include time and timestamps on output: - -``` -# ./execsnoop -T -t -TIME TIME(s) PCOMM PID PPID RET ARGS -23:35:25 4.335 bash 33360 24577 0 /bin/bash -23:35:25 4.338 lesspipe 33361 33360 0 /usr/bin/lesspipe -23:35:25 4.340 basename 33362 33361 0 /usr/bin/basename /usr/bin/lesspipe -23:35:25 4.342 dirname 33364 33363 0 /usr/bin/dirname /usr/bin/lesspipe -23:35:25 4.347 dircolors 33365 33360 0 /usr/bin/dircolors -b -23:35:40 19.327 touch 33367 33366 0 /usr/bin/touch /run/udev/gdm-machine-has-hardware-gpu -23:35:40 19.329 snap-device-hel 33368 33366 0 /usr/lib/snapd/snap-device-helper change snap_firefox_firefox /devices/pci0000:00/0000:00:02.0/drm/card0 226:0 -23:35:40 19.331 snap-device-hel 33369 33366 0 /usr/lib/snapd/snap-device-helper change snap_firefox_geckodriver /devices/pci0000:00/0000:00:02.0/drm/card0 226:0 -23:35:40 19.332 snap-device-hel 33370 33366 0 /usr/lib/snapd/snap-device-helper change snap_snap-store_snap-store /devices/pci0000:00/0000:00:02.0/drm/card0 226:0 - -``` - -The -u option filtering UID: - -``` -# ./execsnoop -Uu 1000 -UID PCOMM PID PPID RET ARGS -1000 bash 33604 24577 0 /bin/bash -1000 lesspipe 33606 33604 0 /usr/bin/lesspipe -1000 basename 33607 33606 0 /usr/bin/basename /usr/bin/lesspipe -1000 dirname 33609 33608 0 /usr/bin/dirname /usr/bin/lesspipe -1000 dircolors 33610 33604 0 /usr/bin/dircolors -b -1000 sleep 33615 33604 0 /usr/bin/sleep -1000 sleep 33616 33604 0 /usr/bin/sleep 1 -1000 clear 33617 33604 0 /usr/bin/clear - -``` - -Report bugs to https://github.com/iovisor/bcc/tree/master/libbpf-tools. diff --git a/7-execsnoop/execsnoop.bpf.h b/7-execsnoop/execsnoop.h similarity index 56% rename from 7-execsnoop/execsnoop.bpf.h rename to 7-execsnoop/execsnoop.h index 51dd1fd..7f7f3b1 100644 --- a/7-execsnoop/execsnoop.bpf.h +++ b/7-execsnoop/execsnoop.h @@ -2,13 +2,7 @@ #ifndef __EXECSNOOP_H #define __EXECSNOOP_H -#define ARGSIZE 128 #define TASK_COMM_LEN 16 -#define TOTAL_MAX_ARGS 60 -#define DEFAULT_MAXARGS 20 -#define FULL_MAX_ARGS_ARR (TOTAL_MAX_ARGS * ARGSIZE) -#define INVALID_UID ((uid_t)-1) -#define LAST_ARG (FULL_MAX_ARGS_ARR - ARGSIZE) struct event { int pid; diff --git a/8-runqslower/README.md b/8-runqslower/README.md index 506e6b3..d624438 100644 --- a/8-runqslower/README.md +++ b/8-runqslower/README.md @@ -28,6 +28,16 @@ time task prev_task delta_us pid prev_pid 20:11:59 ecli swapper/2 6 3437 0 ``` +这段代码定义了一个 eBPF 程序,该程序用于跟踪进程在运行队列中的等待时间。它通过使用 tracepoint 和 perf event 输出来实现。 + +程序首先定义了两个 BPF 内核映射:start 映射用于存储每个进程在被调度运行之前的时间戳,events 映射用于存储 perf 事件。 + +然后,程序定义了一些帮助函数,用于跟踪每个进程的调度状态。 trace_enqueue 函数用于在进程被调度运行之前记录时间戳, handle_switch 函数用于处理进程切换,并计算进程在队列中等待的时间。 + +接下来,程序定义了五个 tracepoint 程序,用于捕获不同的调度器事件。 sched_wakeup 和 sched_wakeup_new 程序用于捕获新进程被唤醒的事件, sched_switch 程序用于捕获进程切换事件, handle_sched_wakeup 和 handle_sched_wakeup_new 程序用于捕获 raw tracepoint 事件。这些 tracepoint 程序调用了前面定义的帮助函数来跟踪进程的调度状态。 + +最后,程序将计算得到的等待时间输出到 perf 事件中,供用户空间工具进行捕获和分析。 + ## Compile and Run Compile: diff --git a/8-runqslower/core_fixes.h b/8-runqslower/core_fixes.bpf.h similarity index 100% rename from 8-runqslower/core_fixes.h rename to 8-runqslower/core_fixes.bpf.h diff --git a/8-runqslower/runqslower.bpf.c b/8-runqslower/runqslower.bpf.c index ebc0103..e99644d 100644 --- a/8-runqslower/runqslower.bpf.c +++ b/8-runqslower/runqslower.bpf.c @@ -4,8 +4,8 @@ #include #include #include -#include "runqslower.bpf.h" -#include "core_fixes.h" +#include "runqslower.h" +#include "core_fixes.bpf.h" #define TASK_RUNNING 0 diff --git a/8-runqslower/runqslower.bpf.h b/8-runqslower/runqslower.h similarity index 100% rename from 8-runqslower/runqslower.bpf.h rename to 8-runqslower/runqslower.h diff --git a/9-runqlat/bits.bpf copy.h b/9-runqlat/bits.bpf copy.h deleted file mode 100644 index a2b7bb9..0000000 --- a/9-runqlat/bits.bpf copy.h +++ /dev/null @@ -1,31 +0,0 @@ -/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ -#ifndef __BITS_BPF_H -#define __BITS_BPF_H - -#define READ_ONCE(x) (*(volatile typeof(x) *)&(x)) -#define WRITE_ONCE(x, val) ((*(volatile typeof(x) *)&(x)) = val) - -static __always_inline u64 log2(u32 v) -{ - u32 shift, r; - - r = (v > 0xFFFF) << 4; v >>= r; - shift = (v > 0xFF) << 3; v >>= shift; r |= shift; - shift = (v > 0xF) << 2; v >>= shift; r |= shift; - shift = (v > 0x3) << 1; v >>= shift; r |= shift; - r |= (v >> 1); - - return r; -} - -static __always_inline u64 log2l(u64 v) -{ - u32 hi = v >> 32; - - if (hi) - return log2(hi) + 32; - else - return log2(v); -} - -#endif /* __BITS_BPF_H */ diff --git a/9-runqlat/maps.bpf copy.h b/9-runqlat/maps.bpf copy.h deleted file mode 100644 index 51d1012..0000000 --- a/9-runqlat/maps.bpf copy.h +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) -// Copyright (c) 2020 Anton Protopopov -#ifndef __MAPS_BPF_H -#define __MAPS_BPF_H - -#include -#include - -static __always_inline void * -bpf_map_lookup_or_try_init(void *map, const void *key, const void *init) -{ - void *val; - long err; - - val = bpf_map_lookup_elem(map, key); - if (val) - return val; - - err = bpf_map_update_elem(map, key, init, BPF_NOEXIST); - if (err && err != -EEXIST) - return 0; - - return bpf_map_lookup_elem(map, key); -} - -#endif /* __MAPS_BPF_H */ diff --git a/imgs/ebpf-chatgpt-signal.png b/imgs/ebpf-chatgpt-signal.png new file mode 100644 index 0000000000000000000000000000000000000000..028954ee40dd195487e301c8f69c37af0f35d9bb GIT binary patch literal 94878 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�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 Z5j{LuzHC{PqxuQzQkGXinXa1z{vW&uw4VR~ literal 0 HcmV?d00001 diff --git a/imgs/ebpf-chatgpt-signal2.png b/imgs/ebpf-chatgpt-signal2.png new file mode 100644 index 0000000000000000000000000000000000000000..bc364e14414a6bbabf5d3dd76ff85067211e72e7 GIT binary patch literal 78899 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%0DU{{{3Ob6Iy%il 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≪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