From a2ee1b5591c70947b6447101d6d3c77bbe86ec4c Mon Sep 17 00:00:00 2001 From: Olivier Duclos Date: Tue, 11 Jun 2024 17:39:44 +0200 Subject: [PATCH] MINOR: global: Add a bunch of new tunables Add support for the new keywords: - tune.applet.zero-copy-forwarding - tune.buffers.limit - tune.buffers.reserve - tune.h2.be.glitches-threshold - tune.h2.fe.glitches-threshold - tune.h2.fe.max-total-streams - tune.quic.reorder-ratio - tune.quic.zero-copy-fwd-send - tune.ring.queues --- section-parsers.go | 11 +++++++++-- tests/configs/haproxy.cfg.go | 11 ++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/section-parsers.go b/section-parsers.go index 7164d6f..af4961e 100644 --- a/section-parsers.go +++ b/section-parsers.go @@ -261,6 +261,7 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx addParser(parser, &sequence, &parsers.HTTPClientSSLVerify{}) addParser(parser, &sequence, &simple.Enabled{Name: "limited-quic"}) addParser(parser, &sequence, &simple.Enabled{Name: "prealloc-fd"}) + addParser(parser, &sequence, &simple.OnOff{Name: "tune.applet.zero-copy-forwarding"}) addParser(parser, &sequence, &simple.Number{Name: "tune.buffers.limit"}) addParser(parser, &sequence, &simple.Number{Name: "tune.buffers.reserve"}) addParser(parser, &sequence, &simple.Number{Name: "tune.bufsize"}) @@ -271,12 +272,15 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx addParser(parser, &sequence, &simple.OnOff{Name: "tune.fd.edge-triggered"}) addParser(parser, &sequence, &simple.OnOff{Name: "tune.h1.zero-copy-fwd-recv"}) addParser(parser, &sequence, &simple.OnOff{Name: "tune.h1.zero-copy-fwd-send"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.glitches-threshold"}) addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.initial-window-size"}) - addParser(parser, &sequence, &simple.Number{Name: "tune.h2.header-table-size"}) - addParser(parser, &sequence, &simple.Number{Name: "tune.h2.initial-window-size"}) addParser(parser, &sequence, &simple.Number{Name: "tune.h2.be.max-concurrent-streams"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.glitches-threshold"}) addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.initial-window-size"}) addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.max-concurrent-streams"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.h2.fe.max-total-streams"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.h2.header-table-size"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.h2.initial-window-size"}) addParser(parser, &sequence, &simple.Number{Name: "tune.h2.max-concurrent-streams"}) addParser(parser, &sequence, &simple.Number{Name: "tune.h2.max-frame-size"}) addParser(parser, &sequence, &simple.OnOff{Name: "tune.h2.zero-copy-fwd-send"}) @@ -311,6 +315,7 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx addParser(parser, &sequence, &simple.Number{Name: "tune.rcvbuf.frontend"}) addParser(parser, &sequence, &simple.Number{Name: "tune.rcvbuf.server"}) addParser(parser, &sequence, &simple.Number{Name: "tune.recv_enough"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.ring.queues"}) addParser(parser, &sequence, &simple.Number{Name: "tune.runqueue-depth"}) addParser(parser, &sequence, &simple.OnOff{Name: "tune.sched.low-latency"}) addParser(parser, &sequence, &simple.Number{Name: "tune.sndbuf.backend"}) @@ -337,7 +342,9 @@ func (p *configParser) getGlobalParser() *Parsers { //nolint: maintidx addParser(parser, &sequence, &simple.Time{Name: "tune.quic.frontend.max-idle-timeout"}) addParser(parser, &sequence, &simple.Number{Name: "tune.quic.frontend.max-streams-bidi"}) addParser(parser, &sequence, &simple.Number{Name: "tune.quic.max-frame-loss"}) + addParser(parser, &sequence, &simple.Number{Name: "tune.quic.reorder-ratio"}) addParser(parser, &sequence, &simple.Number{Name: "tune.quic.retry-threshold"}) + addParser(parser, &sequence, &simple.OnOff{Name: "tune.quic.zero-copy-fwd-send"}) addParser(parser, &sequence, &parsers.QuicSocketOwner{}) addParser(parser, &sequence, &simple.Enabled{Name: "no-quic"}) addParser(parser, &sequence, &simple.Word{Name: "cluster-secret"}) diff --git a/tests/configs/haproxy.cfg.go b/tests/configs/haproxy.cfg.go index 1fb7eab..d088764 100644 --- a/tests/configs/haproxy.cfg.go +++ b/tests/configs/haproxy.cfg.go @@ -35,13 +35,23 @@ global stats socket $PWD/haproxy-runtime-api.3.sock level admin mode 777 expose-fd listeners process 3 stats timeout 120s limited-quic + tune.applet.zero-copy-forwarding off + tune.buffers.limit 30 + tune.buffers.reserve 3 + tune.bufsize 32768 tune.disable-zero-copy-forwarding tune.events.max-events-at-once 150 tune.h1.zero-copy-fwd-recv on tune.h1.zero-copy-fwd-send on + tune.h2.be.glitches-threshold 16 + tune.h2.fe.glitches-threshold 24 + tune.h2.fe.max-total-streams 1048576 tune.h2.zero-copy-fwd-send on tune.pt.zero-copy-forwarding on + tune.ring.queues 8 tune.ssl.default-dh-param 2048 + tune.quic.reorder-ratio 75 + tune.quic.zero-copy-fwd-send on ssl-default-bind-options no-sslv3 no-tls-tickets ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK ssl-load-extra-del-ext @@ -49,7 +59,6 @@ global # random comment before snippet ###_config-snippet_### BEGIN tune.ssl.default-dh-param 2048 - tune.bufsize 32768 ssl-default-bind-client-sigalgs RSA+SHA256 ssl-default-bind-sigalgs ECDSA+SHA256:RSA+SHA256 ###_config-snippet_### END