ArthurChiao's Blog

Recent Posts

  • 2022-07-02

    Linux 网络栈原理、监控与调优:前言(2022)

    本文尝试从技术研发与工程实践(而非纯理论学习)角度,在原理与实现、监控告警、配置调优三方面介绍内核5.10 网络栈。由于内容非常多,因此分为了几篇系列文章。原理与实现 Linux 网络栈原理、监控与调优:前言 Linux 中断(IRQ/softirq)基础:原理及内核实现 Linux 网络栈接收数据(RX):原理及内核实现 Linux 网络栈发送数据(TX):原理及内核实现(TBD)监控 Monitoring Linux Network Stack调优 Linux 网络栈接收数据(RX):配置调优 Linux 网络...

  • 2022-07-02

    Linux 网络栈接收数据(RX):配置调优(2022)

    本文尝试从技术研发与工程实践(而非纯理论学习)角度,在原理与实现、监控告警、配置调优三方面介绍内核5.10 网络栈。由于内容非常多,因此分为了几篇系列文章。原理与实现 Linux 网络栈原理、监控与调优:前言 Linux 中断(IRQ/softirq)基础:原理及内核实现 Linux 网络栈接收数据(RX):原理及内核实现监控 Monitoring Linux Network Stack调优 Linux 网络栈接收数据(RX):配置调优 1 网络设备驱动初始化 1.1 调整 RX 队列数量(etht...

  • 2022-07-02

    Linux 网络栈接收数据(RX):原理及内核实现(2022)

    Fig. Steps of Linux kernel receiving data process and the corresponding chapters in this post本文尝试从技术研发与工程实践(而非纯理论学习)角度,在原理与实现、监控告警、配置调优三方面介绍内核5.10 网络栈。由于内容非常多,因此分为了几篇系列文章。原理与实现 Linux 网络栈原理、监控与调优:前言 Linux 中断(IRQ/softirq)基础:原理及内核实现 Linux 网络栈接收数据(RX):原理及内核实现 Linux 网...

  • 2022-07-02

    Linux 中断(IRQ/softirq)基础:原理及内核实现(2022)

    1 什么是中断? 2 硬中断 2.1 中断处理流程 2.2 中断类型 系统支持的最大硬中断数量 MSI(Message Signaled Interrupts)/ MSI-X 2.3 Maskable and non-maskable 2.4 问题:执行足够快 vs 逻辑比较复杂 2.5 解决方式:延后中断处理(deferred interrupt handling) 3 ...

  • 2022-06-04

    K8s 的核心是 API 而非容器:从理论到 CRD 实践(2022)

    本文串联了以下几篇文章的核心部分, Kubernetes isn’t about containers,2021 Kubernetes is a Database, 2019 CRD is just a table in Kubernetes, 2020论述了 K8s 的核心价值是其通用、跨厂商和平台、可灵活扩展的声明式 API 框架,而不是容器(虽然容器是它成功的基础);然后手动创建一个 API extension(CRD),通过测试和类比来对这一论述有一个更直观的理解。例子及测试基于 K8s v1.21.0,感谢原作者...

  • 2022-05-19

    K8s 集群稳定性:LIST 请求源码分析、性能评估与大规模基础服务部署调优

    对于非结构化的数据存储系统来说,LIST 操作通常都是非常重量级的,不仅占用大量的磁盘 IO、网络带宽和 CPU,而且会影响同时间段的其他请求(尤其是响应延迟要求极高的选主请求),是集群稳定性的一大杀手。例如,对于 Ceph 对象存储来说,每个 LIST bucket 请求都需要去多个磁盘中捞出这个bucket 的全部数据;不仅自身很慢,还影响了同一时间段内的其他普通读写请求,因为 IO是共享的,导致响应延迟上升乃至超时。如果 bucket 内的对象非常多(例如用作harbor/docker-registry 的存储后端),LI...

  • 2022-05-02

    BPF 进阶笔记(四):调试 BPF 程序

    关于 “BPF 进阶笔记” 系列平时学习和使用 BPF 时所整理。由于是笔记而非教程,因此内容不会追求连贯,有基础的同学可作查漏补缺之用。文中涉及的代码,如无特殊说明,均基于内核 5.10。 BPF 进阶笔记(一):BPF 程序(BPF Prog)类型详解:使用场景、函数签名、执行位置及程序示例 BPF 进阶笔记(二):BPF Map 类型详解:使用场景、程序示例 BPF 进阶笔记(三):BPF Map 内核实现 BPF 进阶笔记(四):调试 BPF 程序 BPF 进阶笔记(五):几种 TCP 相关的 BPF(sock...

  • 2022-04-25

    [译] BPF ring buffer:使用场景、核心设计及程序示例(2020)

    译者序本文翻译自 BPF 核心开发者 Andrii Nakryiko 2020 的一篇文章:BPF ring buffer。文章介绍了 BPF ring buffer 解决的问题及背后的设计,并给出了一些代码示例和内核patch 链接,深度和广度兼备,是学习 ring buffer 的极佳参考。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 译者序 1 ringbuf 相比 perfbuf 的改进 1.1 降低内存开销(memory overhead) 1.2 保...

  • 2022-04-17

    Cracking Kubernetes RBAC Authorization (AuthZ) Model (2022)

    This post first appeared as Limiting access to Kubernetes resources with RBAC,which was kindly edited, re-illustrated and exemplified by learnk8s.io, andvery friendly to beginners.The version posted here in contrast has a biased focus on the design andimplementation,...

  • 2022-02-06

    [译] [论文] Raft 共识算法(及 etcd/raft 源码解析)(USENIX, 2014)

    译者序本文翻译自 USENIX 2014 论文In Search of an Understandable Consensus Algorithm (Extended Version),文中提出了如今已广泛使用的 Raft 共识算法。在 Raft 之前,Paxos 几乎是共识算法的代名词,但它有两个严重缺点: 很难准确理解(即使对专业研究者和该领域的教授) 很难正确实现(复杂 + 某些理论描述比较模糊)结果正如 Chubby(基于 Paxos 的 Google 分布式锁服务,是 Google 众多全球分布式系统的基础)开发者...