前一章讲了eBPF为什么这么吊,不理解没关系,现在开始,我们通过一个“Helloworld”例子,来真正入门一下。 BCCPython框架是上手eBPF的最友好方式。来看。 2.1BCC的HelloWorld 下面的程序是一段BCC框架的HelloWorld程序。 !/usr/bin/python3 frombccimportBPF program=r""" inthello(voidctx){ bpf_trace_printk("HelloWorld!\n"); return0; } """ b=BPF(text=program) syscall=b.get_syscall_fnna...

  O727pnVn7Oyt   2024年04月01日   44   0   0 Linux

本系列为《LearningeBPF》一书的翻译系列。(内容并非机翻,部分夹带私货)笔者学习自用,欢迎大家讨论学习。 转载请联系笔者或注明出处,谢谢。 各个章节内容: 1)背景介绍:为啥eBPF很吊,以及内核如何支持这种超能力的。 2)给出一个“HelloWorld”例子,介绍eBPF和`maps`的概念。 3)深入介绍eBPF程序,以及它们在内核中的运行原理。 4)介绍eBFP用户态和内核态交互的接口。 5)介绍eBPF跨内核版本的能力:`CO-RE`。 6)介绍eBPF验证器(Verifier)这个关键环节。 7)介绍不同类型的eBPF程序及其连接点。 8)聚焦eBPF在网络中的应用。 9)...

  O727pnVn7Oyt   2024年03月29日   73   0   0 Linux

这两天有空,继续更新一篇有关eBPFBCC框架尾调用的内容。 eBPF技术很新,能够参考的中文资料很少,而对于BCC框架而言,优秀的中文介绍和教程更是凤毛麟角。我尝试去网上检索有关尾调用的中文资料,BCC框架的几乎没有。即使找到了,这些资料也难以给出可供参考和正确运行的例子。 BCC框架的中文资料也就图一乐,真正有指导意义的,还得去看BrendanGregg大神的博客和bcc项目。 既然如此,我来抛砖引玉,就简单介绍一下eBPF尾调用在BCC框架中是如何应用的吧。 1何为尾调用? 引用ebpf.io网站的一句介绍:“尾调用允许eBPF调用和执行另一个eBPF并替换执行上下文,类似于一个进程...

  O727pnVn7Oyt   2024年01月15日   19   0   0 Linux

eBPF中实现内核态代码与用户态代码是可以实时通信的,这主要靠BPF映射来实现。 BPF映射是内核空间的一段内存,以键值对的方式存储。内核态程序可以直接访问BPF映射,用户态需要通过系统调用才能访问这段地址。 BPF映射有很多种类型,如下表所示。 类型 说明 BPF_HASH 哈希表 BPF_ARRAY 数组 BPF_HISTOGRAM 直方图 BPF_STACK_TRACE 跟踪栈 BPF_PERF_ARRAY 硬件性能数组 BPF_PERCPU_HASH 单CPU哈希表 BPF_PERCPU_ARRAY 单CPU数组 BPF_LPM_TRIE 最长...

  O727pnVn7Oyt   2024年01月05日   15   0   0 Linux

本文是eBPF系列的第二篇文章,我们来学习eBPFBCC框架的进阶用法,对上一篇文章中的代码进行升级,动态输出进程运行时的参数情况。 主要内容包括: 通过kprobe挂载内核事件的eBPF程序要如何编写? 通过tracepoint挂载内核事件的eBPF程序要如何编写? eBPF的程序事件类型有哪些? 在开始之前,我们来回顾一下前一篇文章的内容。 前一篇文章介绍了如何通过BCC框架来编写一个简单的eBPF程序。在内核空间,使用c程序实现eBPF的核心逻辑;在用户空间,使用python脚本作为eBPF程序的控制、加载和展示。其中,内核态通过若干eBPFhelper函数,获取内核观测数据,并...

  O727pnVn7Oyt   2023年12月29日   15   0   0 Linux

闲言少叙,本文记录了如何零基础通过BCC框架,入门eBPF程序的开发,并实现几个简易的程序。 有关eBPF的介绍,网络上的资料有很多,本文暂且先不深入讨论,后面会再出一篇文章详细分析其原理和功能。 我们目前只需要知道,eBPF实际上是一种过滤器,这种过滤器几乎可以插入内核源码的任意的流程和环节中,实现自定义的逻辑。由于eBPF自身的若干限制,使它最常见的用法是,附着在内核某些关键流程上,抓取一些关键数据,用于监控、统计和分析。 1一个简单的例子 下面是一个简单的例子,我想实现一个程序,用来实时监控内核可执行文件(ELF)的加载。这个程序运行如下: 如图所示,每当有一个ELF文件被加载时,可以...

  O727pnVn7Oyt   2023年12月25日   16   0   0 Linux
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~