Cache store: async reads for J2C, mesh, asset and cluster (use the reader/decode pools and priorities) #867
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#867
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up to #715. Only GPU-ready textures use the store's async
read()with priorities. J2C (lltexturecache.cpp), mesh (llmeshdiskcache.cpp), assets (llfilesystemstore.cpp) and cluster LOD (llcleanclustercachestore.cpp) callreadSyncon their own threads. They bypass the new reader/decode pools, the priority queues and the scheduling stats.Data
J2C store reads, first 10 min of a fully migrated session: p50 0.54 ms for about 21 KB reads, against 0.08 ms on the legacy texture cache. GPU-ready async reads in the same session averaged 0.24 ms disk + 0.24 ms decode.
Plan
read()with a completion. Map priorities:readSynccost 0.5 ms (lock contention, hash over the payload, page cache misses, a copy).Acceptance