【SPDK 用户态存储】环境与绑盘:Hugepage、CPU 亲和与 VFIO/UIO
说明 SPDK 运行前 env:大页分配、CPU 绑核语义、setup.sh 将 NVMe 从内核驱动解绑到 VFIO/UIO;钉住设备独占代价与 reset 回退路径。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 5 篇文章 · 返回首页
说明 SPDK 运行前 env:大页分配、CPU 绑核语义、setup.sh 将 NVMe 从内核驱动解绑到 VFIO/UIO;钉住设备独占代价与 reset 回退路径。
解释为何 SPDK 数据缓冲必须经 DMA 安全分配:物理/IOVA 翻译、PRP 约束、hugepage 与 IOMMU;并说明 mempool 复用、对齐失败模式及零拷贝相对显式拷贝的边界。
jemalloc 与 tcmalloc 都想解决多线程分配器的老问题:锁争抢、碎片、RSS 膨胀与回收抖动。但两者把优化重点放在了不同位置:tcmalloc 更激进地把热路径推到 per-CPU,jemalloc 则把 arena、extent、decay 和 profiling 做成了一套更完整的内存治理工具箱。
大页能让一条 TLB 覆盖 2MB 乃至 1GB,但 THP 为什么在数据库里默认关掉?本文讲 HugeTLB 预留池、THP 的 khugepaged、defrag stall、madvise 模式、file-backed THP、以及工程上的取舍。
当内核网络栈的上下文切换和拷贝开销成为瓶颈时,DPDK 提供了内核旁路方案。本文从 PMD 轮询模型、Hugepage 内存管理、NUMA 亲和到 F-Stack 用户态协议栈,系统讲解 DPDK 的工程原理与生产实践。