OS ↔ vLLM 速查
遇到 vLLM 某个模块卡住?反查这张表 → 找对应 OS 概念 → 用 OSTEP / 6.S081 补 → 回来继续读。
这页是常驻参考。不需要从头到尾读—— 当你在 vLLM 源码里看到某个陌生模块时,回到这页查它在 OS 里对应什么,然后去补那一块。
01核心对照大表
| vLLM 模块 / 概念 | OS 对应 | 关键学习材料 | vLLM 源码位置 |
|---|---|---|---|
| PagedAttention KV cache | 虚拟内存 + 分页 | OSTEP 13 / 15 / 18 | vllm/v1/core/kv_cache_manager.py |
| Block table | Page table | OSTEP 18 / 19 | vllm/v1/core/block_pool.py |
| Block allocator | Physical frame allocator / buddy | OSTEP 17 | vllm/v1/core/block_pool.py |
| Prefix caching | Page cache + COW | OSTEP 39 (file system intro) | vllm/v1/core/ · 搜 prefix_cache |
| Prefix cache eviction | Page replacement (LRU / Clock) | OSTEP 22 | BlockPool.evict |
| CPU offload / swap-out | Swap to disk | OSTEP 21 | vllm/v1/worker/cache_engine.py |
| Continuous batching | Process scheduler · time-sharing | OSTEP 7 / 8 / 9 | vllm/v1/core/sched/scheduler.py |
| Preemption | Process preemption · context switch | OSTEP 7 | scheduler.py · _preempt |
| Token budget | Quantum / time slice | OSTEP 8 (MLFQ) | SchedulingBudget dataclass |
| Engine main loop | Kernel main loop / event loop | OSTEP 6 | vllm/v1/engine/core.py · run_busy_loop |
| HTTP server async | I/O multiplexing (epoll / async) | OSTEP 39 · UNIX I/O models | vllm/entrypoints/openai/api_server.py |
| Multi-process workers | Process · fork / exec | OSTEP 4 / 5 | vllm/v1/executor/ |
| ZMQ engine ↔ API IPC | IPC (pipe / socket / message queue) | OSTEP 50 | vllm/v1/engine/async_llm.py |
| Scheduler 主锁 | Lock / monitor pattern | OSTEP 28 / 30 | scheduler.py |
| Multi-GPU (TP/PP) | 分布式系统 · RPC | OSTEP 48 (RPC) + Megatron 论文 | vllm/distributed/ |
| Multi-LoRA | 多进程隔离 · 进程间内存共享 | OSTEP 4 | vllm/lora/ |
| Weight loading (mmap) | mmap · demand paging | OSTEP 22 · 39 | vllm/model_executor/model_loader/ |
| CUDA graph capture | (无直接 OS 对应) · 接近 batch syscall | CUDA docs · stream graph | vllm/v1/worker/gpu_model_runner.py |
| FlashAttention IO-aware | 缓存友好的算法设计 | CMU 15-418 lec 2 | 外部依赖 flash-attn |
02OS 章节优先级
OSTEP 全书 700+ 页,但你只需要下面这些:
🔴 必读 (~150 页)
- Ch 4-5 · 进程
- Ch 7-10 · 调度
- Ch 13-22 · 虚拟内存(选读 13/15/18/21/22)
- Ch 28-30 · 同步原语
🟡 用到再翻
- Ch 39 · 文件 I/O 与 page cache 类比
- Ch 48-50 · RPC / 一致性(多卡时)
- Ch 6 · 系统调用机制
🟢 略过
- 设备驱动、bootloader
- FAT / ext2 内部结构
- 安全 / 权限
- C 内存安全 lab
📺 视频替代
看不进书时:MIT 6.S081 视频选这三节:
- Virtual memory (lec 4)
- Scheduling (lec 9-10)
- Locking (lec 12)
03"我看到 X 了,该补什么"决策树
04常用补充材料
- OSTEP (免费) · pages.cs.wisc.edu/~remzi/OSTEP/
- MIT 6.S081 (视频 + lab) · pdos.csail.mit.edu/6.S081/
- CMU 15-418 Parallel · 15418.courses.cs.cmu.edu · 缓存层级 + GPU 架构
- Berkeley AISys Fa2024 · schedule · 现代 LLM 系统论文地图
- Triton tutorial · triton-lang.org
05反原则 · 别这么干
- ❌ 不要先把 OSTEP 整本刷完再来读 vLLM。不学到具体用处的概念都会忘。
- ❌ 不要按 AISys schedule 顺序读 24 篇论文。它是给学生一学期的,不是给你 6 个月的。
- ❌ 不要把笔记做成 PPT。每篇论文一段话 + 跟 vLLM 源码哪一行对得上,比精美笔记有用 10 倍。
- ❌ 不要等"准备好"才提 PR。Month 1 就交第一个,哪怕是 typo。
- ❌ 不要先建仓库再写代码。先在 single file 里把 mini-vLLM 跑起来,再切模块。
这页是常驻参考。书签它,6 个月里你会回来很多次。