经常和处理器的这些概念打交道,每个的意思都蛮熟,但是这个缩写还是时常出现断片情况,总结一下。首先是更基础的几个概念:socket:就是主板上插cpu的槽的数目,也即管理员说的”路“,一般做server chip说的dual-socket,就是双路直连的芯...
阅读全文...
linux 抢占模型
Linux中用户态程序总是preemptible的,内核使用clock tick中断用户态程序切换到别的线程,不用等待用户态程序主动放弃CPU。但在Kernel Preemption被引入之前,一个线程进入内核态,不放弃CPU也不返回用户态就能一直占用C...
阅读全文...
阅读全文...
Linux伯克利子系统之八:Linux tracing system对比分析
Linux trace技术发展已久,经常看到很多的专业术语,从perf LTTng systemtap bpftrace tracepoint trace BCC bpf ebpf等词汇,这些关键的词汇有着怎样的联系和关联,通过下面的这个图可以直观的...
阅读全文...
阅读全文...
Linux伯克利子系统之七:静态跟踪点tracepoint
在《linux-observability-with-bpf》中第4章节中的案例中,有一个tracepoint bpf_prog_load的实例,在我自己的云主机上,执行不通过。发现网上也有一些人遇到。针对该问题分析了一下具体的原因。 根本原因是...
阅读全文...
阅读全文...
Linux伯克利子系统之六:使用bpf实现xdp的例子
本篇文章参考《Linux Observability with BPF》中第7章的例子,主要功能是借助于ip命令作为前端,对其他主机访问tcp的8000端口进行限制,这里需要使用较新版本的iproute2软件工具包.
下载编译iproute2...
阅读全文...
阅读全文...
Linux伯克利子系统之五:Systemtap BPF/BCC bpftrace 实践对比
本篇文章通过一个案例,对systemtap、BPF/BCC、bpftrace三种不同类型的内核探测工具进行剖析和对比。这个程序就是简单对icmp_rcv函数,收到icmp报文,打印出对应的源IP地址和目的IP地址。使用BPF/BCC1.1在centos8...
阅读全文...
阅读全文...
Linux伯克利子系统之四:使用sockmap示例:bypass内核协议栈
当我们使用127.0.0.1的localhost地址,在本地机器上进行发送和接受数据时,整个数据的发送还是要经过完整的内核协议栈。Cilimu的网络借用bfp的sockmap bypass提高整个网络的性能,参考《How to use eBPF for ...
阅读全文...
阅读全文...
Linux伯克利子系统之三:BPF示例程序
上一篇文章中BPF的例子是以BCC的整体框架为基础,本篇介绍一下基于libbpf库函数为基础,结合内核中的bpf的sample为基础编写一个BPF的程序,本篇介绍是以《linux-observability-with-bpf》这本书第二章的例子为基础,由...
阅读全文...
阅读全文...
Linux伯克利子系统之二:基于BCC的BPF示例程序
结合前面一篇针对BPF的学习,本篇文章重点介绍编写一个对内核系统调用exec的例子。本测试例子基本上包含了全部的,syscall类别系统调用的BPF的框架。#!/usr/bin/python
from __future__ import print_fu...
阅读全文...
阅读全文...
Linux伯克利子系统之一:BPF概述
BPF的英文是Berkeley Packet Filter的缩写,直白的翻译过来就是伯克利数据包过滤器,从这个英文翻译可以看出,BPF原先是针对网络的数据包进行各种操作处理的一个工具集。目前已经发展到对内核事件和用户空间事件进行跟踪的一套综合的工具集...
阅读全文...
阅读全文...