mozilla / neqo

Neqo, the Mozilla Firefox implementation of QUIC in Rust
https://firefox-source-docs.mozilla.org/networking/http/http3.html
Apache License 2.0
1.82k stars 123 forks source link

ACK processing taking too long #825

Closed agrover closed 4 years ago

agrover commented 4 years ago

see qvis and log around "pn=517"

The even distribution of timestamps on log messages makes me think the log messages are part of what is causing the delay. There also appears to be some logic inefficiency in the tracking code that is making the logging delays worse.

martinthomson commented 4 years ago

@agrover, We'll need to take a copy of that log so that it doesn't disappear.

agrover commented 4 years ago

Well it's gone, I need to grab another one.

agrover commented 4 years ago

This is a truncated log but shows the problem: https://gist.github.com/agrover/bda64d5d93ac43f0e83ca0ea6764e86e#file-output-log-L5594. from time=588ms to t=694ms we just print stuff. There's the possibility of algorithmic improvement but probably the first thing to do is turn down or remove that log message.

martinthomson commented 4 years ago

@agrover you might find that running the code from #850 helps.

martinthomson commented 4 years ago

I ran a brief test under the "simulation" and determined that the ACK ratio doesn't seem to affect the overall performance.

If we send fewer ACKs, it takes a little more "real" time to complete, but the total execution time doesn't seem affected.

I'm going to see if adding a PING along with ACKs helps at all.

In case you want to play around:

cargo test -p neqo-transport --test network transfer_fixed_seed -- --nocapture
martinthomson commented 4 years ago

We can close this based on #862 being merged. This might come up again, but it's no longer dire.