docs(performance): Wind server decode measured and fixed in #1717; Wind zoom stalls traced to Cesium's globe shaders

Co-Authored-By: Claude Fable 5.2 <[email protected]>
This commit is contained in:
Mazeyar Moeini FeizabadiandClaude Fable 5.2 committed 2026-11-13 17:18:56 +01:00
1 parent c16bfa5abd
commit 6b4b9e43c8
1 file changed
+8 -4
+8 -4
View File
@@ -53,7 +53,7 @@ Worst first. "Fix" names the pull request that carries the fix.
| 13 | AIS store | Both vessel maps are walked on every position message, and sorted whole once past the cap | #1712 | | 13 | AIS store | Both vessel maps are walked on every position message, and sorted whole once past the cap | #1712 |
| 14 | Satellite clouds on the 3D Tiles map | A CPU pass over a 4096 x 2048 image, 90 to 180 ms measured on a synthetic canvas, twice in a row | #1713 (canvas path) | | 14 | Satellite clouds on the 3D Tiles map | A CPU pass over a 4096 x 2048 image, 90 to 180 ms measured on a synthetic canvas, twice in a row | #1713 (canvas path) |
| 15 | NVG and FLIR styles | Over 100 texture reads per pixel on every frame | not started | | 15 | NVG and FLIR styles | Over 100 texture reads per pixel on every frame | not started |
| 16 | Wind server | Full 0.25 degree GRIB fields decoded on the event loop, 200 to 600 ms estimated per refresh | not started | | 16 | Wind server | Full 0.25 degree GRIB fields decoded on the event loop. Measured afterwards: 68 ms blocked per warm refresh, about 250 ms on the first, about 400 ms when all six keys refresh together | #1717 |
| 17 | Imported geo files and other per-feature ground clamps | Measured afterwards: imported files do not freeze; see below | none needed | | 17 | Imported geo files and other per-feature ground clamps | Measured afterwards: imported files do not freeze; see below | none needed |
## Cause and fix, per finding ## Cause and fix, per finding
@@ -143,8 +143,11 @@ lowering the rate would change how the layer looks. `disable()` releases the
baked geometry on purpose, at the price of one task of about 130 ms on baked geometry on purpose, at the price of one task of about 130 ms on
re-enable. re-enable.
No fix is proposed. Warming the shader programs before the first zoom is the A third look, timing every program link on a preview build, settled it: Wind
one thing left to try. owns two shader programs, both link during load in 9 to 18 ms, and none ever
linked during a zoom. The programs that do link on a zoom are Cesium's own
globe-surface variants, with Wind on or off, and Cesium links them
synchronously. No fix is proposed.
### 7. Submarine cables ### 7. Submarine cables
@@ -256,7 +259,8 @@ Fix: a separable or half-resolution blur, and noise ticked at about 15 Hz.
`server/providers/wind/decode.js` decodes about a million doubles per message `server/providers/wind/decode.js` decodes about a million doubles per message
synchronously, hourly, for six keys. synchronously, hourly, for six keys.
Fix: decode in a worker thread and keep the decoded U and V fields per cycle. Fix: decode on a worker thread, and keep the sampled U and V of the last
forecast file per model so that choosing an overlay fetches only its field.
### 17. Per-feature ground clamps ### 17. Per-feature ground clamps