From: Lukáš Ondráček Date: Tue, 26 Mar 2024 15:25:52 +0000 (+0100) Subject: rrl: check and log chosen impl. (generic vs AVX2) X-Git-Tag: v6.0.9~1^2~71 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=refs%2Fenvironments%2Fdocs-develop-rrl-8r8r8r%2Fdeployments%2F3594;p=thirdparty%2Fknot-resolver.git rrl: check and log chosen impl. (generic vs AVX2) --- diff --git a/daemon/rrl/api.c b/daemon/rrl/api.c index 1e007b855..19c2f1779 100644 --- a/daemon/rrl/api.c +++ b/daemon/rrl/api.c @@ -20,6 +20,7 @@ struct rrl { size_t capacity; uint32_t instant_limit; uint32_t rate_limit; + bool using_avx2; kru_price_t v4_prices[RRL_V4_PREFIXES_CNT]; kru_price_t v6_prices[RRL_V6_PREFIXES_CNT]; uint8_t kru[] ALIGNED(64); @@ -51,6 +52,8 @@ void kr_rrl_init(char *mmap_path, size_t capacity, uint32_t instant_limit, uint3 the_rrl->capacity = capacity; the_rrl->instant_limit = instant_limit; the_rrl->rate_limit = rate_limit; + the_rrl->using_avx2 = (KRU.initialize != KRU_GENERIC.initialize); + kr_require(!the_rrl->using_avx2 || (KRU.initialize == KRU_AVX2.initialize)); const kru_price_t base_price = KRU_LIMIT / instant_limit; const kru_price_t max_decay = rate_limit > 1000ll * instant_limit ? base_price : @@ -70,7 +73,7 @@ void kr_rrl_init(char *mmap_path, size_t capacity, uint32_t instant_limit, uint3 fl.l_type = F_RDLCK; succ = (fcntl(fd, F_SETLK, &fl) != -1); kr_require(succ); - kr_log_info(SYSTEM, "RRL initialized.\n"); + kr_log_info(SYSTEM, "RRL initialized (%s).\n", (the_rrl->using_avx2 ? "AVX2" : "generic")); return; }; @@ -87,6 +90,7 @@ void kr_rrl_init(char *mmap_path, size_t capacity, uint32_t instant_limit, uint3 kr_require(the_rrl != MAP_FAILED); kr_require((the_rrl->capacity == capacity) && (the_rrl->instant_limit == instant_limit) && (the_rrl->rate_limit == rate_limit)); + kr_require(KRU.initialize == (the_rrl->using_avx2 ? KRU_AVX2.initialize : KRU_GENERIC.initialize)); kr_log_info(SYSTEM, "Using existing RRL data.\n"); return; diff --git a/daemon/rrl/kru.h b/daemon/rrl/kru.h index 95731aedb..de678d876 100644 --- a/daemon/rrl/kru.h +++ b/daemon/rrl/kru.h @@ -82,4 +82,4 @@ struct kru_api { // The functions are stored this way to make it easier to switch // implementation based on detected CPU. extern struct kru_api KRU; -extern const struct kru_api KRU_GENERIC, KRU_AVX2; // for tests only +extern const struct kru_api KRU_GENERIC, KRU_AVX2;