eBPF.top · Head First eBPF

专题 / Kernel Internals

🐧 内核原理与版本

Linux 内核机制、新版本特性、LPC/LSFMM 进展与系统排障 · 共 26 篇

2026 5 篇

BPF

一次可挂上四百多个系统调用:tracing_multi 进 Linux 7.2

想给每一个系统调用都挂上延时统计时,过去常见两条路:要么写几百份几乎一样的 BPF 程序,要么退回 kprobe 多重挂接——安装灵活,但热路径往往更贵。Jiri Olsa 推动的 tracing_multi 改变了这件事:一条程序、 …

BPF

eBPF 安全分发:内核 6.18 证书签名机制实测

eBPF 让我们不改内核、不装模块就能往内核里放代码,但决定谁能放的,一直只是"你是不是 root",而不是"代码是谁构建的、有没有被改过"。内核模块十多年前就有签名机制,eBPF 一直缺这一环。

2025 1 篇

BPF

Linux 内核中的 eBPF 之旅:可观测性、安全性与网络

如你构建系统或运维集群时,频繁遇到代理 (agent)、iptables 或内核模块的各种限制,那么 eBPF 正是你一直在寻找的更安全、更快、更具动态性的技术选择。eBPF 允许你在 Linux 内核中运行小型且经安全验证的程序,实现运 …

2024 2 篇

BPF

Linus 强势拍板 6.11 合入: BPF 赋能调度器终成正果

在 2004 年,Linux 社区的 Con Kolivas 提出了可插拔式调度器的想法,旨在让内核中存在多个调度器,用户可在引导时选择。然而,该想法遭到了强烈反对,认为会导致调度器的碎片化。在 2021 年,Facebook …

BPFsecuritysystem

BPF 程序与信号交互大揭秘

在本文中,我们将探讨在 eBPF 程序内部触发信号的语义。此外,我们还将确定和观察在处理这些信号背后我的影响。

2023 3 篇

system

什么等等? I/O Wait ≠ I/O 瓶颈?

经过上述测试,我们可以看到 I/O Wait 可能是一个令人非常困惑的指标。如果 CPU 密集型的进程运行,I/O Wait 的值可能会降低,但是尽管 I/O Wait 指标下降了,但磁盘 I/O 仍然和原来一样阻塞进程执行。所以在判断是否 …

BPF

eBPF 进阶: 内核新特性进展一览

Linux 内核在 2022 年主要发布了 5.16-5.19 以及 6.0 和 6.1 这几个版本,每个版本都为 eBPF 引入了大量的新特性,本文将对这些新特性进行一点简要的介绍,更详细的资料请参考对应的链接信息。总体而言,eBPF 在 …

networkBPF

使用 XDP 实现负载均衡器实战

随着 eBPF 的发展,我们已经可以将 eBPF/XDP 程序直接部署在普通服务器上来实现负载均衡,从而节省掉用于专门部署 LVS 的机器。

2022 3 篇

systemfoundation

Ubuntu 21.10 安装调试符号

Linux 内核中的调试符号包含源代码级别的信息,如函数名称、函数调用约定、以及源代码行号到指令的映射。这些信息在调试或剖析内核的时候非常有用。在本文中,我将展示如何在 Ubuntu 上获得任何内核的调试符号。

foundationsystem

问题排查利器:Linux 原生跟踪工具 Ftrace 必知必会

如果你只是需要快速使用工具来进行问题排查,包括但不限于函数调用栈跟踪、函数调用子函数流程、函数返回结果,那么推荐你直接使用 Brendan Gregg 封装的 perf-tools工具即可,本文尝试从手工操作 Ftrace 跟踪工具的方式展 …

2021 8 篇

BPFnetworkcilium

Cilium 1.11 发布,带来内核级服务网格、拓扑感知路由....

Cilium 项目已逐渐成为万众瞩目之星,我们很自豪能够成为该项目的核心人员。几天前,我们发布了具有诸多新功能的 Cilium 1.11 版本,这是一个令人兴奋的版本。诸多新功能中也包括了万众期待的 Cilium Service Mesh …

systemfoundation

基于 Ubuntu 21.04 BPF 开发环境全攻略

本文基于 Ubuntu 21.04 版本使用 Vagrnt 和 VirtualBox 打造了 BPF 编译环境,同时提供了命令行升级内核和手工编译内核升级的方式

system

VirtualBox VM 空间瘦身记(vmdk)

在使用 VirtualBox( VMDK 模式)管理虚拟机的时候,我们经常会遇到一些编译安装场景(比如编译 Linux 内核),会导致磁盘空间急剧膨胀,但是在编译完成后即使我们删除了相关的文件,在 VM 虚拟机占用主机的空间却并没有减少, …

BPF-COREBTF

BPF BTF 详解

BTF(BPF 类型格式)是一种元数据格式,对与 BPF 程序 /map 有关的调试信息进行编码。BTF 这个名字最初是用来描述数据类型。后来,BTF 被扩展到包括已定义的子程序的函数信息和行信息。调试信息可用于 map 的更好打印、函数签 …

systemfoundation

Ubuntu 20.04 Kdump + Crash 初体验

本文基于 ubuntu 20.04 版本,对于 kdump 的原理、安装和使用进行了详细的说明,并给出了 crash 工具常用的命令说明

systemfoundation

来来,让我看看你究竟在干什么?

本文介绍了 pstack 打印程序运行堆栈,golang 中如何输出 goroutine 堆栈和如何使用 sysrq 输出系统运行的线程堆栈;同时对于函数级别的调用栈和子函数调用工具也给出了介绍

systemfoundation

Linux 进程管理

本文涵盖了 Linux 内核进程管理的各个方面,从进程基础知识、Linux 调度器 O(n)/O(1)/CFS 对比、进程的抢占、负载计算 PLET、SMP 负载均衡等维度,详细介绍了 Linux 进程管理相关的只是

system

使用 GDB + Qemu 调试 Linux 内核

本文介绍了在 Ubuntu 20.04 机器上使用 qemu + gdb 进行内核调试的整体流程; 最终使用 Eclipse-CDT 进行图形化设置的主要步骤

2020 4 篇

system

kpatch 热修 ipvs estimation_timer 内核延时问题

本文使用 kpatch 的 livepatch 的技术,避免了重启系统或者加载模块,解决了 kubernetes 环境下的 ipvs 规则数量过大,ipvs 的统计定时器 estimation_timer 在内核时间过长导致网络抖动的问题

system

【Linux负载系列-1】Linux 系统的平均负载(Load Avarage)

1. 平均负载(Load Average)概念 1.1 单核 CPU 系统 单个 CPU 的处理能力和负载情况可以用下图表达,如果为1.0 表明负载已经饱和,CPU 没有更多的处理能力: 图中的卡车等同于 CPU 的时间片概念(一般情况下对 …