haproxy/reg-tests/http-rules
Willy Tarreau e049bd00ab MEDIUM: config: change default limits to 1024 threads and 32 groups
A test run on a dual-socket EPYC 9845 (2x160 cores) showed that we'll
be facing new limits during the lifetime of 3.2 with our current 16
groups and 256 threads max:

  $ cat test.cfg
  global
      cpu-policy perforamnce

  $ ./haproxy -dc -c -f test.cfg
  ...
  Thread CPU Bindings:
    Tgrp/Thr  Tid        CPU set
    1/1-32    1-32       32: 0-15,320-335
    2/1-32    33-64      32: 16-31,336-351
    3/1-32    65-96      32: 32-47,352-367
    4/1-32    97-128     32: 48-63,368-383
    5/1-32    129-160    32: 64-79,384-399
    6/1-32    161-192    32: 80-95,400-415
    7/1-32    193-224    32: 96-111,416-431
    8/1-32    225-256    32: 112-127,432-447

Raising the default limit to 1024 threads and 32 groups is sufficient
to buy us enough margin for a long time (hopefully, please don't laugh,
you, reader from the future):

  $ ./haproxy -dc -c -f test.cfg
  ...
  Thread CPU Bindings:
    Tgrp/Thr  Tid        CPU set
    1/1-32    1-32       32: 0-15,320-335
    2/1-32    33-64      32: 16-31,336-351
    3/1-32    65-96      32: 32-47,352-367
    4/1-32    97-128     32: 48-63,368-383
    5/1-32    129-160    32: 64-79,384-399
    6/1-32    161-192    32: 80-95,400-415
    7/1-32    193-224    32: 96-111,416-431
    8/1-32    225-256    32: 112-127,432-447
    9/1-32    257-288    32: 128-143,448-463
    10/1-32   289-320    32: 144-159,464-479
    11/1-32   321-352    32: 160-175,480-495
    12/1-32   353-384    32: 176-191,496-511
    13/1-32   385-416    32: 192-207,512-527
    14/1-32   417-448    32: 208-223,528-543
    15/1-32   449-480    32: 224-239,544-559
    16/1-32   481-512    32: 240-255,560-575
    17/1-32   513-544    32: 256-271,576-591
    18/1-32   545-576    32: 272-287,592-607
    19/1-32   577-608    32: 288-303,608-623
    20/1-32   609-640    32: 304-319,624-639

We can change this default now because it has no functional effect
without any configured cpu-policy, so this will only be an opt-in
and it's better to do it now than to have an effect during the
maintenance phase. A tiny effect is a doubling of the number of
pool buckets and stick-table shards internally, which means that
aside slightly reducing contention in these areas, a dump of tables
can enumerate keys in a different order (hence the adjustment in the
vtc).

The only really visible effect is a slightly higher static memory
consumption (29->35 MB on a small config), but that difference
remains even with 50k servers so that's pretty much acceptable.

Thanks to Erwan Velu for the quick tests and the insights!
2025-05-13 18:15:33 +02:00
..
1k.txt REGTESTS: Add reg tests for the HTTP return action 2020-02-06 15:13:04 +01:00
acl_cli_spaces.vtc REGTESTS: disable temporarly mworker test on OSX 2024-11-20 17:13:59 +01:00
agents.acl REGTEST: http-rules: test spaces in ACLs 2020-06-19 14:32:55 +02:00
converters_ipmask_concat_strcmp_field_word.map REGTEST: rename the reg test files. 2019-04-23 15:37:03 +02:00
converters_ipmask_concat_strcmp_field_word.vtc MEDIUM: config: change default limits to 1024 threads and 32 groups 2025-05-13 18:15:33 +02:00
default_rules.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
del_header.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
except-forwardfor-originalto.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
forwarded-header-7239.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
h1or2_to_h1c.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
http_after_response.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
http_return.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
http-err-fail.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
ifnone-forwardfor.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
lf-file.txt REGTESTS: Add reg tests for the HTTP return action 2020-02-06 15:13:04 +01:00
map_ordering.map MINOR: map: mapfile ordering also matters for tree-based match types 2024-01-11 11:13:54 +01:00
map_ordering.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
map_redirect-be.map REGTEST: rename the reg test files. 2019-04-23 15:37:03 +02:00
map_redirect.map MINOR: http-rules: add a new "ignore-empty" option to redirects. 2021-09-02 17:06:18 +02:00
map_redirect.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
map_regm_with_backref.map REGTEST: rename the reg test files. 2019-04-23 15:37:03 +02:00
map_regm_with_backref.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
normalize_uri.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
path_and_pathq.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
restrict_req_hdr_names.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00
strict_rw_mode.vtc REGTESTS: use -dW by default on every reg-tests 2024-11-19 16:53:10 +01:00