本模板用于记录可复核的学习证据,不预填测试成功或性能结论。使用自己的运行结果;本地个人报告不需要放进公开课程包。
1. 实验条件与假设
填写 Python 版本、capacity、block_size、完整事件列表、从课程根目录执行的命令。说明请求长度提前已知、一次预留整条请求、不存 KV、不计 GPU 时间。
2. 先预测,再运行
先写六事件案例的预测,再填实际结果。每个事件的快照必须是在处理事件和重试 waiting 之后记录。
| 事件 | 预测 active/waiting/free | 实际 active/waiting/free | 活动页数 + free | 是否一致 |
|---|---|---|---|---|
| submit A,5 | 待填写 | 待填写 | 待填写 | 待填写 |
| submit B,5 | 待填写 | 待填写 | 待填写 | 待填写 |
| submit C,1 | 待填写 | 待填写 | 待填写 | 待填写 |
| finish A | 待填写 | 待填写 | 待填写 | 待填写 |
| finish B | 待填写 | 待填写 | 待填写 | 待填写 |
| finish C | 待填写 | 待填写 | 待填写 | 待填写 |
额外核对每行 active 与 waiting 无交集。解释 finish A 中“先释放、再准入、再快照”的中间状态,不要把临时 free 当最终 free。
3. 一次真实调试记录
最小失败输入 → 期望输出/异常 → 实际结果 → 首次产生偏差的位置 → 根因 → 修复 → 回归命令和结果。没有遇到 bug 时,刻意检查一个危险假设,例如历史字典别名,并记录反例;不要编造失败经历。
4. 自己的队首阻塞案例
给出与教材不同的容量、块大小和请求长度,逐步计算所需页数。展示小请求放得下却必须等待的那一行。讨论若允许越过队首可能怎样提高利用率,又可能怎样损害大请求公平性;无需修改 FIFO 契约。
5. 快照与输入保护证据
记录如何验证输入没有变化,以及修改第一条快照的 active/waiting 后其他快照不变。解释这里浅复制为什么足够,若值以后变成可变嵌套对象又会有什么区别。
6. 局限与结论
分别说明:固定长度预留与真实逐 token 增长的差别;页数账本与 Lab4 物理所有权的差别;事件顺序与时间度量的差别。结论应限定于 FIFO 准入和容量守恒,不能从本事件表推导 GPU 吞吐、TTFT、TPOT 或前缀缓存加速。