Last Comment Bug 813715 - Throttle bandwidth for highly parallel objects
: Throttle bandwidth for highly parallel objects
Status: NEW
[necko-backlog]
:
Product: Core
Classification: Components
Component: Networking: HTTP (show other bugs)
: unspecified
: x86_64 Linux
: -- normal with 6 votes (vote)
: ---
Assigned To: Nobody; OK to take it and work on it
:
: Patrick McManus [:mcmanus]
Mentors:
Depends on:
Blocks: 813707
  Show dependency treegraph
 
Reported: 2012-11-20 13:17 PST by Patrick McManus [:mcmanus]
Modified: 2016-02-18 06:38 PST (History)
10 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---


Attachments
packet capture (2.22 MB, application/octet-stream)
2012-11-20 13:19 PST, Patrick McManus [:mcmanus]
no flags Details

Description Patrick McManus [:mcmanus] 2012-11-20 13:17:12 PST
I'll attach a packet capture that shows firefox enagaged in dozens (~90) of parallel sessions due to hostname sharding and the server responding with very aggressive TCP behavior on each of them (IW10).

This leads to losses, retransmissions, and 500ms of queuing induced link delays.

Generally we want to allow such high levels of parallelism because they are used to fight against high latency when dealing with small objects. Its the big objects and the IW10 configuration that get us into trouble here.

I hypothesize that when we start to do a large amount of parallelism we restrict our announced TCP receive window so as to effectively disallow IW10. That will still give us good latency on these highly parallel connections but throttle back the bandwidth and avoid over saturation. In the case of images that should still bring back the layout information quickly, which is great. As the active parallelism is reduced the window can be increased.

Low amounts of parallelism could just use normal OS auto tuning...

I don't yet know what the thresholds for low-vs-high are.
Comment 1 Patrick McManus [:mcmanus] 2012-11-20 13:19:17 PST
Created attachment 683723 [details]
packet capture
Comment 2 Patrick McManus [:mcmanus] 2012-12-08 20:38:48 PST
There are significant variances in support for the necessary rwin management primatives between platforms.. I detailed most of that here:

http://bitsup.blogspot.com/2012/12/managing-bandwidth-priorities-in.html

Even given those differences, there is a reasonable strategy to at least try that would apply to win >= vista and os x.. notably that leaves XP and Linux/Android out.

Note You need to log in before you can comment on or make changes to this bug.