2026-06-16 | database · kernel | #postgresql #pg-kernel #lock-manager #spinlock #lwlock #heavyweight-lock #deadlock-detection #row-locks #pg-locks #concurrency
拆解 PostgreSQL 锁管理器的完整架构:SpinLock 自旋锁的硬件原语与使用边界、LWLock 从 PG 9.4 前到 PG 16 LWLockWaitListLock 的三代演进、Heavyweight Lock 的 LockAcquire() 完整路径和锁表结构、死锁检测 DeadLockCheck() 的等待图 DFS 算法、行级锁 FOR UPDATE/FOR SHARE/FOR KEY SHARE 的 t_infomask 实现,以及用 pg_locks 和 pg_blocking_pids() 追踪生产锁等待链的诊断方法。
2026-06-12 | kernel · ebpf | #ebpf #concurrency #spinlock #rcu #percpu #bpf_atomic #smp #linux-kernel
BPF 程序在内核上下文中并发执行——同一程序可能在多个 CPU 同时运行。本文讲清 BPF 环境下的内存模型(BPF_ATOMIC 指令的语义)、bpf_spin_lock 的实现限制、RCU 保护的 map 读取、per-CPU map 的免锁读写,以及中断上下文与进程上下文的执行语义差异。
2026-04-13 | architecture | #throughput #batching #pipelining #concurrency #Nagle #TCP-CORK
单机吞吐量的理论上限取决于硬件并行度和软件调度效率。本文从 Amdahl 定律出发,分析批处理的最优批大小、流水线的级间平衡、Nagle 算法与 TCP_CORK 的工程权衡,给出数据库批量写入、Kafka 生产者调优、网络写合并等真实场景的优化路径。
2025-09-03 | storage | #btree #b-plus-tree #concurrency #latch-coupling #page-layout #bulk-loading
数据库要把数据存到磁盘上,又要以尽可能少的磁盘 I/O 把数据找回来。这个矛盾催生了一系列面向磁盘的索引结构(Disk-oriented Index),其中最成功的就是 B-Tree 家族。从 1970 年 Rudolf Bayer 和 Edward McCreight 在波音科学研究实验室提出 B-Tree 起,这个…
2026-04-12 | database | #database #lsm-tree #rust #leveldb #storage-engine #concurrency #snapshot #iterator #benchmark #memory-safety
组装完整 LSM-Tree 存储引擎:DB 接口(Open/Put/Get/Delete/Iterator/Snapshot)、单写多读并发控制、启动恢复,然后用 Rust 重写核心模块,记录 5 个编译器不让我过的故事,最后三方 benchmark 对比。从零写一个 LSM-Tree 存储引擎系列第 5 篇。
2026-04-03 | golang | #golang #concurrency #goroutine #thread-pool #performance
Golang 线程池实现:高效并发编程,goroutine 池管理与性能优化
2026-04-18 | programming | #go #goroutine #scheduler #gmp #runtime #concurrency #work-stealing #linux
从源码级别拆解 Go runtime 的 GMP 调度器:G/M/P 结构体、schedule() 调度循环、work stealing、协作式到异步抢占的演进、netpoller 与 syscall 处理,以及与 Linux CFS 调度器的正面对比。
2026-04-03 | linux | #linux #kernel #concurrency #memory-ordering #C-macros
Linux 内核 ACCESS_ONCE/READ_ONCE/WRITE_ONCE 宏详解:并发编程与内存访问
2025-01-26 | linux | #lockfree #hashmap #cas #memory-ordering #hazard-pointer #aba-problem #concurrency
正确的无锁数据结构可以写出来。但代价比你想象的大。CAS 循环、ABA 问题、内存回收、x86 和 ARM 的行为差异——这篇从一行 compare_exchange 开始,到一个完整的无锁哈希表结束。
2026-03-31 | linux | #lock-free #concurrency #memory-ordering #cas #atomic #benchmark #cpp #rust
拆解 GitHub 高星'无锁'库的真实面目:隐藏的 mutex、被滥用的 memory_order_relaxed、以及 CAS 重试循环的阻塞本质。附 x86 vs ARM 上的行为差异实测。
2026-03-31 | linux | #memory-barrier #smp_wmb #arm #x86 #tso #kernel #concurrency #debugging
一个在 x86 上跑了两年的内核模块,迁移到 ARM 后开始随机丢数据。三天的调试过程教会了我 smp_wmb() 的真正含义。附 Linux 内核屏障 API 完整分类与 x86/ARM 编译产物对比。
2026-08-10 | programming | #rust #tokio #async #runtime #work-stealing #waker #epoll #mio #timer #concurrency #systems-programming
从 Future::poll 到 work-stealing 调度器,从 Waker vtable 到 mio/epoll I/O 驱动,再到层级时间轮——一层一层拆开 tokio 约 40000 行代码的运行时内核,看看你每写一个 .await 背后到底发生了什么。
2025-02-05 | system-design | #go #c #rust #benchmark #systems-programming #comparison #concurrency
不是'谁快'——而是'什么维度上谁更合适'。在延迟、吞吐量、内存占用、编译速度、并发模型五个维度上正面对比,用同一个任务的三种实现说话。