From 80a609bf44ee09766aeb9ae02cfbf7f9fe86dd83 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 28 Sep 2005 04:36:06 +0000 Subject: [PATCH] 1919. [bug] The cache memory context array was too small to have the desired performance characteristics. [RT #15454] stop.pl Increase amount of time allowed for named to stop before aborting the server. --- CHANGES | 4 ++++ bin/tests/system/stop.pl | 6 +++--- lib/dns/rbtdb.c | 16 ++++++++++------ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index 619e073168..101c576b04 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +1919. [bug] The cache memory context array was too small to + have the desired performance characteristics. + [RT #15454] + 1919. [placeholder] rt15441 1918. [bug] Memory leak when checking acls. [RT #15391] diff --git a/bin/tests/system/stop.pl b/bin/tests/system/stop.pl index aedd5cc8ad..edbee0d4a2 100644 --- a/bin/tests/system/stop.pl +++ b/bin/tests/system/stop.pl @@ -15,7 +15,7 @@ # OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -# $Id: stop.pl,v 1.6 2004/03/05 04:59:13 marka Exp $ +# $Id: stop.pl,v 1.7 2005/09/28 04:36:05 marka Exp $ # Framework for stopping test servers # Based on the type of server specified, signal the server to stop, wait @@ -80,7 +80,7 @@ if ($use_rndc) { stop_rndc($server); } - wait_for_servers(5, grep /^ns/, @servers); + wait_for_servers(30, grep /^ns/, @servers); } @@ -88,8 +88,8 @@ if ($use_rndc) { foreach my $server (@servers) { stop_signal($server, "TERM"); } -wait_for_servers(5, @servers); +wait_for_servers(60, @servers); # Pass 3: SIGABRT foreach my $server (@servers) { diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 6d89a19f6a..622fca448b 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rbtdb.c,v 1.217 2005/09/20 04:22:45 marka Exp $ */ +/* $Id: rbtdb.c,v 1.218 2005/09/28 04:36:06 marka Exp $ */ /*! \file */ @@ -280,7 +280,8 @@ struct acachectl { #define NXDOMAIN(header) \ (((header)->attributes & RDATASET_ATTR_NXDOMAIN) != 0) -#define DEFAULT_NODE_LOCK_COUNT 7 /*%< Should be prime. */ +#define DEFAULT_NODE_LOCK_COUNT 7 /*%< Should be prime. */ +#define DEFAULT_CACHE_NODE_LOCK_COUNT 1009 /*%< Should be prime. */ typedef struct { nodelock_t lock; @@ -594,7 +595,7 @@ adjust_quantum(unsigned int old, isc_time_t *start) { new = (new + old * 3) / 4; isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_CACHE, - ISC_LOG_INFO, "adjust_quantum -> %d\n", new); + ISC_LOG_INFO, "adjust_quantum -> %d", new); return (new); } @@ -5535,10 +5536,13 @@ dns_rbtdb_create if (result != ISC_R_SUCCESS) goto cleanup_lock; + if (rbtdb->node_lock_count == 0) { + if (IS_CACHE(rbtdb)) + rbtdb->node_lock_count = DEFAULT_CACHE_NODE_LOCK_COUNT; + else + rbtdb->node_lock_count = DEFAULT_NODE_LOCK_COUNT; + } INSIST(rbtdb->node_lock_count < (1 << DNS_RBT_LOCKLENGTH)); - - if (rbtdb->node_lock_count == 0) - rbtdb->node_lock_count = DEFAULT_NODE_LOCK_COUNT; rbtdb->node_locks = isc_mem_get(mctx, rbtdb->node_lock_count * sizeof(rbtdb_nodelock_t)); if (rbtdb->node_locks == NULL) {