Skip to content

Commit 3d7f803

Browse files
ShanireZclaude
andcommitted
CI 缓存:把「预计约 14m」换成实测的 13m27s
命中轮 32452405728 实测:合计 **13m27s** (腾磁盘 98s / 取缓存 22s / 灌回 54s / 门禁 620s / 导出与存缓存双双 skipped)。 ⇒ 冷 21m44s~27m8s → **命中 13m27s**;门禁那一步 1400s → 620s。 ★★ 「命中即跳过导出」这一条是**量出来的,不是想出来的**:在它之前那一轮 (32450933715)命中了、也只用 20m30s,看起来已经不错 —— 直到把逐步耗时拉出来 才看见导出那一步花了 368 秒压出 1.7GB,然后被原样扔掉。 **一步只在「它的产物会被用到」时才该跑**,判据要往前挪到那一步自己身上。 ⚠ 文档里那个「预计约 14m」是估的,现在换成实测值 —— 有实测就不留估计。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent d6452b0 commit 3d7f803

2 files changed

Lines changed: 21 additions & 11 deletions

File tree

docs/log.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1441,7 +1441,9 @@ MainPID=0 Result=timeout SubState=failed
14411441
| **全量门禁** | **635**(冷编时约 1400)|
14421442
| 导出(命中时白花的)| **368** |
14431443

1444-
⇒ 缓存真正省下的是**门禁那一步的编译时间**:约 **1400s → 635s**。归档在 CI 上是 **1.61 GiB**(zstd,本机 gzip 是 2.2GB)。
1444+
⇒ 缓存真正省下的是**门禁那一步的编译时间**:约 **1400s → 620s**。归档在 CI 上是 **1.61 GiB**(zstd,本机 gzip 是 2.2GB)。
1445+
1446+
**改完之后实测确认(`32452405728`):一轮 13m27s**(腾磁盘 98s / 取缓存 22s / 灌回 54s / 门禁 620s / 导出与存缓存双双 skipped)。⇒ **21m44s ~ 27m8s → 13m27s。**
14451447

14461448
★ ★ **而命中轮里那 368 秒是纯浪费**:压出 1.7GB 归档之后,「存构建缓存」因为 `cache-hit == 'true'` 被跳过 —— **压完又原样扔掉**。⇒ 判据往前挪:命中时**整步跳过导出****一步只在「它的产物会被用到」时才该跑。**
14471449

docs/platform/build-and-test.md

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ M1_KEEP=1 bash tests/m1/systemd-run.sh # 失败后保留容器,进去
9292
| `fulcrum-cargo`| 684 MB |
9393
| `fulcrum-target-*`| **6.3 GB**(vendor 3.0G + debug 2.8G + release 580M)|
9494
| 归档(gzip -1 抽样)| **2.2 GB** ⇒ 装得进 GitHub 每仓 10 GB 的缓存预算 |
95-
| 冷缓存一次全量 CI | **21m44s** ~ **27m8s** |
96-
|**命中缓存**(实测 32450933715| **20m30s**,其中门禁本身 **635s**(冷编时约 1400s)|
97-
| ★ 命中轮里**白花**| 导出那一步 **368s** —— 压完 1.7GB 又原样扔掉(已改成命中即跳过|
95+
| 冷缓存一次全量 CI(未命中)| **21m44s** ~ **27m8s** |
96+
|**命中缓存**(实测 `32452405728`| **13m27s** |
97+
| 其中门禁本身 | **620s**(冷编时约 1400s|
9898

9999
搬运在 [`tests/ci/cache.sh`](../../tests/ci/cache.sh)`save` / `restore` 两个子命令,
100100
把两个 docker 命名卷**流式**打成一个归档(tar 在容器里跑、压缩在宿主机上跑,
@@ -114,17 +114,25 @@ M1_KEEP=1 bash tests/m1/systemd-run.sh # 失败后保留容器,进去
114114
★ 本机验过一遍完整闭环:`save` → 清掉 → `restore`**跑全量门禁 193 ✓ / 0 ✗**
115115
四条守卫路径(没有归档 / 没有 meta / 哈希对不上 / 魔数不认识 / 归档被截断)也各自单独试过。
116116

117-
### ★ 逐步耗时(命中轮实测,32450933715
117+
### ★ 逐步耗时(命中轮实测,`32452405728`,合计 13m18s
118118

119119
|||
120120
|---|---|
121-
| 腾出磁盘 | 139 |
122-
| 取缓存(下载 1.6GiB)| 23 |
121+
| 腾出磁盘 | 98 |
122+
| 取缓存(下载 1.6GiB)| 22 |
123123
| 灌回卷(含完整性预检)| 54 |
124-
| **全量门禁** | **635**(冷编时约 1400)|
125-
| 导出(命中时已改为跳过)| ~~368~~ |
126-
127-
⇒ 缓存真正省下的是**门禁那一步的编译时间**:约 **1400s → 635s**
124+
| **全量门禁** | **620**(冷编时约 1400)|
125+
| 导出构建缓存 | **skipped**(命中即跳过)|
126+
| 存构建缓存 | **skipped** |
127+
128+
⇒ 缓存真正省下的是**门禁那一步的编译时间**:约 **1400s → 620s**
129+
加上「命中即跳过导出」,一轮从 **21m44s ~ 27m8s** 降到 **13m27s**
130+
131+
> ★ ★ 「命中即跳过导出」这一条是**量出来的,不是想出来的**
132+
> 在它之前那一轮(`32450933715`)命中了、也只用 20m30s,看起来已经不错 ——
133+
> 直到把逐步耗时拉出来才看见**导出那一步花了 368 秒压出 1.7GB,然后被原样扔掉**
134+
> **一步只在「它的产物会被用到」时才该跑**,而判据要往前挪到那一步自己身上,
135+
> 不能等最后一步再去决定要不要用。
128136
129137
### ⚠ 两件说在明处
130138

0 commit comments

Comments
 (0)