Race Cache With Network
RCWN
Michal Novotny
Junior Hsu
Valentin Gosu
Chromium net-dev mailing list thread:
"This suggests that Firefox's cache is performing better than Chrome's on windows."
About 6.3% of all cached responses take more than 1 second (in Firefox)
How it started
Reasons
- other applications doing IO
- system updates
- downloads
- AV software
- slow spinning disk
- HDD failure?
- cache architecture (too many files) ?
- incorrect measuring
Solution: RCWN
- Start both the cache and network requests
- Use which response comes back first
- [maybe] cancel the other request
Why not always race?
- Wasting bandwidth unnecessarily
- More pressure on the servers
- May make other network requests slower
- We don't always prefer the first response
ex: large cached files, alt-data
Heuristic
If the request:
- is not using appcache
- is smaller than 256 kb
- doesn't have alt-data
Then:
- if the cache is slow: we race immediately
- otherwise: set a timer for 3 * avgCacheTime
Can I use it yet?
Landed in Firefox 57
Turned on in Firefox 59
View stats at: about:networking#rcwn
Does it work?
72.08%
10.71%
3.61%
4.92%
0.23%
8.45%
RCWN network wins in ~4% of requests
We race ~17% of requests
Does it work well?
median: 145.34 ms
95th percentile: 7.08 seconds
0.8% requests: > 54 seconds !
Disclaimer
Results vary greatly with disk and network speed
What's next?
- Show racing status in devtools panel
- hacks.mozilla.org blog post
- Improved heuristics
- Look into cache performance
Race Cache With Network
By Valentin Gosu
Race Cache With Network
- 10,523