linux-sre-handbook

04-内存管理

内存层次结构

CPU 寄存器 (最快, ~1ns)
  → L1 Cache (~1ns, 32KB)
    → L2 Cache (~4ns, 256KB)
      → L3 Cache (~12ns, 8-32MB)
        → 主存 RAM (~100ns, GB级别)
          → SSD (~100μs, TB级别)
            → HDD (~10ms, TB级别)

虚拟内存

核心概念

每个进程拥有独立的虚拟地址空间,通过 MMU(内存管理单元)将虚拟地址翻译为物理地址。

虚拟地址 → 页表(Page Table) → 物理地址
                ↓ (miss)
            TLB (Translation Lookaside Buffer)

进程内存布局

高地址 ┌──────────────┐
      │   Kernel Space  │ (不可直接访问)
      ├──────────────┤
      │   Stack         │ ↓ 向下增长
      │   ...           │
      │   mmap region   │ (共享库、文件映射)
      │   ...           │
      │   Heap          │ ↑ 向上增长 (brk/sbrk)
      │   BSS           │ (未初始化数据)
      │   Data          │ (已初始化数据)
低地址 └──────────────┘ Text (代码段)

内存分配机制

Buddy System

Slab 分配器

页面回收与交换

kswapd 守护进程

Swap

OOM Killer

内存耗尽时内核的选择机制:

关键命令

free -h              # 内存概览
vmstat 1             # 内存活动统计
cat /proc/meminfo    # 详细内存信息
pmap -x <PID>        # 进程内存映射
smem -p              # PSS/USS/RSS 分析

/proc/meminfo 关键字段

字段 含义
MemTotal 总物理内存
MemAvailable 可用内存(含可回收缓存)
Buffers 块设备缓冲
Cached Page Cache
SwapTotal/SwapFree 交换空间

延伸阅读