#include "util/timehist.h"
Data Structures | |
struct | server_stats |
per worker statistics More... | |
struct | stats_info |
Statistics to send over the control pipe when asked This struct is made to be memcpied, sent in binary. More... | |
Defines | |
#define | STATS_QTYPE_NUM 256 |
number of qtype that is stored for in array | |
#define | STATS_QCLASS_NUM 256 |
number of qclass that is stored for in array | |
#define | STATS_RCODE_NUM 16 |
number of rcodes in stats | |
#define | STATS_OPCODE_NUM 16 |
number of opcodes in stats | |
Functions | |
void | server_stats_init (struct server_stats *stats, struct config_file *cfg) |
Initialize server stats to 0. | |
void | server_stats_querymiss (struct server_stats *stats, struct worker *worker) |
add query if it missed the cache | |
void | server_stats_log (struct server_stats *stats, struct worker *worker, int threadnum) |
display the stats to the log | |
void | server_stats_obtain (struct worker *worker, struct worker *who, struct stats_info *s, int reset) |
Obtain the stats info for a given thread. | |
void | server_stats_compile (struct worker *worker, struct stats_info *s, int reset) |
Compile stats into structure for this thread worker. | |
void | server_stats_reply (struct worker *worker, int reset) |
Send stats over comm tube in reply to query cmd. | |
void | server_stats_add (struct stats_info *total, struct stats_info *a) |
Addup stat blocks. | |
void | server_stats_insquery (struct server_stats *stats, struct comm_point *c, uint16_t qtype, uint16_t qclass, struct edns_data *edns, struct comm_reply *repinfo) |
Add stats for this query. | |
void | server_stats_insrcode (struct server_stats *stats, ldns_buffer *buf) |
Add rcode for this query. |
These 'statistics' may be of interest to the operator.
void server_stats_init | ( | struct server_stats * | stats, | |
struct config_file * | cfg | |||
) |
Initialize server stats to 0.
stats,: | what to init (this is alloced by the caller). | |
cfg,: | with extended statistics option. |
References server_stats::extended, and config_file::stat_extended.
Referenced by worker_init(), and worker_stats_clear().
void server_stats_obtain | ( | struct worker * | worker, | |
struct worker * | who, | |||
struct stats_info * | s, | |||
int | reset | |||
) |
Obtain the stats info for a given thread.
Uses pipe to communicate.
worker,: | the worker that is executing (the first worker). | |
who,: | on who to get the statistics info. | |
s,: | the stats block to fill in. | |
reset,: | if stats can be reset. |
References worker::cmd, fatal_exit(), server_stats_compile(), tube_read_msg(), VERB_ALGO, verbose(), worker_cmd_stats, worker_cmd_stats_noreset, and worker_send_cmd().
Referenced by do_stats().
void server_stats_compile | ( | struct worker * | worker, | |
struct stats_info * | s, | |||
int | reset | |||
) |
Compile stats into structure for this thread worker.
Also clears the statistics counters (if that is set by config file).
worker,: | the worker to compile stats for, also the executing worker. | |
s,: | stats block. | |
reset,: | if true, depending on config stats are reset. if false, statistics are not reset. |
References mesh_area::all, mesh_area::ans_bogus, server_stats::ans_bogus, mesh_area::ans_nodata, mesh_area::ans_rcode, server_stats::ans_rcode, server_stats::ans_rcode_nodata, mesh_area::ans_secure, server_stats::ans_secure, worker::back, module_env::cfg, rbtree_t::count, worker::env, get_rrset_bogus(), server_stats::hist, mesh_area::histogram, module_env::mesh, stats_info::mesh_dropped, stats_info::mesh_jostled, stats_info::mesh_num_reply_states, stats_info::mesh_num_states, stats_info::mesh_replies_sent, stats_info::mesh_replies_sum_wait, stats_info::mesh_time_median, NUM_BUCKETS_HIST, mesh_area::num_reply_states, mesh_area::replies_sent, mesh_area::replies_sum_wait, server_stats::rrset_bogus, config_file::stat_cumulative, worker::stats, mesh_area::stats_dropped, mesh_area::stats_jostled, stats_info::svr, timehist_export(), timehist_quartile(), outside_network::unwanted_replies, server_stats::unwanted_replies, and worker_stats_clear().
Referenced by server_stats_obtain(), and server_stats_reply().
void server_stats_reply | ( | struct worker * | worker, | |
int | reset | |||
) |
Send stats over comm tube in reply to query cmd.
worker,: | this worker. | |
reset,: | if true, depending on config stats are reset. if false, statistics are not reset. |
References worker::cmd, worker::daemon, fatal_exit(), server_stats_compile(), tube_write_msg(), VERB_ALGO, verbose(), and daemon::workers.
Referenced by worker_handle_control_cmd().
void server_stats_add | ( | struct stats_info * | total, | |
struct stats_info * | a | |||
) |
Addup stat blocks.
total,: | sum of the two entries. | |
a,: | to add to it. |
References server_stats::ans_bogus, server_stats::ans_rcode, server_stats::ans_rcode_nodata, server_stats::ans_secure, server_stats::extended, server_stats::hist, server_stats::max_query_list_size, stats_info::mesh_dropped, stats_info::mesh_jostled, stats_info::mesh_num_reply_states, stats_info::mesh_num_states, stats_info::mesh_replies_sent, stats_info::mesh_replies_sum_wait, stats_info::mesh_time_median, NUM_BUCKETS_HIST, server_stats::num_queries, server_stats::num_queries_missed_cache, server_stats::qbit_AA, server_stats::qbit_AD, server_stats::qbit_CD, server_stats::qbit_QR, server_stats::qbit_RA, server_stats::qbit_RD, server_stats::qbit_TC, server_stats::qbit_Z, server_stats::qclass, server_stats::qclass_big, server_stats::qEDNS, server_stats::qEDNS_DO, server_stats::qipv6, server_stats::qopcode, server_stats::qtcp, server_stats::qtype, server_stats::qtype_big, server_stats::rrset_bogus, STATS_OPCODE_NUM, STATS_QCLASS_NUM, STATS_QTYPE_NUM, STATS_RCODE_NUM, server_stats::sum_query_list_size, stats_info::svr, timeval_add(), server_stats::unwanted_queries, and server_stats::unwanted_replies.
Referenced by do_stats().
void server_stats_insquery | ( | struct server_stats * | stats, | |
struct comm_point * | c, | |||
uint16_t | qtype, | |||
uint16_t | qclass, | |||
struct edns_data * | edns, | |||
struct comm_reply * | repinfo | |||
) |
Add stats for this query.
stats,: | the stats | |
c,: | commpoint with type and buffer. | |
qtype,: | query type | |
qclass,: | query class | |
edns,: | edns record | |
repinfo,: | reply info with remote address |
References comm_reply::addr, addr_is_ip6(), comm_reply::addrlen, BIT_AA, BIT_AD, BIT_CD, BIT_QR, BIT_RA, BIT_RD, BIT_TC, BIT_Z, edns_data::bits, comm_point::buffer, EDNS_DO, edns_data::edns_present, server_stats::qbit_AA, server_stats::qbit_AD, server_stats::qbit_CD, server_stats::qbit_QR, server_stats::qbit_RA, server_stats::qbit_RD, server_stats::qbit_TC, server_stats::qbit_Z, server_stats::qclass, server_stats::qclass_big, server_stats::qEDNS, server_stats::qEDNS_DO, server_stats::qipv6, server_stats::qopcode, server_stats::qtcp, server_stats::qtype, server_stats::qtype_big, STATS_QCLASS_NUM, STATS_QTYPE_NUM, and comm_point::type.
Referenced by worker_handle_request().
void server_stats_insrcode | ( | struct server_stats * | stats, | |
ldns_buffer * | buf | |||
) |
Add rcode for this query.
stats,: | the stats | |
buf,: | buffer with rcode. If buffer is length0: not counted. |
References server_stats::ans_rcode, server_stats::ans_rcode_nodata, and server_stats::extended.
Referenced by answer_from_cache(), answer_norec_from_cache(), and worker_handle_request().