随笔分类 - ebpf
摘要:Linux debugging, profiling and tracing training 本文来自bootlin的公开培训文档。 Debugging, Profiling, Tracing Debugging ▶ 查找和修复软件/系统中存在的问题 ▶ 可能会用到不同的工具和方法: 交互式调试(
阅读全文
摘要:BPF for storage:一种受外核启发的反式 译自:BPF for storage: an exokernel-inspired approach BPF主要用于报文处理,通过绕过网络栈提高报文的处理速度。本文则用于通过绕过存储栈(文件系统、BIO等层)来提高存储的读写效率,但在实现过程中也
阅读全文
摘要:BPF CO-RE 示例代码解析 在BPF的可移植性和CO-RE一文的末尾提到了一个名为runqslower的工具,该工具用于展示在CPU run队列中停留的时间大于某一值的任务。现在以该工具来展示如何使用BPF CO-RE。 环境 本地测试的话,建议采用Ubuntu,其内核本身已经开启了BTF选项
阅读全文
摘要:BCC和libbpf的转换 本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE。BPF CO-RE可以参见上一篇博文。 为什么是libbpf和BPF CO-RE? 历史上,当需要开发一个BPF应用时可以选择BCC 框架,在实现各种用于Tracepoints的BPF程序时需
阅读全文
摘要:BPF的可移植性和CO-RE (Compile Once – Run Everywhere) 在上一篇文章中介绍了提高socket性能的几个socket选项,其中给出了几个源于内核源码树中的例子,如果选择使用内核树中的Makefile进行编译的话,可能会出现与本地头文件冲突的情况,如重复定义变量,结
阅读全文
摘要:提高服务端性能的几个socket选项 在之前的一篇文章中,作者在配置了SO_REUSEPORT选项之后,使得应用的性能提高了数十倍。现在介绍socket选项中如下几个可以提升服务端性能的选项: SO_REUSEADDR SO_REUSEPORT SO_ATTACH_REUSEPORT_CBPF/EB
阅读全文
摘要:全面介绍eBPF-概念 前面介绍了BCC可观测性和BCC网络,但对底层使用的eBPF的介绍相对较少,且官方欠缺对网络方面的介绍。下面对eBPF进行全面介绍。 BPF概述 下面内容来自Linux官方文档: eBPF的演进 最初的[Berkeley Packet Filter (BPF) PDF]是为捕
阅读全文
摘要:Linux探测工具BCC(网络) 承接上文,本节以ICMP和TCP为例介绍与网络相关的部分内容。 Icmp的探测 首先看下促使我学习bcc的这篇文章中的程序traceicmpsoftirq.py,使用该程序的本意是找出对ping响应的进程位于哪个CPU core上,然后使用perf扫描该core,找
阅读全文
摘要:BCC(可观测性) PS:学习BCC源自这篇文章 简介 BCC是一个用于跟踪内核和操作程序的工具集,其软件包中包含了一些有用的工具和例子,它扩展了BPF(Berkeley Packet Filters),通常被称为eBPF , 在Linux3.15中首次引入,但大多数BCC的功能需要Libux4.1
阅读全文
摘要:使用k3s测试Cilium,安装步骤可以参见官方文档 Cilium安装使用 docker安装 使用如下命令安装最新版本的docker yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 yum-config-manager
阅读全文
摘要:Cilium架构 译自:http://docs.cilium.io/en/stable/architecture/ 本文档描述了Cilium的架构。它通过记录BPF数据路径(datapath)的钩子来实现Cilium数据路径,那么Cilium数据路径是如何与容器编排层继承,以及如何在各层(如BPF数
阅读全文
摘要:基于eBPF的微服务网络安全 翻译自:Network security for microservices with eBPF 一些开源的kubernetes工具已经开始使用eBPF,这些工具大多数与网络,监控和安全相关。 本文不会涵盖eBPF的方方面面,只作为一个入门指南,包括Linux内核的BP
阅读全文