随笔分类 - linux
摘要:Kubernetes 1.29版本中已经将nftables作为一个featureGates,本文简单整理了nftables的用法,便于后续理解kubernetes的nftables规则。文末给出了使用kubeadm部署启用nftables featureGates的配置文件。 如下内容来源nftab
阅读全文
摘要:目录简介运行制作vm文件系统制作vm基础文件系统文件创建contianerdClient创建cniInstance拉取基础镜像创建基础文件系统文件制作vm内核文件Create vm配置vm对象创建vm文件系统配置sshStart vmfirecracker start vm解析配置启动vm配置容器网
阅读全文
摘要:解决pod健康检查问题 引自:Solving the mystery of pods health checks failures in Kubernetes。原文中的某些描述并不清晰,本文作了调整。 很早以前,环境中的pod有时候会遇到健康检查失败的问题,但并没有什么明显表征,且几乎是立马就会恢复
阅读全文
摘要:BP-Wrapper:无锁竞争的替换算法系统框架 最近看了一个golang的高性能缓存ristretto,该缓存可以很好地实现如下功能: Concurrent High cache-hit ratio Memory-bounded (limit to configurable max memory
阅读全文
摘要:BPF CO-RE 示例代码解析 在BPF的可移植性和CO-RE一文的末尾提到了一个名为runqslower的工具,该工具用于展示在CPU run队列中停留的时间大于某一值的任务。现在以该工具来展示如何使用BPF CO-RE。 环境 本地测试的话,建议采用Ubuntu,其内核本身已经开启了BTF选项
阅读全文
摘要:Linux Clone函数 之前某一次有过一次面试,问了内核中是怎么创建命名空间的? 下面就来扒一扒clone的精髓,以及如何通过它创建命名空间。 注:本文的代码仅用于功能验证,不能用于生产。本文对clone的标志的描述顺序有变,主要考虑到连贯性。 使用clone创建进程和线程 从linux 2.3
阅读全文
摘要: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进行编译的话,可能会出现与本地头文件冲突的情况,如重复定义变量,结
阅读全文
摘要:分析核亲和性对高吞吐量的流的影响 本文翻译自Analysis of the Effect of Core Affinity on High-Throughput Flows 简介 网络吞吐量正在朝更高的数据传输率发展,与此同时,终端系统的处理器也在朝着多核发展。为了在多核终端系统上优化高速数据传输,
阅读全文
摘要:提高服务端性能的几个socket选项 在之前的一篇文章中,作者在配置了SO_REUSEPORT选项之后,使得应用的性能提高了数十倍。现在介绍socket选项中如下几个可以提升服务端性能的选项: SO_REUSEADDR SO_REUSEPORT SO_ATTACH_REUSEPORT_CBPF/EB
阅读全文
摘要:The Linux Scheduler: a Decade of Wasted Cores 这是一篇介绍Linux调度问题的文章,源自这篇文章。文章中涉及到的一些问题可能已经得到解决,但可以学习一下本文所表达的思想和对CPU调度的理解。 这是EuroSys 2016系列论文中的第一篇,讲述了三个部分
阅读全文
摘要:提高UDP交互性能 这是一篇个人认为非常非常厉害的文章,取自这里。讲述了如何提升UDP流的处理速率,但实际涉及的技术点不仅仅限于UDP。这篇文章中涉及的技术正好可以把前段时间了解的知识串联起来。作者:Toshiaki Makita 讲述内容 背景 提升网络性能的基本技术 如何提升UDP性能 作者介绍
阅读全文
摘要:扩展Linux网络栈 来自Linux内核文档。之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问。为了更好地理解本文章中的功能,将这篇文章穿插入内。 简介 本文的描述了Linux网络栈中的一组补充技术,用于增加多处理器系统的并行性和提高性能。 描述的结束
阅读全文
摘要:8. 流量控制的规则、准则和方法 8.1. Linux流量控制的通用规则 可以使用如下通用规则来学习Linux流量控制。可以使用tcng 或 tc进行初始化配置Linux下的流量控制结构。 任何执行整流功能的路由器都应该成为链路的瓶颈,并且应该调整为略低于最大可用的链路带宽。通过整流可以防止在其他路
阅读全文
摘要:Classful Queuing Disciplines 可以使用classful qdisc的代理来解锁Linux流量控制的灵活性和控制力。classful qdisc可以附加过滤器,允许将报文重定向到特定的类和子队列。 有几个常见的术语用来描述直接附加到root qdisc和终止类的类。附加到r
阅读全文
摘要:Classless Queuing Disciplines (qdiscs) 本文涉及的队列规则(Qdisc)都可以作为接口上的主qdisc,或作为一个classful qdiscs的叶子类。这些是Linux下使用的基本调度器。默认的调度器为pfifo_fast。 6.1 FIFO,先进先出(pfi
阅读全文
摘要:软件和工具 5.1 内核要求 许多发行版都为内核提供了模块化或整体式的流量控制(QOS)。自定义的内核可能不会支持这些特性。 对内核编译不了解或经验不多的用户建议阅读Kernel-HOWTO。对于熟练的内核编译者在了解流量控制之后就可以确定需要开启如下哪些选项。 例1.内核的编译选项 # # QoS
阅读全文
摘要:Linux流量控制的组件 流量控制元素与Linux组件之间的相关性: traditional element Linux component 入队列 修订:从用户或网络接收报文 整流 class 提供了整流的能力 调度 一个 qdisc 就是一个调度器。调度器可以是一个简单的FIFO,也可以变得很复
阅读全文
摘要:传统的流量控制元素 3.1 整流 整流器通过延迟报文来满足所需的传输速率。整流是一种通过延迟传输到输出队列的报文来满足期望的输出速率的机制。这是寻求带宽控制解决方案的用户面临的最常见的需求之一。延迟报文作为流量控制解决方案的一部分,使得每种整流机制都变成了一种不会节省工作量的机制,即"为了延迟报文需
阅读全文
摘要:Overview of Concepts 本章将介绍流量控制,研究出现流量控制的原因及其优缺点,并介绍流量控制的关键概念。 了解Linux的流量控制的目的:一是为了更好地理解底层对报文的处理逻辑,二是在流量控制中使用了很多很好的流量处理方法,可以学习一下这些方法和思想,翻译自:https://tld
阅读全文