| 中文 | English |
CSCI 599: Network Systems for Cloud Computing — Spring 2026
Advisor: Prof. Ramesh Govindan · USC
边缘推理节点跑不动 Firecracker 这类 MicroVM —— 进程池 + Copy-on-Write fork 是更现实的隔离选择。本项目用 C++ + Python 实现一个轻量 FaaS 网关, 在亚微秒级控制面开销下显著降低 cold-start 数。
| 指标 | 数据(n=5,95% CI) |
|---|---|
| Cold-start 减少(vs Reactive baseline) | −31%(48 ± 19 vs 70 ± 1) |
| Cold-start 减少(vs ARIMA baseline) | −26%(48 ± 19 vs 64 ± 12) |
| Worker 启动加速(CoW 模板) | 9×(~900 ms → ~100 ms) |
| Predictor 推理延迟 p99 | 191 μs(比 ARIMA 的 72 ms 低 2 个数量级以上) |
| Inter-burst sweet spot | W = 20 - 60 s(fixed/adaptive 都接近 0 cold) |
启动时一次性 fork 一个 Python “template” 进程,把 Pillow / OpenCV 这类重型
依赖一次性 import 完。之后每个 worker 通过 os.fork() 从 template 继承
内存页 —— Linux CoW 让 fork 几乎免费,只 copy 真正被写过的页。
→ 不用 container runtime、不用 image registry、不用 VM snapshot。
N = ⌈λ × T⌉ + 1)把预测的到达率翻成 worker 数整个 predictor 是 O(1) 时间空间,每个 tick 推理代价亚微秒级。
四张图来自论文实验(n=5 trials,95% CI),完整论文见 Final Report (PDF)。
![]() 主结果 — Fixed CUSUM 48 ± 19 vs Reactive 70 ± 1 → −31%; Adaptive 在 W=35 sweet spot 0 cold,但短 W 翻车(见右下) |
![]() CoW × Predictor 消融 — 关掉 CoW 后 Reactive +69 cold(CoW 救命); Fixed CUSUM 保守扩容,CoW 影响统计不显著 |
![]() Warmup sweep — Adaptive 在 W ≤ 10s 灾难性失败 (τ_σ cliff,195 cold @ W=5s);W = 20-60s 是 sweet spot |
![]() Pareto trade-off — Fixed CUSUM 在 PSS/cold 双轴前沿; 用 PSS(而不是 RSS)避免 CoW 共享页双计(约 2.3×) |
依赖:
sudo apt install build-essential
pip install Pillow statsmodels psutil scipy
构建:
make clean && make
启动 server(5 个 mode 任选其一):
./server ewma # EWMA + Fixed CUSUM —— 主方法(默认)
./server ewma_adaptive # Standardized CUSUM —— 标准化 z-score 变体
./server reactive # 反应式 baseline(无预测)
./server static 15 # 固定 15 worker baseline
./server arima # ARIMA(2,1,2) baseline
# 加 --no-cow 关闭 CoW template(用于消融实验)
./server ewma --no-cow
发负载(默认 4 cycle Bursty-Ramp workload):
python3 load_tester.py
可选参数:
python3 load_tester.py --warmup-c234 60 # 调 inter-burst 间隔
python3 load_tester.py --spike-rps 100 # 调 spike 量级
python3 load_tester.py --no-ramp # 阶跃流量(无 ramp 信号)
# (1) 主实验:5 mode × n=5 trial × CoW={ON,OFF} = 50 runs,~3h
./run_multi_trial.sh 5 --ablation
# (2) Warmup-sweep 灵敏度:6 W × 2 mode × n=5 = 60 runs,~3h
./run_sweep.sh --trials 5
# (3) Step workload(无 ramp):5 mode × n=3 = 15 runs,~50 min
./run_multi_trial.sh 3 --no-ramp --tag step
# (4) 聚合 + 95% CI(产出 markdown 表 + summary.csv + per_cycle.csv)
python3 analyze_trials.py logs/<campaign_dir>/
# (5) 画论文 figure(吃 summary.csv)
python3 figures/plot_main_n5.py logs/<main_campaign>/
python3 figures/plot_ablation.py logs/<main_campaign>/
python3 figures/plot_pareto_pss.py logs/<main_campaign>/
python3 figures/plot_sweep_n5.py logs/<sweep_campaign>/
详细的 proposal → Check #1 → Check #2 → Pre 阶段开发记录、设计决策、踩坑过程: