- 博客(2173)
- 收藏
- 关注
原创 Linux内核inotify联动端侧模型:实现敏感配置文件变动的毫秒级语义差分告警
运维堡垒机与核心边缘节点上,以及各类服务的核心配置文件始终是攻防对抗的最前线。传统的内核审计大多仰仗auditd规则或轻量级的inotify机制。当文件发生写入关闭事件()时,工具通常会计算 SHA-256 哈希值或触发固定正则规则。然而,在自动化运维流水线、定时任务刷新或批量密钥下发场景下,这种基于机械哈希或正则匹配的做法极易陷入两难:若规则过严,任何合法的注释增删、配置顺序重排都会引发高频报警,形成警报疲劳;若规则过宽,攻击者仅在中插入一行看似无害的或修改微小的权限位,就会滑过防御视线。
2026-10-13 09:26:59
3
原创 Linux命名空间泄漏排查实战:利用lsns与proc文件系统诊断并清理孤儿Namespace
在 Kubernetes 容器集群、轻量级 CI/CD 自动化沙箱以及大规模微服务边缘节点上,容器与进程的频繁拉起与销毁是日常基线。在理想状态下,Linux 命名空间(Namespace)遵循严格的生命周期管理:当属于该命名空间内的最后一个进程终止退出时,内核会自动递减其引用计数,并释放该命名空间所占用的所有内核数据结构。然而,在生产环境长期高负荷运转后,许多节点往往会出现诡异的“慢性衰竭”:物理可用内存持续缓慢缩水,内核 SLUB 缓存中的或计数单调攀升;尝试拉起新容器时突然频繁抛出或。
2026-10-13 09:26:15
50
原创 命令行智能帮助生成器:针对长命令与晦涩参数的本地实时拆解与解释实践
在运维与底层系统调试的日常工作中,终端屏幕上频繁充斥着结构极其繁复的长命令。无论是长达数十个参数的ffmpeg复杂滤镜链、带着各种掩码与表项跳转的iptables规则,还是带有各种压缩标志与排除条件的tarrsync指令,开发者与运维工程师经常陷入两难:面对陌生或久未使用的晦涩参数组合,调出man手册往往要面对数千行甚至上万行的枯燥文本,按搜索翻页极其耗时;而直接将包含内网拓扑、密钥路径与特定业务参数的长命令复制到公网大模型网页端,不仅破坏工作流的连贯性,更有严重的数据外泄隐患。
2026-10-13 09:25:35
73
原创 GLM 5.3辅助Linux内核补丁工程:自动化生成严谨Commit Message与差异说明
向 Linux 内核社区(LKML)或企业内部的板级支持包(BSP)仓库提交代码时,补丁被维护者直接拒收(Reject)的原因,往往不是 C 语言代码写得不够深奥,而是提交信息(Commit Message)极其不合规。内核社区历经三十年沉淀出的补丁文化,对 Commit Message 的格式要求达到了近乎偏执的程度:标题必须严格包含子系统前缀(如必须采用命令式祈使语气;第一段必须直奔故障现场与复现机理,讲清楚“系统在什么条件下发生了什么灾难(Crash/Panic/Leak)”;
2026-10-13 09:24:57
55
原创 边缘设备量化模型算子耗时摸底:用Linux perf深度定位矩阵乘法CPU瓶颈
绝不盲目相信理论 TOPS:硬件规格书上的峰值 TOPS 是在理想寄存器复用、零缓存失效、双发射指令全满时测出的理论极值。工程落地时,实际能榨取 30%~50% 就已经是优秀水准。访存局部性永远优于计算技巧:在没有做精细 Cache 分块与对齐之前,任何手写内联汇编的微小调优都是徒劳的。把数据死死锁在 L1/L2 缓存内,收益远高于换用更花哨的算法。绑定大核与调频锁定:边缘设备普遍采用 big.LITTLE 混合架构(如 4 个 A76 大核 + 4 个 A55 小核),测试性能前必须通过。
2026-10-13 09:24:18
104
原创 警惕极简技术栈中的工具链膨胀:底层工程师对Node.js生态侵蚀的审视与反思
在系统级开发、Linux 内核模块维护以及高性能嵌入式工程中,软件工程的黄金法则始终是“简单性”(Simplicity)与“确定性”(Determinism)。一个成熟的 C 语言或汇编底层工程,通常仅依赖一套经过严苛验证的 GCC/Clang 编译器、GNU Make 或 Ninja 构建系统,以及几行清晰的 POSIX Shell 脚本。整个源码树层次分明,单次增量编译在毫秒级完成,系统状态完全透明且处于版本控制的绝对掌控之下。然而,近年来一种名为“现代化工程化”的思潮悄然渗透到底层软件团队中。
2026-10-13 09:23:42
109
原创 C23增强的静态断言static_assert:单参数断言让底层结构体内存对齐校验更严谨
在 Linux 内核模块、硬件设备驱动开发以及高性能网络协议解析等系统级工程中,结构体内存布局的确定性直接决定了系统的生与死。当通过直接内存访问(DMA)向硬件寄存器提交控制命令,或者跨进程通过共享内存(IPC)读写数据结构时,结构体的总字节大小(sizeof)、内存对齐边界(alignof)以及关键成员在结构体内的物理偏移量(offsetof),必须与硬件规范或通信协议保持严丝合缝的一致。
2026-10-13 09:23:02
117
原创 用eBPF内核探测捕获丢弃的UDP数据包:精确定位高并发DNS与音视频流传输故障
UDP 协议的轻量与高效并不意味着我们在运维上必须妥协于不可测的黑盒。通过将 eBPF 挂载至内核协议栈的核心出口,我们把原来只能靠猜测排查的静默丢包问题,转变为具备精确元数据、毫秒级告警的白盒观测工程,彻底终结了高并发 UDP 传输排障的被动局面。
2026-10-13 09:22:24
100
原创 剖析Linux SLUB分配器伙伴系统回退路径:本地Slab耗尽时的内存申请全流程
在 Linux 内核的内存管理子系统中,绝大多数内核对象的分配都在数十字节到几千字节之间。例如进程描述符、虚拟内存区域、文件对象以及套接字缓冲区sk_buff。如果直接向底层的伙伴系统(Buddy System)申请内存,最细粒度也是整整一个 4KB 物理页,这不仅会导致严重的内部碎片浪费,还会因频繁陷入全局页帧管理而拖垮性能。为了解决这一矛盾,现代 Linux 普遍采用 SLUB 分配器作为默认的 slab 机制。
2026-10-13 09:21:43
61
原创 io_uring驱动的多盘高并发读写实践:单进程榨干多块NVMe SSD吞吐的架构设计
在现代全闪存分布式存储系统与自研高性能数据库中,存储硬件的技术迭代正以惊人的速度推进。单块 PCIe 4.0/5.0 NVMe SSD 的随机读性能已突破 100 万至 150 万 IOPS,顺序读取吞吐高达 7GB/s。在典型的 2U 存储服务器上,通常密集部署着 4 至 8 块企业级 NVMe 固态硬盘,硬件整体能够提供的极限随机读算力可轻易跨越 800 万 IOPS,聚合带宽超过 40GB/s。然而,传统的 Linux I/O 架构在面对这种恐怖的硬件吞吐时显得力不从心。
2026-10-13 09:20:59
68
原创 端侧模型输出与Linux管道集成:构建零格式污染的标准流JSON-RPC接口
在端侧嵌入式 Linux 设备或边缘计算网关中,将量化后的小型大语言模型(SLM,如 Qwen-1.5B、Llama-3-1B)集成至运维与自动化链路时,最脆弱的环节往往不是推理本身的算力瓶颈,而是模型输出与传统 Linux 工具链(如jqawkxargs)对接时的管道协议设计。许多工程团队直接将模型的原生 CLI 封装为子进程,通过标准输出(stdout)捕获生成的文本。
2026-10-12 20:24:41
4
原创 Linux底层隔离在数据库沙箱的应用:结合Namespaces与Cgroups构建轻量安全隔离区
在云原生多租户数据库平台、在线 SQL 沙箱以及支持外部动态库与用户自定义函数(UDF)的高性能数据库系统中,安全边界与性能损耗之间的博弈始终是一大核心痛点。允许用户执行动态载入的 C/C++ 共享库或未经验证的复杂查询,极易引发内存耗尽(OOM)、CPU 争抢,乃至通过底层系统调用读取宿主机敏感凭据。许多团队习惯性地直接引入 Docker 或 K8s Pod 作为执行单元。
2026-10-12 20:24:04
44
原创 终端命令参数智能推测补全:基于Shell拓扑历史与动态环境依赖的算法实现
在终端交互的日常工作中,工程效率往往被琐碎的参数拼写所消耗。尽管 Zsh、Fish 和各种社区插件(如fzf历史反向搜索)极大地改善了敲击体验,但它们的推测逻辑本质上仍然是“扁平”且“机械”的:要么依赖静态的 Manpage 参数字典,要么仅根据前缀或子串对历史命令列表进行无差别的线性匹配。现实开发中的操作流从来不是孤立的字符串。输入时,你最期望补全的是当前工作分支,而不是半年前推送到旧仓库的分支名;输入时,你关注的是当前正在运行或刚刚崩溃重启的容器,而不是已经停止数周的僵尸镜像;而当前置命令以退出码。
2026-10-12 20:23:26
26
原创 基于GLM5.3定位内核整数溢出:驱动内存分配无符号回绕漏洞深度审计
在 C 语言标准规范中,有符号整数溢出属于未定义行为(Undefined Behavior),而无符号整数的溢出则是标准明确允许的模运算回绕(Modulo $2^w$ Wraparound)。然而在 Linux 内核开发中,这种合法的语言特性恰恰是引发严重安全漏洞的温床。当内核驱动层从用户态接收非受信的长度或数量参数时,如果未进行严密的上界约束就直接执行乘法或加法运算,极易导致计算结果回绕为一个微小的数值。随后的内存分配器(如kmallocvmalloc)会根据这个缩水后的尺寸分配缓冲区,紧接着的。
2026-10-12 20:22:48
41
原创 边缘单板机多进程推理防爆内存:基于共享内存与POSIX信号量的高效互斥
在工业网关、无人巡检车和边缘边缘单板机(如 RK3588、树莓派、全志平台)上,系统的物理内存往往被严格压缩在 1GB 至 4GB 之间,且大部分板载架构采用 CPU 与 GPU/NPU 统一寻址的统一内存架构(Unified Memory)。在多业务并发场景下,视频流抓拍进程、雷达点云检测进程、声纹分析进程与上行通信网关通常作为独立的 Linux 守护进程运行。
2026-10-12 20:22:10
148
原创 打造纯粹的极客生产力工作站:基于Arch Linux、Neovim与Tmux的极简环境落地
现代操作系统正以前所未有的速度侵蚀开发者的注意力。开机后随之而来的通知中心、显卡驱动控制面板、Electron 架构的各色即时通讯软件,以及桌面环境后台数百个未知的 D-Bus 守护进程,不仅吃掉数以吉字节计的物理内存,更在后台频繁制造上下文切换与不可控的 CPU 唤醒周期。对于深耕底层开发、内核调试以及系统级编程的工程师而言,这种环境无异于杂音工厂。
2026-10-12 20:21:30
155
原创 C23中的整数溢出防护实践:使用stdckdint.h高效安全宏规避底层越界漏洞
在 C 语言的系统级软件开发中,整数溢出(Integer Overflow)与下溢回绕(Wraparound)始终是引发内存破坏漏洞的头号元凶。从网络协议解析、动态缓冲区分配到文件系统超级块偏移计算,一旦算术运算的结果超出其底层类型的表示范围,后续往往伴随着缓冲区越界读写、拒绝服务甚至远程代码执行。更棘手的是,C 语言标准中对于有符号整数(Signed Integer)的溢出定义为未定义行为(Undefined Behavior, UB)。
2026-10-12 20:20:53
525
原创 eBPF在容量压测中的低开销观测:实时统计微服务网关系统调用延迟与分布
在双 11、618 等超大规模流量洪峰来临前的全链路容量压测中,微服务网关通常作为整个分布式系统的咽喉要道,面临着数十万甚至上百万 QPS 的极端冲击。在这个阶段,任何细微的性能抖动或隐式阻塞都会被流量放大为雪崩式故障。定位网关在高并发下的延迟瓶颈,最直接的手段是探查其底层的系统调用(Syscall)分布与耗时。然而,在真实高压场景下,传统的观测手段面临严重的“观测者效应”:传统的strace基于ptrace机制,每一次系统调用都会引发两次上下文切换与信号传递,会使网关吞吐断崖式暴跌 80% 以上;
2026-10-12 20:20:15
418
原创 Linux物理内存碎片化评分:/proc/buddyinfo指标深度解读与水位监控实践
在长周期运行的高负载服务器上,运维与系统开发人员经常遇到一种诡异的故障现象:通过free -m甚至top查看系统状态,可用内存(available / free)仍有数十吉字节,但内核日志(dmesg)中却突然爆出大量的甚至order:9警告,伴随着应用程序网络吞吐骤降、大量丢包,甚至触发进程被 OOM Killer 异常终止。这种表面空闲但大块连续内存耗尽的现象,正是物理内存外部碎片化(External Fragmentation)累积的直接恶果。
2026-10-12 20:19:38
396
原创 io_uring与Direct I/O深度结合:规避Page Cache缓冲构建零拷贝写入流水线
在构建极速分布式存储引擎、时序数据库与预写日志(WAL)系统时,磁盘写入性能往往直接决定了整个架构的吞吐上限与 P99 尾部延迟。长期以来,Linux 传统的标准缓冲 I/O(Buffered I/O)机制虽然为常规文件操作提供了便捷的缓存命中,但在持续高并发的大数据流写入场景下,Page Cache 反而演变成了系统性能的毒药。一方面,数据必须在用户态缓冲区与内核页缓存之间经历昂贵的内存拷贝(memcpy),严重挤占 L3 Cache 和内存总线带宽;
2026-10-12 20:18:52
266
原创 Linux端侧模型守护进程热重载设计:在不中断系统监控的前提下热更新模型权重
在工业边缘网关和机房巡检盒子上,常驻的端侧模型守护进程承担着双重职责:底层必须维持百兆乃至千兆吞吐的系统指标采集、网络丢包监控与环形缓冲区推流;上层则挂载微调后的轻量级模型(如 0.5B-1.5B 参数量的 SLM 或异常检测 CNN),对采集序列进行实时研判。当算法团队迭代了更优的权重文件(例如从 v1.2 量化模型升级到 v1.3)时,传统的会将整个进程连根拔起。重新解析模型拓扑、重新将数百兆张量从低速 eMMC 载入物理内存,整个冷启动窗口往往长达 5 到 15 秒。
2026-10-11 21:57:15
7
原创 Linux Cgroups v2 限制磁盘 I/O 速率:io.max 参数平抑后台任务对核心业务的干扰
在大型分布式系统的服务器节点上,资源争用最激烈的战场往往不是 CPU,而是共享磁盘 I/O。典型的生产灾难场景极其相似:一台物理节点上同时运行着核心在线事务数据库(如 MySQL、RocksDB、Redis AOF)与各类基础设施后台任务(如 Filebeat 日志抓取、离线数据库夜间全量备份、跨机房冷数据同步或大规模容器镜像解压)。当夜间备份脚本或日志收集器启动时,连续的顺序大文件读写会在微秒内把存储设备的队列深度打到上限,磁盘利用率(%util)长期锁定在 100%。
2026-10-11 21:56:32
53
原创 打造智能终端导航器:基于最近访问频次与上下文语义的快速目录跳转CLI
在日常工程研发中,开发者每天要在数十个跨仓路径、嵌入式固件构建目录以及内核源码树之间反复横跳。传统的cd配合相对或绝对路径不仅击键冗余,而且极易因路径过长打断思考流。以autojump和zoxide为代表的 Frecency(访问频次 + 时间衰减)工具极大地改善了终端导航效率,但在真实复杂的多工程场景下,单纯依靠 Frecency 依然会频繁失灵。典型的痛点在于“同名目录歧义”:几乎每个现代 Go/C 项目都包含cmd/build/或configs/子目录;在微服务集群或多仓协同开发时,输入。
2026-10-11 21:55:53
34
原创 GLM 5.3辅助重写内核驱动模块:从老旧宏定义向C23强类型语法的安全过渡
/ 典型的 C89 驱动宏遗留类型安全性彻底缺失:预处理器只是进行粗暴的文本替换。如果调用者传入一个 64 位有符号整型作为speed,或者传入带自增副作用的表达式,编译器不会给出任何警告,却会在运行时造成重复自增或高位截断。符号污染与调试黑盒:宏不属于 C 语言的符号表。在 GDB 调试或内核 Oops 栈回溯中,无法直接打印宏常量的符号名,排查问题只能依赖反汇编与肉眼核对偏移。宏的隐式整数提升规则反直觉:在 32 位与 64 位交叉编译时,位移操作未指定。
2026-10-11 21:55:16
62
原创 2GB内存开发板运行大上下文推理:KVCache分页与量化存储压缩实战
在只有 2GB 物理内存的嵌入式边缘板卡(如全志、瑞芯微低配型号或工控网关)上部署轻量大语言模型,系统可用内存是一场残酷的零和博弈。Linux 内核基础服务常驻需占用 200MB~300MB,一个 4-bit 量化的 1.5B 参数模型静态权重约占 900MB,剩下的可用 RAM 空间仅有约 800MB。在短对话推理中系统尚能勉强维持;
2026-10-11 21:54:36
126
原创 工具开发中的奥卡姆剃刀:为什么不要在极简CLI工具中硬塞花哨的TUI界面
在现代开源工具生态中,出现了一种将轻量命令行程序过度“前端化”的倾向。不少开发者在实现一个网络延迟探测器、磁盘空间嗅探器或服务状态检测脚本时,热衷于引入 Bubbletea、Textual 或 Curses 库,堆砌出全屏边框、渐变色彩条、鼠标悬停菜单甚至 ASCII 动画。这种界面在演示截图中显得格外精致,但在真实的生产运维、自动化编排与严苛排障场景下,强塞进来的 TUI(Terminal User Interface,终端文本界面)往往是一场灾难。
2026-10-11 21:53:59
114
原创 C23废弃旧式变长数组的部分不安全用法:为什么内核开发者对栈溢出零容忍
在 C 语言演进史上,C99 引入的变长数组(Variable-Length Array, 简称 VLA)曾被视为提升动态数组便捷性的“语法糖”。然而在系统级编程、操作系统内核以及安全关键领域,VLA 却成为了最具破坏力的漏洞温床之一。早在多年前,Linus Torvalds 便在 Linux 内核邮件列表中公开抨击 VLA 为“纯粹的愚蠢与脑残设计”,并在 Linux 内核中全面强制开启-Wvla编译选项,彻底将 VLA 逐出内核源码树。
2026-10-11 21:53:17
162
原创 用 eBPF 监控生产环境 TCP 队列积压:通过 tcp_rcv_established 提取连接性能指标
在分布式 RPC 服务、流媒体分发以及大规模数据库集群中,TCP 传输层的隐蔽性能劣化是排查难度最高的一类故障。在很多故障现场,物理网卡流量远未打满,甚至系统 CPU 负载也处于低位,但应用层请求的响应耗时却呈现出阶梯式的长尾抖动。运维人员常常第一时间执行ss -t -i或解析,试图找出网络传输的异常迹象。ss依赖inet_diag。
2026-10-11 21:52:14
124
原创 SLUB 分配器中的快速路径与慢速路径:freelist 链表获取空闲对象的关键逻辑
在高性能 Linux 服务器内核中,内存分配器是所有系统调用与协议栈运转的基石。每当网络层接收一个数据包、文件系统读取一个数据块或进程发起一次 fork,内核都在毫秒内成千上万次地执行。为了支撑这般严苛的吞吐要求,SLUB 分配器将其执行路径精妙地切分为两条截然不同的流:只需数纳秒、汇编级精简的“快速路径”(Fastpath),以及负责跨层协调、复杂锁控与伙伴系统兜底的“慢速路径”(Slowpath)。
2026-10-11 21:51:32
167
原创 io_uring 与内存映射:利用 mmap 优化环形缓冲区与消除用户态内核态拷贝
在微秒级高吞吐存储与万兆网络应用中,传统 Linux I/O 模型的性能死穴从来不只是调度延迟,而是“控制指令穿越内核”与“数据流在内存中辗转反侧”的双重摩擦。每发起一次标准的read()或write()系统调用,CPU 不仅要在用户态与内核态之间执行栈帧保存和寄存器切换,内核还需要遍历页表、校验虚拟地址合法性、动态增加物理页的引用计数(),并在数据搬迁完毕后解除映射。即便开发者使用O_DIRECT。
2026-10-11 21:50:44
138
原创 在Linux服务中实现端侧模型推理降级:多租户并发冲击下的自适应排队架构
在边缘节点或私有化Linux服务器上部署端侧大语言模型(如INT4量化的7B/14B架构)时,工程师最常面对的灾难并非算力匮乏,而是多租户高并发请求突发引发的雪崩。单个推理请求对GPU或NPU显存、计算核心的独占性,决定了端侧服务不可能像传统无状态HTTP服务那样依靠线程池无脑并发。一旦瞬时并发超过计算流水线的承载上限,未受控的排队将导致P99延迟瞬间从300毫秒飙升至数十秒,最终触发客户端大量超时断连,甚至引发系统级OOM与内核死锁。
2026-10-10 23:11:42
7
原创 Linux Cgroups v2 CPU 调度带宽限制:cpu.max 参数对高并发线程池的实测影响
在容器化与微服务已成生产标配的今天,Linux Cgroups 承担着物理机算力切分的核心重任。无论是 Kubernetes 中的,还是 Docker 容器的--cpus选项,其底层均依赖 Linux 内核 CFS(Completely Fair Scheduler)调度器的带宽限制(Bandwidth Control)机制。
2026-10-10 23:11:01
75
原创 终端日志流语义去重:用轻量哈希与端侧模型快速合并重复异常堆栈
在分布式系统、边缘网关与各类Linux容器运行环境中,服务一旦遭遇数据库连接断开、下游RPC超时或底层驱动故障,异常堆栈往往会以每秒数万条的暴风雨形态喷涌而出。未经治理的日志流会在瞬间吃满磁盘I/O带宽、打爆日志收集Agent的内存缓冲区,并在远端Elasticsearch或ClickHouse集群中造成巨大的写入抖动。工程排障的实际情况是:数万条报错日志中,99.9%的堆栈逻辑完全一致,仅在时间戳、线程ID、对象内存地址(例如)等动态变量上存在微弱差异。
2026-10-10 23:10:21
73
原创 GLM 5.3审计内核异步通知机制:排查workqueue与tasklet中的共享数据竞态
在Linux内核设备驱动开发与底层系统维护中,中断下半部(Bottom Half)与异步延后工作机制的竞态漏洞向来是系统偶发死锁与内存踩踏的重灾区。随着内核版本的演进,曾经被广泛使用的tasklet机制已被官方明确标记为不推荐使用(Deprecated),并逐步由工作队列(workqueue)与线程化中断(threaded IRQ)全面替代。
2026-10-10 23:09:42
121
原创 边缘单板机端侧模型散热与功耗控制:防止CPU过热降频导致推理时延崩塌
在工业网关、无人巡检车以及智能边缘盒子上部署端侧深度学习模型(如量化为INT8的视觉Transformer或轻量级端侧大语言模型)时,工程师面临最残酷的现实往往不是算法精度下降,而是运行数分钟后硬件发热触发的性能雪崩。在无风扇密闭外壳或被动散热的单板机(SBC,如RK3588、树莓派5或嵌入式ARM64模块)上,多核心与NPU满载运转会令芯片结温(Junction Temperature)在几十秒内跨越85℃阈值。
2026-10-10 23:09:02
105
原创 为什么我依然坚持纯C编写系统工具:百KB二进制与零动态依赖的工程价值
在云原生工具链动辄采用Go、Rust重构一切的潮流下,一个简单的日志收集Agent或状态巡检CLI工具,编译出的二进制文件体积普遍突破20MB至50MB。许多年轻工程师对此习以为常,认为“磁盘和内存这么便宜,多占几十兆算什么”。然而,一旦将战场转移到恶劣的生产第一线——嵌入式单板、网络设备精简rootfs、内核Initramfs紧急救援环境、或者要求高密度部署数万个实例的裸金属容器中,这种对系统资源的无度挥霍就会演变为灾难性的工程瓶颈。
2026-10-10 23:08:24
46
原创 C23二进制整数字面量与数字分隔符:重塑底层硬件寄存器配置代码可读性
在嵌入式固件开发、Linux平台设备驱动以及裸机SoC BSP初始化过程中,工程师耗费最多精力且最容易翻车的环节之一,就是硬件外设内存映射寄存器(MMIO)的位域配置。无论是配置ARM架构的PLL锁相环时钟分频器、RISC-V的PLIC中断控制器,还是配置一块千兆以太网MAC芯片的控制寄存器,我们面对的技术参考手册(TRM,Technical Reference Manual)无一例外都是以二进制位(Bit 0 ~ Bit 31)为维度逐段划分的。
2026-10-10 23:07:45
116
原创 用 eBPF 排查网络突发丢包:监控 kfree_skb 的调用堆栈快速锁定内核丢包点
在万兆或更高吞吐的数据中心网络环境中,网络抖动与偶发丢包是高并发在线服务最致命的隐形杀手。很多线上业务常在流量高峰期遭遇 P99 延迟陡增与 TCP 重发率飙升,但运维排查手段往往极其匮乏。执行ifconfigip -s link或检查,只能看到rx_dropped或tx_dropped计数器在单调递增;翻看netstat -s,也只能确认有报文在协议栈丢弃。
2026-10-10 23:07:06
58
原创 SLUB 分配器 kmem_cache 内部结构剖析:kmem_cache_cpu 与 kmem_cache_node 协同机制
在 Linux 物理内存管理体系中,伙伴系统(Buddy System)以页(4KB 或其 2 的幂次方)为最小粒度划分与回收物理内存。然而,内核运行时的关键控制对象——如或——生命周期往往短至数微秒,尺寸从数十字节到几千字节不等。如果每一次创建网络报文或发起系统调用都向伙伴系统申请整页物理内存,内部碎片将迅速吞噬内存,且伙伴系统的全局自旋锁(zone->lock)会立刻引发跨核心的总线颠簸与计算锁死。
2026-10-10 23:06:27
166
原创 io_uring 异步事件驱动架构:对比传统 libevent 在高吞吐网络代理中的表现
在网络代理与高并发网关的演进史中,基于epoll的 Reactor 反应堆模型统治了 Linux 服务端架构十余年。以 libevent、libev 为代表的开源网络库,通过非阻塞 I/O 搭配多路复用,支撑了早期互联网海量连接的红利期。然而,当数据中心硬件从千兆跨越到 100Gbps,单机并发连接数迈向数十万且 SLA 要求压至微秒级时,传统基于 libevent 的架构逐渐撞上了物理机制的性能天花板。
2026-10-10 23:05:42
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅