From: Ondřej Surý Date: Wed, 15 Dec 2021 16:48:28 +0000 (+0100) Subject: Reduce freemax values for dns_message mempools X-Git-Tag: v9.17.22~40^2 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=72cc25465ff254afe0a104f97283e66776b5f3bf;p=thirdparty%2Fbind9.git Reduce freemax values for dns_message mempools It was discovered that NAME_FREEMAX and RDATASET_FREEMAX was based on the NAME_FILLCOUNT and RDATASET_FILLCOUNT respectively multiplied by 8 and then when used in isc_mempool_setfreemax, the value would be again multiplied by 32. Keep the 8 multiplier in the #define and remove the 32 multiplier as it was kept in error. The default fillcount can fit 99.99% of the requests under normal circumstances, so we don't need to keep that many free items on the mempool. --- diff --git a/lib/dns/message.c b/lib/dns/message.c index afc1441948a..4d437dd3e63 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -722,12 +722,12 @@ dns_message_create(isc_mem_t *mctx, unsigned int intent, dns_message_t **msgp) { isc_mempool_create(m->mctx, sizeof(dns_fixedname_t), &m->namepool); isc_mempool_setfillcount(m->namepool, NAME_FILLCOUNT); - isc_mempool_setfreemax(m->namepool, 32 * NAME_FREEMAX); + isc_mempool_setfreemax(m->namepool, NAME_FREEMAX); isc_mempool_setname(m->namepool, "msg:names"); isc_mempool_create(m->mctx, sizeof(dns_rdataset_t), &m->rdspool); isc_mempool_setfillcount(m->rdspool, RDATASET_FILLCOUNT); - isc_mempool_setfreemax(m->rdspool, 32 * RDATASET_FREEMAX); + isc_mempool_setfreemax(m->rdspool, RDATASET_FREEMAX); isc_mempool_setname(m->rdspool, "msg:rdataset"); isc_buffer_allocate(mctx, &dynbuf, SCRATCHPAD_SIZE);