]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use statsmulti for rcodestats
authorAlessio Podda <alessio@isc.org>
Wed, 10 Sep 2025 02:36:37 +0000 (04:36 +0200)
committerAlessio Podda <alessio@isc.org>
Wed, 24 Sep 2025 15:01:49 +0000 (17:01 +0200)
lib/dns/include/dns/stats.h
lib/dns/stats.c
lib/ns/include/ns/server.h
lib/ns/server.c

index 8a1de2312af01d08e13b96b573b22eeca9084579..a9b78eeacf0a1e6b600d6ec31081ceb4d473253b 100644 (file)
@@ -306,9 +306,9 @@ dns_opcodestats_create(isc_mem_t *mctx, isc_statsmulti_t **statsp);
  */
 
 void
-dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp);
+dns_rcodestats_create(isc_mem_t *mctx, isc_statsmulti_t **statsp);
 /*%<
- * Create a statistics counter structure per assigned rcode.
+ * Create a statistics counter structure per assigned rcode using statsmulti.
  *
  * Requires:
  *\li  'mctx' must be a valid memory context.
@@ -400,12 +400,12 @@ dns_opcodestats_increment(isc_statsmulti_t *stats, dns_opcode_t code);
  */
 
 void
-dns_rcodestats_increment(dns_stats_t *stats, dns_rcode_t code);
+dns_rcodestats_increment(isc_statsmulti_t *stats, dns_rcode_t code);
 /*%<
  * Increment the statistics counter for 'code'.
  *
  * Requires:
- *\li  'stats' is a valid dns_stats_t created by dns_rcodestats_create().
+ *\li  'stats' is a valid isc_statsmulti_t created by dns_rcodestats_create().
  */
 
 void
@@ -502,7 +502,7 @@ dns_opcodestats_dump(isc_statsmulti_t *stats, dns_opcodestats_dumper_t dump_fn,
  */
 
 void
-dns_rcodestats_dump(dns_stats_t *stats, dns_rcodestats_dumper_t dump_fn,
+dns_rcodestats_dump(isc_statsmulti_t *stats, dns_rcodestats_dumper_t dump_fn,
                    void *arg, unsigned int options);
 /*%<
  * Dump the current statistics counters in a specified way.  For each counter
@@ -512,5 +512,5 @@ dns_rcodestats_dump(dns_stats_t *stats, dns_rcodestats_dumper_t dump_fn,
  * such counters are dumped.
  *
  * Requires:
- *\li  'stats' is a valid dns_stats_t created by dns_generalstats_create().
+ *\li  'stats' is a valid isc_statsmulti_t created by dns_rcodestats_create().
  */
index 9d53ccfa6fa99eda540dd33d3b99b340655ed233..55849e16b60745a5b9a2fb0f6f3e5f03c039548e 100644 (file)
@@ -221,11 +221,14 @@ dns_opcodestats_create(isc_mem_t *mctx, isc_statsmulti_t **statsp) {
 }
 
 void
-dns_rcodestats_create(isc_mem_t *mctx, dns_stats_t **statsp) {
+dns_rcodestats_create(isc_mem_t *mctx, isc_statsmulti_t **statsp) {
        REQUIRE(statsp != NULL && *statsp == NULL);
 
-       create_stats(mctx, dns_statstype_rcode, dns_rcode_badcookie + 1,
-                    statsp);
+       /*
+        * Create rcode statistics using statsmulti for better multithreading performance.
+        * We need dns_rcode_badcookie + 1 counters (0-23, so 24 counters), all are additive.
+        */
+       isc_statsmulti_create(mctx, statsp, dns_rcode_badcookie + 1, 0);
 }
 
 void
@@ -344,11 +347,11 @@ dns_opcodestats_increment(isc_statsmulti_t *stats, dns_opcode_t code) {
 }
 
 void
-dns_rcodestats_increment(dns_stats_t *stats, dns_rcode_t code) {
-       REQUIRE(DNS_STATS_VALID(stats) && stats->type == dns_statstype_rcode);
+dns_rcodestats_increment(isc_statsmulti_t *stats, dns_rcode_t code) {
+       REQUIRE(stats != NULL);
 
        if (code <= dns_rcode_badcookie) {
-               isc_stats_increment(stats->counters, (isc_statscounter_t)code);
+               isc_statsmulti_increment(stats, (isc_statscounter_t)code);
        }
 }
 
@@ -601,13 +604,13 @@ dns_opcodestats_dump(isc_statsmulti_t *stats, dns_opcodestats_dumper_t dump_fn,
 }
 
 void
-dns_rcodestats_dump(dns_stats_t *stats, dns_rcodestats_dumper_t dump_fn,
+dns_rcodestats_dump(isc_statsmulti_t *stats, dns_rcodestats_dumper_t dump_fn,
                    void *arg0, unsigned int options) {
        rcodedumparg_t arg;
 
-       REQUIRE(DNS_STATS_VALID(stats) && stats->type == dns_statstype_rcode);
+       REQUIRE(stats != NULL);
 
        arg.fn = dump_fn;
        arg.arg = arg0;
-       isc_stats_dump(stats->counters, rcode_dumpcb, &arg, options);
+       isc_statsmulti_dump(stats, rcode_dumpcb, &arg, options);
 }
index 9c1404cc3018e85d01fd6ae554eaec392cc732d0..1b439069513119f8f3f67269f9ddcbcec35635d4 100644 (file)
@@ -124,7 +124,7 @@ struct ns_server {
        isc_statsmulti_t *nsstats;
        isc_statsmulti_t *rcvquerystats;
        isc_statsmulti_t *opcodestats;
-       dns_stats_t      *rcodestats;
+       isc_statsmulti_t *rcodestats;
 
        isc_histomulti_t *udpinstats4;
        isc_histomulti_t *udpoutstats4;
index ec6855aec76b0c57337a7da380ee5b6e6bf19b61..37ab06889066b999b4a9770c05a2968b8f0dfb2e 100644 (file)
@@ -172,7 +172,7 @@ ns_server_detach(ns_server_t **sctxp) {
                        isc_statsmulti_detach(&sctx->opcodestats);
                }
                if (sctx->rcodestats != NULL) {
-                       dns_stats_detach(&sctx->rcodestats);
+                       isc_statsmulti_detach(&sctx->rcodestats);
                }
 
                if (sctx->udpinstats4 != NULL) {