OpenDNSSEC-signer 1.2.1
|
00001 /* 00002 * $Id: stats.c 4294 2011-01-13 19:58:29Z jakob $ 00003 * 00004 * Copyright (c) 2009 NLNet Labs. All rights reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions 00008 * are met: 00009 * 1. Redistributions of source code must retain the above copyright 00010 * notice, this list of conditions and the following disclaimer. 00011 * 2. Redistributions in binary form must reproduce the above copyright 00012 * notice, this list of conditions and the following disclaimer in the 00013 * documentation and/or other materials provided with the distribution. 00014 * 00015 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00016 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00017 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00018 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 00019 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00020 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 00021 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00022 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 00023 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 00024 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 00025 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00026 * 00027 */ 00028 00034 #include "signer/stats.h" 00035 #include "util/log.h" 00036 #include "util/se_malloc.h" 00037 00042 stats_type* 00043 stats_create(void) 00044 { 00045 stats_type* stats = (stats_type*) se_malloc(sizeof(stats_type)); 00046 stats_clear(stats); 00047 return stats; 00048 } 00049 00050 00055 void 00056 stats_clear(stats_type* stats) 00057 { 00058 se_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 se_log_assert(stats); 00084 se_log_assert(name); 00085 if (stats->sig_time) { 00086 avsign = (uint32_t) (stats->sig_count/stats->sig_time); 00087 } 00088 00089 se_log_info("[STATS] %s RR[count=%u time=%u(sec)] " 00090 "NSEC%s[count=%u time=%u(sec)] " 00091 "RRSIG[new=%u reused=%u time=%u(sec) avg=%u(sig/sec)] " 00092 "AUDIT[time=%u(sec)] TOTAL[time=%u(sec)] ", 00093 name?name:"(null)", stats->sort_count, stats->sort_time, 00094 nsec_type==LDNS_RR_TYPE_NSEC3?"3":"", stats->nsec_count, 00095 stats->nsec_time, stats->sig_count, stats->sig_reuse, 00096 stats->sig_time, avsign, stats->audit_time, 00097 (uint32_t) (stats->end_time - stats->start_time)); 00098 return; 00099 } 00100 00101 00106 void 00107 stats_cleanup(stats_type* stats) 00108 { 00109 if (stats) { 00110 se_free((void*) stats); 00111 } else { 00112 se_log_warning("cleanup empty statistics"); 00113 } 00114 return; 00115 }