Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00034 #include "shared/log.h"
00035 #include "signer/stats.h"
00036
00041 stats_type*
00042 stats_create(void)
00043 {
00044 stats_type* stats = (stats_type*) malloc(sizeof(stats_type));
00045 stats_clear(stats);
00046 lock_basic_init(&stats->stats_lock);
00047 return stats;
00048 }
00049
00050
00055 void
00056 stats_clear(stats_type* stats)
00057 {
00058 ods_log_assert(stats);
00059 stats->sort_count = 0;
00060 stats->sort_time = 0;
00061 stats->sort_done = 0;
00062 stats->nsec_count = 0;
00063 stats->nsec_time = 0;
00064 stats->sig_count = 0;
00065 stats->sig_soa_count = 0;
00066 stats->sig_reuse = 0;
00067 stats->sig_time = 0;
00068 stats->audit_time = 0;
00069 stats->start_time = 0;
00070 stats->end_time = 0;
00071 }
00072
00073
00078 void
00079 stats_log(stats_type* stats, const char* name, ldns_rr_type nsec_type)
00080 {
00081 uint32_t avsign = 0;
00082
00083 if (!stats) {
00084 return;
00085 }
00086 ods_log_assert(stats);
00087 if (stats->sig_time) {
00088 avsign = (uint32_t) (stats->sig_count/stats->sig_time);
00089 }
00090 ods_log_info("[STATS] %s RR[count=%u time=%u(sec)] "
00091 "NSEC%s[count=%u time=%u(sec)] "
00092 "RRSIG[new=%u reused=%u time=%u(sec) avg=%u(sig/sec)] "
00093 "AUDIT[time=%u(sec)] TOTAL[time=%u(sec)] ",
00094 name?name:"(null)", stats->sort_count, stats->sort_time,
00095 nsec_type==LDNS_RR_TYPE_NSEC3?"3":"", stats->nsec_count,
00096 stats->nsec_time, stats->sig_count, stats->sig_reuse,
00097 stats->sig_time, avsign, stats->audit_time,
00098 (uint32_t) (stats->end_time - stats->start_time));
00099 return;
00100 }
00101
00102
00107 void
00108 stats_cleanup(stats_type* stats)
00109 {
00110 lock_basic_destroy(&stats->stats_lock);
00111 free((void*) stats);
00112 return;
00113 }