Skip to content

Conversation

@kazuho
Copy link
Member

@kazuho kazuho commented Aug 29, 2021

At the moment, each ACK range takes up to 64 quicly_sent_t slots, where 64 is the maximum number of ACK ranges that quicly retains.

These become a pressure when the peer reaches the end of its slow start, because:

  1. quicly acting as a receiver will be sending many ACKs, each of them carrying lots of ranges,
  2. memory used to retain sentmap for one ACK can become as large as 2KB.

This PR mitigates the pressure by opportunistically storing at most 8 ranges within one quicly_sent_t.

This PR should at least mitigate #364, by reducing the number of entries in the sentmap to 1/8. If that's not enough, we can reduce the numbers of entries further by 1/4, by adopting #488. Anyways, the first step would be to adopt this PR, as it fixes the memory footprint issue as well (see the 2nd point above).

@kazuho kazuho requested review from hfujita and janaiyengar August 31, 2021 10:55
Copy link
Collaborator

@janaiyengar janaiyengar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice optimization! Looks good to me; thanks @kazuho!

@kazuho kazuho merged commit 17cc2f9 into master Sep 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants