1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-09 20:42:44 +03:00
Commit Graph

14 Commits

Author SHA1 Message Date
Xiaoting Tang
2d00d56fbd Put outstanding packets, events and associated counters in one class
Summary: ^

Reviewed By: yangchi

Differential Revision: D21956286

fbshipit-source-id: 305b879ad11df23aae8e0c3aac4645c0136b3012
2020-06-10 12:45:28 -07:00
Yang Chi
d5b454a9c0 Back out "Quic pacing refactor"
Summary: Original commit changeset: b83e4a01fc81

Reviewed By: mjoras

Differential Revision: D19644828

fbshipit-source-id: 83d5a3454c6f9a8364e970d236cba008aef85fbd
2020-01-30 18:32:03 -08:00
Yang Chi
edb5104858 Quic pacing refactor
Summary:
(1) The first change is the pacing rate calculation is simplified. It
removes the interval calculation and just uses the timer tick as the interval.
Then it calculates the burst size from there.  For most cases these two
calculation should land at the same result, except when the
`cwnd < minBurstSize * tick / RTT`. In that case, the current calculation would
spread writes evenly across one RTT, assuming no new Ack arrives during the RTT;
while the new calculation uses the first a few ticks to finish the cwnd amount
of data.

(2) Then this diff changes how we compensate late timer. Now the pacer will
maintain a nextWriteTime_ and lastWriteTime_, which makes it easier to
calculate time elapsed since last write. Then each time writer tries to write,
it will be allowed to write timeElapsed * pacingRate. This is much more
intuitive than the current logic.

(3) The diff also adds pacing limited tracking into the pacer. An expected
pacing rate is cached when pacing rate is refreshed by congestion controller.
Then with packets sent out, Pacer keeps calculating the current send rate. When
the send rate is lower, Pacer sets pacingLimited_ to true. Otherwise false.

Only when the connection is not pacing limited, the lastWriteTime_ will be
packet sent time, otherwise it will be set to the last nextWriteTime_. In other
words: if the send rate is lower than expected, we use the expected send time
instead of real send time to calculate time elapsed, to allow higher late
timer compenstation, to give pacer a chance to catch up.

(4) Finally this diff removes the token collecting behavior in the pacer. I
think having tokens increaed, instead of reset, when an ack refreshes the pacing
rate or when we compensate late time, is quite confusing to some people. After
all the above changes, I found tperf can still sustain good throughput without
always increase tokens, and rally actualy gives even better results. So i think
we can remove this part of the pacer that's potentially very confusing to
people who don't know how we got there.

Reviewed By: mjoras

Differential Revision: D19252744

fbshipit-source-id: b83e4a01fc812fc52117f3ec0f5c3be1badf211f
2020-01-17 10:11:35 -08:00
Yang Chi
5389228722 Lower bound instead of upper bound Quic pacing burst size
Summary:
That's it. No more artificial limit. Even in a really fat pipe i
haven't seen us writing out a burst > 8 packets when the timer can schedule per
200 us.

Reviewed By: mjoras

Differential Revision: D17670054

fbshipit-source-id: 67535a6fae27defc7b6f79d76c9e5fa933b3923d
2019-10-10 22:08:11 -07:00
Yang Chi
c0a659a30a Replace pacing related callsites with new Pacer interface
Summary:
Use the new Pacer interface in the transport where we currently
directly use CongestinoController interrace for paciner related APIs.

Reviewed By: mjoras

Differential Revision: D16918672

fbshipit-source-id: 410f72d567e71bdd3279e344f6e9abf5e132518e
2019-08-30 19:30:44 -07:00
Yang Chi
bde27bdffe refactor calculatePacingRate function
Summary:
second try of this diff, now after fixing the uninitizlied
std::chrono::duration values in BBR and Copa

No need to pass the minimal interval any more since everywhere we just
pass the transportSettings value. Just that inside the function directly

Reviewed By: oesh

Differential Revision: D16985567

fbshipit-source-id: 3818371708633a324256e62b7f49bd6d1441e991
2019-08-29 13:46:41 -07:00
Luca Niccolini
cf842aab47 cleanup some unused includes and using
Reviewed By: yangchi

Differential Revision: D16976466

fbshipit-source-id: c1fc2ee0795997f498ac7431542bbfbf1f0d2fb2
2019-08-24 02:03:39 -07:00
Yang Chi
53b40027f6 Back out "refactor calculatePacingRate function"
Summary: Original commit changeset: 22ada4f25d56

Reviewed By: lnicco

Differential Revision: D16951700

fbshipit-source-id: 6370b6c6e348aa18b63a008ad14ef2f7d0336d98
2019-08-22 09:06:47 -07:00
Yang Chi
eb10f2e36d refactor calculatePacingRate function
Summary:
No need to pass the minimal interval any more since everywhere we just
pass the transportSettings value. Just that inside the function directly

Reviewed By: mjoras

Differential Revision: D16773023

fbshipit-source-id: 22ada4f25d565e97e7fce27371a0e2240bbfe8c0
2019-08-19 09:14:08 -07:00
Yang Chi
fc8bbbb3f6 Fix min burst size
Summary: should be 1 packet instead of minCwnd

Reviewed By: siyengar, sharma95

Differential Revision: D15526171

fbshipit-source-id: b523eaef2683c0a1bfcd51d16dd249b261feb706
2019-07-08 23:39:02 -07:00
Bonnie Xu
f4ae0a1efd Updated files to change syntax.
Summary: Changed existing chrono syntax to chrono_literals syntax.

Reviewed By: mjoras, sharma95

Differential Revision: D15374649

fbshipit-source-id: 40033e90cca226266ef85e4fec629f290bc5dae6
2019-05-20 12:10:46 -07:00
Yang Chi
846744370c Pass minimal cwnd into pacing rate calculation function
Summary:
Currently we use the number from transport setting directly inside
this function. There are congestion controllers that want to have a different
min cwnd value than the transport settings.

Reviewed By: siyengar

Differential Revision: D15292719

fbshipit-source-id: 69cdf9dea11c55907f0a511ebb3c000b48eac8f0
2019-05-11 07:58:25 -07:00
Udip Pant
4a9537798e Add correct license headers on some missing files
Summary: ^

Reviewed By: sharma95

Differential Revision: D15172546

fbshipit-source-id: bacc832752a433b86962e77bb19aff4504640e60
2019-05-01 22:42:04 -07:00
udippant
50d4939e9e Initial commit of mvfst 2019-04-22 23:42:46 -07:00