-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Enable UDP GRO for QUIC #14012
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable UDP GRO for QUIC #14012
Conversation
Nice. @tatsuhiro-t, have done any measurements to see how this changes performance? |
I did some experiments on loopback. Both curl and server did not fully utilize CPU, and 4GiB transfer took ~11 seconds without GRO and ~10 seconds with GRO. So it does make a difference, but YMMV. |
The linux-musl-llvm build gets this compiler error:
|
I think it needs (void*) casts somewhere to shut up these warnings. |
Well, this is famous musl issue, and the only simple workaround is disable compiler warnings for this portion of the code: see https://git.openembedded.org/meta-openembedded/tree/meta-oe/recipes-devtools/breakpad/breakpad/0001-Turn-off-sign-compare-for-musl-libc.patch |
GRO is only enabled for ngtcp2+nghttp3 and quiche. The others do their own I/O, and enabling GRO here causes issues unless they are prepared for it. |
Basic speed test with ngtcp2 with and without this PR. Server: caddy. Running on localhost. tldr: the parallel test doing 50 times 100MB downloads runs 39% faster. without
with
|
Thanks! |
``` /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c: In function 'msghdr_get_udp_gro': /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:344: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 344 | #pragma clang diagnostic push | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:345: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 345 | #pragma clang diagnostic ignored "-Wsign-compare" | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:346: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 346 | #pragma clang diagnostic ignored "-Wcast-align" | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:350: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 350 | #pragma clang diagnostic pop | ``` https://github.com/curl/curl-for-win/actions/runs/11356281008/job/31587180874#step:3:9534 Follow-up to a571afc curl#14012
``` /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c: In function 'msghdr_get_udp_gro': /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:344: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 344 | #pragma clang diagnostic push | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:345: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 345 | #pragma clang diagnostic ignored "-Wsign-compare" | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:346: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 346 | #pragma clang diagnostic ignored "-Wcast-align" | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:350: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 350 | #pragma clang diagnostic pop | ``` https://github.com/curl/curl-for-win/actions/runs/11356281008/job/31587180874#step:3:9534 Follow-up to a571afc #14012 Closes #15303
``` /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c: In function 'msghdr_get_udp_gro': /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:344: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 344 | #pragma clang diagnostic push | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:345: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 345 | #pragma clang diagnostic ignored "-Wsign-compare" | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:346: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 346 | #pragma clang diagnostic ignored "-Wcast-align" | /Users/runner/work/curl-for-win/curl-for-win/curl/lib/vquic/vquic.c:350: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas] 350 | #pragma clang diagnostic pop | ``` https://github.com/curl/curl-for-win/actions/runs/11356281008/job/31587180874#step:3:9534 Follow-up to a571afc curl#14012 Closes curl#15303
No description provided.