2020年11月16日
1. Linux Load 负载高 在 Linux 系统上平均负载包括了运行的进程和正在等待运行的进程,也包括了不可中断状态执行磁盘 I/O 的进程( Uninterruptible Sleep))。这意味着在 Linux 上不能单用 CPU 余量或者饱和度,因为不能单从这个值来推断 CPU 或者磁盘负载。 Linux 系统中如果等待 IO 的进程多了,那么也会导致系统的平均负载升高,则是因为平均负……
阅读全文
2020年11月14日
1. 平均负载(Load Average)概念 1.1 单核 CPU 系统 单个 CPU 的处理能力和负载情况可以用下图表达,如果为1.0 表明负载已经饱和,CPU 没有更多的处理能力: 图中的卡车等同于 CPU 的时间片概念(一般情况下对应于需要处理的进程),Linux 称之为运行队列长度。 运行队列长度 = 正在运行的 + 等待运行……
阅读全文
2020年11月12日
1. 前言 在 bpf 的实现中我们经常在内核 helper 函数 bpf_get_current_pid_tgid() 来进行用户空间进程 pid 进行过滤,那么到底如何写呢? 在 BCC 项目中有不少程序直接使用 bpf_get_current_pid_tgid() 直接与用户空间传入的 pid 对比,也有使用 bpf_get_current_pid_tgid() >> 32 进行过滤的,那么使用者或者开发者到底应该使用哪种方式,这篇文章可以帮你彻底解决这类的疑惑。 2. Linux 进程与线程 在 Linux 系统中进程在……
阅读全文
2020年11月11日
1. 内核版本选择 补丁 Prepatch: Prepatch 或 “RC” 内核是主线内核的预发布版本,主要针对其他内核开发者和 Linux 爱好者。它们必须从源码中编译,并且通常包含新的功能,这些功能必须在稳定发布之前进行测试。Prepatch 内核由 Linus Torvalds 维护和发布。 主线版 Mainline: 主线版本由 Linus Torvalds 维护。它是介绍所有新……
阅读全文
2020年11月10日
1. 为什么要学习 BPF 可以先从 ebpf.io 网站获取一个简单的了解,首页内容翻译如下。 Linux 内核一直是实现监控/可观察性、网络和安全性的理想场所。不幸的是,这往往是不切实际的,因为它需要改变内核源代码或加载内核模块,并导致层层抽象叠加。eBPF 是一项革命性的技术,它可以在 Linux 内核中运行沙盒程序,而无需改……
阅读全文
2020年11月8日
eBPF 技术简介 由范老师和我一起翻译的图书 《Linux内核观测技术BPF》 已经在 JD 上有现货,欢迎感兴趣 BPF 技术的同学选购。链接地址 https://item.jd.com/72110825905.html “eBPF 是我见过的 Linux 中最神奇的技术,没有之一,已成为 Linux 内核中顶级子模块,从 tcpdump 中用作网络包过滤的经典 cbpf,到成为通用 Linux 内核技术的 eBPF,已经完成华丽蜕……
阅读全文
2020年11月7日
1. 概览 本系列博客使用 Markdown 编写,建站工具为 Hugo,Markdown 编辑器采用 Typora,图床使用自建的 Chevereto,生产环境部署采用 Nginx + Docker 。 最终形成的效果是可以对于本地的截图在 Typora 粘贴过程中自动上传到 Chevereto 搭建的图床,极大地方便了图文排列的 Markdown 问题,由于采用自建图床也避免了外部商用……
阅读全文