- Increase default to num-queries-per-thread: 2048, when unbound is

compiled with libevent. It makes saturation of the task queue more
  resource intensive and less practical. Thanks to Shiming Liu,
  Network and Information Security Lab, Tsinghua University for the
  report.
This commit is contained in:
W.C.A. Wijngaards 2025-04-16 12:03:08 +02:00
parent 9c99b404a1
commit fe835f9d52
4 changed files with 11 additions and 4 deletions

View file

@ -1,3 +1,10 @@
16 April 2025: Wouter
- Increase default to `num-queries-per-thread: 2048`, when unbound is
compiled with libevent. It makes saturation of the task queue more
resource intensive and less practical. Thanks to Shiming Liu,
Network and Information Security Lab, Tsinghua University for the
report.
11 April 2025: Yorgos 11 April 2025: Yorgos
- Merge #1265: Fix WSAPoll. - Merge #1265: Fix WSAPoll.

View file

@ -163,7 +163,7 @@ server:
# msg-cache-slabs: 4 # msg-cache-slabs: 4
# the number of queries that a thread gets to service. # the number of queries that a thread gets to service.
# num-queries-per-thread: 1024 # num-queries-per-thread: 2048
# if very busy, 50% queries run to completion, 50% get timeout in msec # if very busy, 50% queries run to completion, 50% get timeout in msec
# jostle-timeout: 200 # jostle-timeout: 200

View file

@ -268,7 +268,7 @@ The number of queries that every thread will service simultaneously.
If more queries arrive that need servicing, and no queries can be jostled out If more queries arrive that need servicing, and no queries can be jostled out
(see \fIjostle\-timeout\fR), then the queries are dropped. This forces (see \fIjostle\-timeout\fR), then the queries are dropped. This forces
the client to resend after a timeout; allowing the server time to work on the client to resend after a timeout; allowing the server time to work on
the existing queries. Default depends on compile options, 512 or 1024. the existing queries. Default depends on compile options, 512 or 2048.
.TP .TP
.B jostle\-timeout: \fI<msec> .B jostle\-timeout: \fI<msec>
Timeout used when the server is very busy. Set to a value that usually Timeout used when the server is very busy. Set to a value that usually
@ -280,7 +280,7 @@ service by slow queries or high query rates. Default 200 milliseconds.
The effect is that the qps for long-lasting queries is about The effect is that the qps for long-lasting queries is about
(numqueriesperthread / 2) / (average time for such long queries) qps. (numqueriesperthread / 2) / (average time for such long queries) qps.
The qps for short queries can be about (numqueriesperthread / 2) The qps for short queries can be about (numqueriesperthread / 2)
/ (jostletimeout in whole seconds) qps per thread, about (1024/2)*5 = 2560 / (jostletimeout in whole seconds) qps per thread, about (2048/2)*5 = 5120
qps by default. qps by default.
.TP .TP
.B delay\-close: \fI<msec> .B delay\-close: \fI<msec>

View file

@ -155,7 +155,7 @@ config_create(void)
# else # else
/* libevent can use many sockets */ /* libevent can use many sockets */
cfg->outgoing_num_ports = 4096; cfg->outgoing_num_ports = 4096;
cfg->num_queries_per_thread = 1024; cfg->num_queries_per_thread = 2048;
# endif # endif
cfg->outgoing_num_tcp = 10; cfg->outgoing_num_tcp = 10;
cfg->incoming_num_tcp = 10; cfg->incoming_num_tcp = 10;