Benchmarks: the Linux store in change format 3 36695c5e02ef
The Linux tip's store is 324 MB after gc (objects 306 MB; Git's 311 MB) and its first commit takes 32.6 s (Git 33.7 to 37.9 s). Backlog 3: P1 and S1 done. closes #40
- Author
- Andy McCall @andymccall <[email protected]>
- When
- · 2026-09-30 02:56 UTC
- Signature
- ✔ signed by Andy McCall
- Hash
36695c5e02efe40e62f8fdc51e445000e2ea01664a9bafef468229d395343bf2- Depends on
- 1681323d1dff 1d360c91a289 33e77a5526fa b493d993a9df da652d6392d8
- Depended on by
- 2517abe64654
- In bookmarks
- agents-in-readme bare-hashes carried-not-removed carry-identical doctor-trust identical-sides keyless-tags main merge-remote-bookmark only-help-103 paths-for-resolutions-and-amend push-notes show-stat subrepo-pin-state switch-says
- In tags
- v0.1.0 v0.10.0 v0.11.0 v0.2.0 v0.3.0 v0.3.1 v0.4.0 v0.4.1 v0.4.2 v0.4.3 v0.4.4 v0.4.5 v0.4.6 v0.5.0 v0.5.1 v0.6.0 v0.7.0 v0.8.0 v0.9.0
- Edits
- 6 atoms, 0 tree operations, 2 files
Browse the tree at this change
modified docs/backlog-overnight-3.md +7 −2
| … | 111 unchanged lines |
||
| 112 | 112 | ||
| 113 | 113 | ## Speed |
|
| 114 | 114 | ||
| 115 | - | - [ ] S1 **First commit at most 50 s** (55.3 s now): profile with |
|
| 115 | + | - [x] S1 **First commit at most 50 s** (55.3 s now): profile with |
|
| 116 | 116 | `perf`, and parallelise reading, hashing and diffing across the four |
|
| 117 | 117 | cores where it is safe. |
|
| 118 | 118 | - [ ] S2 **Status, diff and commit** with one and with 1 000 files |
|
| … | 6 unchanged lines |
||
| 125 | 125 | ||
| 126 | 126 | ## Space |
|
| 127 | 127 | ||
| 128 | - | - [ ] P1 **Store at most 350 MB after gc** (442 MB now against Git's |
|
| 128 | + | - [x] P1 **Store at most 350 MB after gc** (442 MB now against Git's |
|
| 129 | 129 | 311 MB): measure what takes the space (changes, text blobs, graphs, |
|
| 130 | 130 | checkpoints, indexes), then fix the largest. Compression level and |
|
| 131 | 131 | dictionary, and packing order, are all candidates. |
|
| … | 70 unchanged lines |
||
| 202 | 202 | - The vscode slice now verifies: all 1 747 commits and 3.3 million files. |
|
| 203 | 203 | - `oxy git verify` is cached by graph key and blob: 115 s instead of 1 400 s. |
|
| 204 | 204 | - 2026-09-30 **H2, first part**: an import builds graphs only for the files a commit may change, from history-only states. The first 5 000 vscode commits: 309 s and 2.3 GB (from 412 s and 6.3 GB), and all verified. Next: verify and import reuse each commit's history instead of loading it again, before H3 to H5. |
|
| 205 | + | - 2026-09-30 **P1 and S1 done** (oxygen#40). |
|
| 206 | + | - **Repack**: `oxy gc` repacks everything into one pack at zstd level 9, compressing on every core (9f7585d4). |
|
| 207 | + | - **Format 3**: text blobs hold the lines' bytes, with no CBOR framing (1122dcb3). The runner (oxygenflow#16) and hub (oxygenhub#59) were deployed with the new reader first. |
|
| 208 | + | - **Linux tip**: the store is 324 MB after gc (objects 306 MB; Git 311 MB). The first commit takes 32.6 s (Git 33.7 to 37.9 s), measured while Earth ran at load average 11 during the vscode import. |
|
| 209 | + | - **H2**: the vscode import (H4) runs on Earth as a service. |
|
| 205 | 210 |
modified docs/benchmarks.md +9 −2
| … | 483 unchanged lines |
||
| 484 | 484 | 46 308 files of 4 KiB or more. |
|
| 485 | 485 | ||
| 486 | 486 | `oxy gc` now repacks everything into one pack at zstd level 9, compressed |
|
| 487 | - | on every core: 357 MB (349 MB pack) in 52 s. The text blob framing is the |
|
| 488 | - | next step (a change format version 3 with raw text blobs). |
|
| 487 | + | on every core: 357 MB (349 MB pack) in 52 s. Change format 3 then stores |
|
| 488 | + | a text blob as the lines' bytes: |
|
| 489 | + | ||
| 490 | + | | Linux tip | Store after gc | First commit | |
|
| 491 | + | |---|---:|---:| |
|
| 492 | + | | Format 2, gc at level 3 | 390 MB | 41 s | |
|
| 493 | + | | Format 2, gc repacks at level 9 | 357 MB | | |
|
| 494 | + | | Format 3 (Earth at load average 11) | 324 MB (objects 306 MB) | 32.6 s, 4.4 GB | |
|
| 495 | + | | Git | 311 MB (.git) | 33.7 to 37.9 s, 42 MB | |
|
| 489 | 496 |