计算机基础实战课
彭东
网名 LMOS,Intel 傲腾项目关键开发者
19719 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 57 讲
计算机基础实战课
15
15
1.0x
00:00/00:00
登录|注册

42|性能调优:性能调优工具eBPF和调优方法

你好,我是 LMOS。
在之前的学习中,我们了解到了很多计算机基础相关的知识,也学过了 iostat 等观察系统运行状态的命令。但在我们的实际工程中,排查分析一些具体的性能优化问题或者定位一些故障时,可能需要在不同的命令间来回切换、反复排查。
那么有没有一款工具可以贯穿操作系统的各个模块,帮我们准确分析运行的程序、系统的运行细节呢?当然有,答案就是 eBPF。

从 BPF 到 eBPF

eBPF 是怎么来的,还要从 1992 年说起。当年伯克利实验室的 Steven McCanne 和 Van Jacobso 为了解决高性能的抓包、分析网络数据包的问题,在 BSD 操作系统上设计出了一种叫做伯克利数据包过滤器(BSD Packet Filter)的机制,并发表了《The BSD Packet Filter:A New Architecture for User-level Packet Capture》这篇论文(论文链接在这里)。
为了让内核态能够高效率地处理数据包,这套机制引入了一套只有 2 个 32 位寄存器、16 个内存位和 32 个指令集的轻量级虚拟机,包过滤技术的性能因此提升了 20 多倍。
因为这套方案设计的太好用了,后来在 1997 年的时候,Linux 操作系统从 Linux2.1.75 版本开始,就把 BPF 合并到了内核中了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

eBPF:内核扩展机制的强大利器 eBPF作为一种强大的内核扩展机制,通过在内核中运行的虚拟机,实现了对程序和系统的全面监控和调优。文章介绍了eBPF的原理和架构,以及在Ubuntu 20.04系统上使用eBPF的示例。eBPF的应用领域包括观测、调试、性能优化、动态扩展等。Cilium项目基于eBPF提供了网络、安全和可观察性的解决方案,通过动态插入Linux内核实现高性能网络、多集群和多云能力等功能。Falco项目则利用eBPF嵌入到Linux内核中,实时监控系统调用行为,提升系统安全性。此外,微软也在Windows系统上支持eBPF程序运行。总之,eBPF以其灵活动态的内核扩展能力,为工程师提供了丰富的技术应用实战思路。文章还提出了思考题,探讨了eBPF可能带来的新安全问题。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《计算机基础实战课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • LockedX
    eBPF有访问内核的权限,如果被误用,后果不堪设想,所以要谨慎合理的使用eBPF。

    作者回复: 是的 很危险

    2022-11-07归属地:湖北
    2
    2
  • 熊悟空的凶
    eBPF 对系统有侵入性吗,是类似于Agent技术么

    作者回复: 有啊

    2022-11-07归属地:湖北
    1
  • 童谣
    这个怎么用?比如我要做一些性能分析,类似io、cpu突刺较高,ebpf有帮助吗?

    编辑回复: 可以谷歌一下,也可以搜一下隔壁的“ebpf核心技术与实战”,希望对你有帮助

    2023-11-09归属地:上海
  • 苏流郁宓
    eBPF通过安全认证等尽可能排除无用的干扰,但问题是也增加了复杂度。 也就是eBPF应该在关键时候用,而不是频繁的滥用。滥用容易增加系统的复杂度!技术是中性的,有时解决一个问题也容易增加新的问题!越复杂就越容易出错,普通电脑大不了关机重启,但是对数据库电脑,应该是能减则减。性能和稳定兼顾(就比如双11数据库电脑哪怕停几分钟就是大损失)

    作者回复: 是的,你学到了

    2022-11-07归属地:湖北
  • peter
    请教老师两个问题: Q1:BPF比协议栈还优先获取数据报吗? 文中有“当数据报文从设备驱动上传输过来之后,首先会被分流到 BPF”,从这句话看,数据先到 BPF,然后到协议栈,是这样吗?(我感觉应该是先到协议栈,协议栈优先级最高) Q2:协议栈会不处理数据吗? 文中有“如果某些设备驱动发过来的数据, 找不到对应的 BPF 处理逻辑的话,则会由正常的协议栈来处理。”, 从这句话看,如果BPF处理,则协议栈就不处理,是这样吗?(我的理解是:协议栈肯定要处理,BPF是 辅助处理的

    作者回复: Q1:是的 Q2 有ebpf 处理 栈议栈就不会处理了

    2022-11-07归属地:湖北
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部