summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Kelley <simon@thekelleys.org.uk>2022-09-16 00:16:18 +0100
committerSimon Kelley <simon@thekelleys.org.uk>2022-09-16 00:16:18 +0100
commitfa45e06431ff0e96d3840f2180666dfabbd2c972 (patch)
treed68bad9c6a87a6741a51db5bba77cb395b0f2e4d
parent6722ec6c78b96b82956e67b60a8cfc5b155c6659 (diff)
downloaddnsmasq-fa45e06431ff0e96d3840f2180666dfabbd2c972.tar.gz
Initialise modified-moving-average latency calc better.
Use the first value, rather than initialising at zero, which takes many queries to converge.
-rw-r--r--src/forward.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/forward.c b/src/forward.c
index 52d5b8e..14d9421 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -1241,7 +1241,10 @@ void reply_query(int fd, time_t now)
free_rfds(&forward->rfds);
/* calculate modified moving average of server latency */
- server->mma_latency += dnsmasq_milliseconds() - forward->forward_timestamp - server->query_latency;
+ if (server->query_latency == 0)
+ server->mma_latency = (dnsmasq_milliseconds() - forward->forward_timestamp) * 128; /* init */
+ else
+ server->mma_latency += dnsmasq_milliseconds() - forward->forward_timestamp - server->query_latency;
/* denominator controls how many queries we average over. */
server->query_latency = server->mma_latency/128;