【发布时间】:2020-09-23 02:24:04
【问题描述】:
我一直在尝试使用 Brendan Gregg 的 tcptop BCC 工具来了解有关 eBPF 程序如何工作的更多信息。我正在尝试让它打印任务的 CGROUP 路径。
凭借我对 Linux 系统编程的生疏知识,我认为我可以使用来自 linux/cgroup.h 的函数,尤其是 task_cgroup_path() looked promising,因为我可以将当前的 task_struct *(从 bpf_get_current_task() 获得)传递给它。我正在使用带有4.19.59 内核的CentOS7 机器。
但是,当我尝试执行修改后的 tcptop 时,验证程序失败并显示 last insn is not an exit or jmp 错误消息。我试图理解为什么会这样。
这是修改后的tcptop 的差异:patch
这里是验证者output
【问题讨论】:
-
在你打补丁之前,tcptop 是否首先在你的系统上工作?
-
如果未打补丁的 tcptop 可以正常工作,您是否尝试将您的更改一一引入,看看验证者抱怨的是哪一个?
-
@Qeole 是的,密件抄送工具工作得很好。 @pchaigno 是的,如果我删除对
task_cgroup_path()的调用,它就可以正常工作。
标签: linux-kernel cgroups ebpf bcc-bpf