ArthurChiao's Blog

Recent Posts

  • 2022-08-06

    The Mythical Container net.core.somaxconn (2022)

    TL; DRTry to answer several quick questions with a long post: On creating a pod in Kubernetes, if somaxconn is not specified, what the default value will be, and who will set it? If changing node’s sysctl settings, will they be propagated to pods? Are all sysctl p...

  • 2022-07-25

    Differentiate three types of eBPF redirections (2022)

    TL; DRThere are three types of eBPF redirection fashions in Linux kernel that mayconfuse developers often: bpf_redirect_peer() bpf_redirect_neighbor() bpf_redirect()This post helps to clarify them by digging into the code in history order,and also discusses usages...

  • 2022-07-18

    Linux tracing/profiling 基础:符号表、调用栈、perf/bpftrace 示例等(2022)

    整理一些 tracing/profiling 笔记,内容主要来自Practical Linux tracing系列几篇文章。 1 引言 1.1 热点与调用栈分析(perf record/report/script) 1.2 符号(symbols) 1.3 小结 2 极简程序 hello-world:探究符号 2.1 C 源码 2.2 编译成目标文件(不带 -g) 2.3 查看目标文件(objdump/readelf) 2.4 用...

  • 2022-07-14

    Cracking Kubernetes Authentication (AuthN) Model (2022)

    Part of this post’s contents first appeared in User and workload identities in Kubernetes,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 andimp...

  • 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...