OpenDNSSEC-signer
1.3.4
|
00001 /* 00002 * $Id: stats.c 4543 2011-03-09 14:04:19Z matthijs $ 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 "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 }