Skip to content

Commit e0b1681

Browse files
isubasingheclaude
andcommitted
docs: fix spellcheck for node status compression docs
Adds the compression vocabulary to .spelling, moves timing units into the benchmark table header so cells are bare numbers, and relocates the internal benchmark design spec out of docs/ to live with the harness. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: isubasinghe <isitha@pipekit.io>
1 parent 33c4e7f commit e0b1681

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

.spelling

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
100Gi
55
100Mi
66
100s
7+
10MiB
78
10h
89
10s
910
120s
1011
120sec
1112
1Gi
1213
1Mi
14+
1MiB
1315
1h
1416
1m
1517
200Ki
@@ -161,6 +163,7 @@ backport
161163
backported
162164
boolean
163165
booleans
166+
brotli
164167
buildkit
165168
changelog
166169
codebase
@@ -189,6 +192,8 @@ gitops
189192
goroutine
190193
goroutines
191194
govaluate
195+
gunzips
196+
gzip
192197
gzipped
193198
i.e.
194199
idempotence
@@ -294,6 +299,7 @@ v3.6.5
294299
v3.7
295300
v3.7.0
296301
v4.0
302+
v4.1
297303
validator
298304
vendored
299305
versioned
@@ -305,3 +311,4 @@ webpack-dev-server
305311
workflow-controller-configmap
306312
workqueue
307313
yaml
314+
zstd

docs/offloading-large-workflows.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ Levels are algorithm-specific and default to each library's own default: `gzip`
1919

2020
For context, measurements on synthetic node statuses (sizes are relative to the gzip default, compression times are for ~1MiB and ~10MiB of node status JSON):
2121

22-
| Algorithm | Level | Size vs gzip | Compress 1MiB | Compress 10MiB |
23-
|-----------|-------------|--------------|---------------|----------------|
24-
| `gzip` | 6 (default) | 100% | 5ms | 43ms |
25-
| `zstd` | 2 (default) | 88% | 6ms | 49ms |
26-
| `zstd` | 3 | 82% | 6ms | 58ms |
27-
| `brotli` | 6 (default) | 72% | 11ms | 129ms |
28-
| `brotli` | 9 | 67% | 24ms | 232ms |
29-
| `brotli` | 11 | 59% | 1.7s | 18.3s |
30-
31-
Decompression speed is roughly equal for all three algorithms (~9ms per 1MiB of JSON). Higher levels than those shown buy little: brotli 11 compresses best but is ~80× slower than brotli 9, which matters because the controller re-compresses the status on every update of a large workflow. `zstd` 3 and `brotli` 9 are good choices when smaller statuses are worth slightly more controller CPU; they raise the effective node-count ceiling before offloading is required by ~20% and ~50% respectively.
22+
| Algorithm | Level | Size vs gzip | Compress 1MiB (ms) | Compress 10MiB (ms) |
23+
|-----------|-------------|--------------|--------------------|---------------------|
24+
| `gzip` | 6 (default) | 100% | 5 | 43 |
25+
| `zstd` | 2 (default) | 88% | 6 | 49 |
26+
| `zstd` | 3 | 82% | 6 | 58 |
27+
| `brotli` | 6 (default) | 72% | 11 | 129 |
28+
| `brotli` | 9 | 67% | 24 | 232 |
29+
| `brotli` | 11 | 59% | 1700 | 18300 |
30+
31+
Decompression speed is roughly equal for all three algorithms (about 9 milliseconds per MiB of JSON). Higher levels than those shown buy little: brotli 11 compresses best but is about 80 times slower than brotli 9, which matters because the controller re-compresses the status on every update of a large workflow. `zstd` 3 and `brotli` 9 are good choices when smaller statuses are worth slightly more controller CPU; they raise the effective node-count ceiling before offloading is required by roughly 20% and 50% respectively.
3232

3333
These numbers are from synthetic data; real workflows may compress differently.
3434

docs/superpowers/specs/2026-06-12-node-compression-benchmark-design.md renamed to hack/compression-bench/DESIGN.md

File renamed without changes.

0 commit comments

Comments
 (0)