From: Marek VavruĊĦa Date: Mon, 13 Jul 2015 16:29:31 +0000 (+0200) Subject: modules/stats: expose frequent queries LRU turnover X-Git-Tag: v1.0.0-beta1~77^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f597527d7ca6c1d4ceb22e01d83a385342316c9;p=thirdparty%2Fknot-resolver.git modules/stats: expose frequent queries LRU turnover --- diff --git a/modules/stats/stats.c b/modules/stats/stats.c index 078ff7b12..a35cfd5e0 100644 --- a/modules/stats/stats.c +++ b/modules/stats/stats.c @@ -217,7 +217,7 @@ static char* stats_get(void *env, struct kr_module *module, const char *args) struct stat_data *data = module->data; /* Expecting CHAR_BIT to be 8, this is a safe bet */ - char *ret = malloc(3 * sizeof(ret) + 2); + char *ret = malloc(3 * sizeof(size_t) + 2); if (!ret) { return NULL; } @@ -305,6 +305,19 @@ static char* freq_list(void *env, struct kr_module *module, const char *args) return ret; } +static char* freq_turnover(void *env, struct kr_module *module, const char *args) +{ + struct stat_data *data = module->data; + namehash_t *freq_table = data->frequent.names; + if (!freq_table) { + return NULL; + } + JsonNode *root = json_mknumber(freq_table->evictions); + char *ret = json_encode(root); + json_delete(root); + return ret; +} + static char* freq_clear(void *env, struct kr_module *module, const char *args) { struct stat_data *data = module->data; @@ -367,6 +380,7 @@ struct kr_prop *stats_props(void) { &stats_list, "list", "List observed metrics.", }, { &freq_list, "queries", "List most frequent queries.", }, { &freq_clear, "queries_clear", "Clear most frequent queries.", }, + { &freq_turnover, "queries_turnover", "Turnover of the frequent queries.", }, { NULL, NULL, NULL } }; return prop_list;