mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-08 17:52:10 -04:00
Merge branch 'each-resolver-hash-tables' into 'main'
Use self-resizing hash tables for resolver See merge request isc-projects/bind9!6271
This commit is contained in:
commit
0e0d39bfdb
10 changed files with 351 additions and 322 deletions
3
CHANGES
3
CHANGES
|
|
@ -1,3 +1,6 @@
|
|||
5892. [cleanup] Refactored the the hash tables in resolver.c to
|
||||
use the isc_ht API. [GL !6271]
|
||||
|
||||
5891. [func] Key timing options for `dnssec-settime` and related
|
||||
utilities now accept "UNSET" times as printed by
|
||||
`dnssec-settime -p`. [GL #3361]
|
||||
|
|
|
|||
|
|
@ -153,12 +153,6 @@
|
|||
#define SIZE_AS_PERCENT ((size_t)-2)
|
||||
#endif /* ifndef SIZE_AS_PERCENT */
|
||||
|
||||
#ifdef TUNE_LARGE
|
||||
#define RESOLVER_NTASKS_PERCPU 32
|
||||
#else
|
||||
#define RESOLVER_NTASKS_PERCPU 8
|
||||
#endif /* TUNE_LARGE */
|
||||
|
||||
/* RFC7828 defines timeout as 16-bit value specified in units of 100
|
||||
* milliseconds, so the maximum and minimum advertised and keepalive
|
||||
* timeouts are capped by the data type (it's ~109 minutes)
|
||||
|
|
@ -4734,9 +4728,8 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
|
|||
|
||||
ndisp = 4 * ISC_MIN(named_g_udpdisp, MAX_UDP_DISPATCH);
|
||||
CHECK(dns_view_createresolver(
|
||||
view, named_g_taskmgr, RESOLVER_NTASKS_PERCPU * named_g_cpus,
|
||||
ndisp, named_g_netmgr, named_g_timermgr, resopts,
|
||||
named_g_dispatchmgr, dispatch4, dispatch6));
|
||||
view, named_g_taskmgr, ndisp, named_g_netmgr, named_g_timermgr,
|
||||
resopts, named_g_dispatchmgr, dispatch4, dispatch6));
|
||||
|
||||
if (resstats == NULL) {
|
||||
CHECK(isc_stats_create(mctx, &resstats,
|
||||
|
|
|
|||
|
|
@ -62,12 +62,6 @@
|
|||
|
||||
#define MAX_RESTARTS 16
|
||||
|
||||
#ifdef TUNE_LARGE
|
||||
#define RESOLVER_NTASKS 523
|
||||
#else /* ifdef TUNE_LARGE */
|
||||
#define RESOLVER_NTASKS 31
|
||||
#endif /* TUNE_LARGE */
|
||||
|
||||
#define CHECK(r) \
|
||||
do { \
|
||||
result = (r); \
|
||||
|
|
@ -225,7 +219,7 @@ getudpdispatch(int family, dns_dispatchmgr_t *dispatchmgr,
|
|||
|
||||
static isc_result_t
|
||||
createview(isc_mem_t *mctx, dns_rdataclass_t rdclass, isc_taskmgr_t *taskmgr,
|
||||
unsigned int ntasks, isc_nm_t *nm, isc_timermgr_t *timermgr,
|
||||
isc_nm_t *nm, isc_timermgr_t *timermgr,
|
||||
dns_dispatchmgr_t *dispatchmgr, dns_dispatch_t *dispatchv4,
|
||||
dns_dispatch_t *dispatchv6, dns_view_t **viewp) {
|
||||
isc_result_t result;
|
||||
|
|
@ -243,9 +237,8 @@ createview(isc_mem_t *mctx, dns_rdataclass_t rdclass, isc_taskmgr_t *taskmgr,
|
|||
return (result);
|
||||
}
|
||||
|
||||
result = dns_view_createresolver(view, taskmgr, ntasks, 1, nm, timermgr,
|
||||
0, dispatchmgr, dispatchv4,
|
||||
dispatchv6);
|
||||
result = dns_view_createresolver(view, taskmgr, 1, nm, timermgr, 0,
|
||||
dispatchmgr, dispatchv4, dispatchv6);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
dns_view_detach(&view);
|
||||
return (result);
|
||||
|
|
@ -335,9 +328,8 @@ dns_client_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr, isc_nm_t *nm,
|
|||
isc_refcount_init(&client->references, 1);
|
||||
|
||||
/* Create the default view for class IN */
|
||||
result = createview(mctx, dns_rdataclass_in, taskmgr, RESOLVER_NTASKS,
|
||||
nm, timermgr, client->dispatchmgr, dispatchv4,
|
||||
dispatchv6, &view);
|
||||
result = createview(mctx, dns_rdataclass_in, taskmgr, nm, timermgr,
|
||||
client->dispatchmgr, dispatchv4, dispatchv6, &view);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
goto cleanup_references;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,10 +165,10 @@ typedef enum { dns_quotatype_zone = 0, dns_quotatype_server } dns_quotatype_t;
|
|||
|
||||
isc_result_t
|
||||
dns_resolver_create(dns_view_t *view, isc_taskmgr_t *taskmgr,
|
||||
unsigned int ntasks, unsigned int ndisp, isc_nm_t *nm,
|
||||
isc_timermgr_t *timermgr, unsigned int options,
|
||||
dns_dispatchmgr_t *dispatchmgr, dns_dispatch_t *dispatchv4,
|
||||
dns_dispatch_t *dispatchv6, dns_resolver_t **resp);
|
||||
unsigned int ndisp, isc_nm_t *nm, isc_timermgr_t *timermgr,
|
||||
unsigned int options, dns_dispatchmgr_t *dispatchmgr,
|
||||
dns_dispatch_t *dispatchv4, dns_dispatch_t *dispatchv6,
|
||||
dns_resolver_t **resp);
|
||||
|
||||
/*%<
|
||||
* Create a resolver.
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@ dns_view_createzonetable(dns_view_t *view);
|
|||
|
||||
isc_result_t
|
||||
dns_view_createresolver(dns_view_t *view, isc_taskmgr_t *taskmgr,
|
||||
unsigned int ntasks, unsigned int ndisp, isc_nm_t *nm,
|
||||
unsigned int ndisp, isc_nm_t *nm,
|
||||
isc_timermgr_t *timermgr, unsigned int options,
|
||||
dns_dispatchmgr_t *dispatchmgr,
|
||||
dns_dispatch_t *dispatchv4, dns_dispatch_t *dispatchv6);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -81,7 +81,7 @@ static void
|
|||
mkres(dns_resolver_t **resolverp) {
|
||||
isc_result_t result;
|
||||
|
||||
result = dns_resolver_create(view, taskmgr, 1, 1, netmgr, timermgr, 0,
|
||||
result = dns_resolver_create(view, taskmgr, 1, netmgr, timermgr, 0,
|
||||
dispatchmgr, dispatch, NULL, resolverp);
|
||||
assert_int_equal(result, ISC_R_SUCCESS);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -617,7 +617,7 @@ dns_view_createzonetable(dns_view_t *view) {
|
|||
|
||||
isc_result_t
|
||||
dns_view_createresolver(dns_view_t *view, isc_taskmgr_t *taskmgr,
|
||||
unsigned int ntasks, unsigned int ndisp, isc_nm_t *nm,
|
||||
unsigned int ndisp, isc_nm_t *nm,
|
||||
isc_timermgr_t *timermgr, unsigned int options,
|
||||
dns_dispatchmgr_t *dispatchmgr,
|
||||
dns_dispatch_t *dispatchv4,
|
||||
|
|
@ -635,7 +635,7 @@ dns_view_createresolver(dns_view_t *view, isc_taskmgr_t *taskmgr,
|
|||
}
|
||||
isc_task_setname(view->task, "view", view);
|
||||
|
||||
result = dns_resolver_create(view, taskmgr, ntasks, ndisp, nm, timermgr,
|
||||
result = dns_resolver_create(view, taskmgr, ndisp, nm, timermgr,
|
||||
options, dispatchmgr, dispatchv4,
|
||||
dispatchv6, &view->resolver);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
|
|
|
|||
|
|
@ -102,6 +102,8 @@ isc_nm_detach(isc_nm_t **mgr0);
|
|||
* for all other references to be gone.
|
||||
*/
|
||||
|
||||
#define ISC_NETMGR_TID_UNKNOWN -1
|
||||
|
||||
/* Return thread ID of current thread, or ISC_NETMGR_TID_UNKNOWN */
|
||||
int
|
||||
isc_nm_tid(void);
|
||||
|
|
|
|||
|
|
@ -38,8 +38,6 @@
|
|||
#include <isc/util.h>
|
||||
#include <isc/uv.h>
|
||||
|
||||
#define ISC_NETMGR_TID_UNKNOWN -1
|
||||
|
||||
/* Must be different from ISC_NETMGR_TID_UNKNOWN */
|
||||
#define ISC_NETMGR_NON_INTERLOCKED -2
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue