⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perf-base.c

📁 著名的入侵检测系统snort的最新版本的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
 * fraginserts/sec * fragdeletes/sec * fragflushes/sec * current-frags open (frag cache) * max-frags (frag cache) * fragtimeouts * fragfaults * num cpus (following triple is repeated for each CPU) * %user-cpu usage * %sys-cpu usage * %idle-cpu usage * mbits/sec (wire) * mbits/sec (ip fragmented) * mbits/sec (ip reassembled) * mbits/sec (tcp stream rebuilt) * mbits/sec (app layer) * Avg Bytes/Pkt  (wire) * Avg Bytes/Pkt  (ip fragmented) * Avg Bytes/Pkt  (ip reassembled) * Avg Bytes/Pkt  (tcp stream rebuilt) * Avg Bytes/Pkt  (app layer) * K-Packets/Sec (wire) * K-Packets/Sec (ip fragmented) * K-Packets/Sec (ip reassembled) * K-Packets/Sec (tcp stream rebuilt) * K-Packets/Sec (app layer) * Pkts recieved * Pkts dropped * Blocked-KPackets  (wire) * udp-sessions * max-udp-sessions * del-udp-sessions/sec (udp stream cache) * new-udp-sessions/sec (udp stream cache) * max-sessions, interval (tcp stream cache) * curr-tcp-sessions-initializing (tcp stream cache, of total-sessions open) * curr-tcp-sessions-established (tcp stream cache, of total-sessions open) * curr-tcp-sessions-closing (tcp stream cache, of total-sessions open) * tcp-sessions-mistream/sec (tcp stream cache, of new-sessions/sec) * tcp-sessions-closed/sec (tcp stream cache, of del-sessions/sec) * tcp-sessions-timedout/sec (tcp stream cache, of del-sessions/sec) * tcp-sessions-pruned/sec (tcp stream cache, of del-sessions/sec) * tcp-sessions-dropped_async/sec (tcp stream cache, of del-sessions/sec) * hosts in attribute table * attribute table reloads * */int LogBasePerfStats(SFBASE_STATS *sfBaseStats,  FILE * fh ){    double sys=0.0,usr=0.0,idle=0.0;#ifdef LINUX_SMP    int iCtr;#endif     if( ! fh ) return 0;     fprintf(fh,"%lu,%.3f,%.3f,%.3f,%.3f,%d,%.3f,",                (unsigned long)sfBaseStats->time,                sfBaseStats->pkt_drop_percent,                sfBaseStats->wire_mbits_per_sec.realtime,                sfBaseStats->alerts_per_second,                sfBaseStats->kpackets_per_sec.realtime,                sfBaseStats->avg_bytes_per_packet,                sfBaseStats->patmatch_percent);           /* Session estimation statistics */    fprintf(fh, "%.3f,%.3f,%.3f,%.3f," CSVu64 CSVu64,            sfBaseStats->syns_per_second,            sfBaseStats->synacks_per_second,            sfBaseStats->new_sessions_per_second,            sfBaseStats->deleted_sessions_per_second,            sfBaseStats->total_sessions,            sfBaseStats->max_sessions);    fprintf(fh, "%.3f," CSVu64 CSVu64,            sfBaseStats->stream_flushes_per_second,            sfBaseStats->stream_faults,            sfBaseStats->stream_timeouts);    fprintf(fh, "%.3f,%.3f,%.3f,%.3f,%.3f,%.3f," CSVu64 CSVu64 CSVu64 CSVu64,            sfBaseStats->frag_creates_per_second,            sfBaseStats->frag_completes_per_second,            sfBaseStats->frag_inserts_per_second,            sfBaseStats->frag_deletes_per_second,            sfBaseStats->frag_autofrees_per_second,            sfBaseStats->frag_flushes_per_second,            sfBaseStats->current_frags,            sfBaseStats->max_frags,            sfBaseStats->frag_timeouts,            sfBaseStats->frag_faults);       /* CPU STATS - at the end of output record */ #ifdef LINUX_SMP    /* First the number of CPUs */    fprintf(fh, "%d,", sfBaseStats->sfProcPidStats->iCPUs);     /* Next, stats for each CPU (a triple) */    for(iCtr = 0; iCtr < sfBaseStats->sfProcPidStats->iCPUs; iCtr++)    {        usr= sfBaseStats->sfProcPidStats->SysCPUs[iCtr].user;        sys= sfBaseStats->sfProcPidStats->SysCPUs[iCtr].sys;        idle= sfBaseStats->sfProcPidStats->SysCPUs[iCtr].idle;            fprintf(fh,"%.3f,%.3f,%.3f,",usr,sys,idle);    }#else    usr=sfBaseStats->user_cpu_time;    sys=sfBaseStats->system_cpu_time;    idle=sfBaseStats->idle_cpu_time;      /* 1 CPU hardcoded */     fprintf(fh,"1,%.3f,%.3f,%.3f,",usr,sys,idle);#endif    /* Status for MBits/s, Bytes/Pkt, KPkts/s for each of     * wire, IP Fragmented, IP Reassembled, Stream Reassembled,     * App Layer (data that reaches protocol decoders). */    fprintf(fh,"%.3f,%.3f,%.3f,%.3f,%.3f,",            sfBaseStats->wire_mbits_per_sec.realtime,            sfBaseStats->ipfrag_mbits_per_sec.realtime,            sfBaseStats->ipreass_mbits_per_sec.realtime,            sfBaseStats->rebuilt_mbits_per_sec.realtime,            sfBaseStats->mbits_per_sec.realtime);                fprintf(fh,"%d,%d,%d,%d,%d,",        sfBaseStats->avg_bytes_per_wire_packet,        sfBaseStats->avg_bytes_per_ipfrag_packet,        sfBaseStats->avg_bytes_per_ipreass_packet,        sfBaseStats->avg_bytes_per_rebuilt_packet,        sfBaseStats->avg_bytes_per_packet);            fprintf(fh,"%.3f,%.3f,%.3f,%.3f,%.3f,",        sfBaseStats->kpackets_wire_per_sec.realtime,        sfBaseStats->kpackets_ipfrag_per_sec.realtime,        sfBaseStats->kpackets_ipreass_per_sec.realtime,        sfBaseStats->kpackets_rebuilt_per_sec.realtime,        sfBaseStats->kpackets_per_sec.realtime);        fprintf(fh, CSVu64,sfBaseStats->pkt_stats.pkts_recv);    fprintf(fh, CSVu64, sfBaseStats->pkt_stats.pkts_drop);        fprintf(fh, CSVu64, sfBaseStats->total_blocked_packets);    fprintf(fh, "%.3f,%.3f," CSVu64 CSVu64,            sfBaseStats->new_udp_sessions_per_second,            sfBaseStats->deleted_udp_sessions_per_second,            sfBaseStats->total_udp_sessions,            sfBaseStats->max_udp_sessions);    fprintf(fh, CSVu64 CSVu64 CSVu64 CSVu64 "%.3f,%.3f,%.3f,%.3f,%.3f,",            sfBaseStats->max_tcp_sessions_interval,            sfBaseStats->curr_tcp_sessions_initializing,            sfBaseStats->curr_tcp_sessions_established,            sfBaseStats->curr_tcp_sessions_closing,            sfBaseStats->tcp_sessions_midstream_per_second,            sfBaseStats->tcp_sessions_closed_per_second,            sfBaseStats->tcp_sessions_timedout_per_second,            sfBaseStats->tcp_sessions_pruned_per_second,            sfBaseStats->tcp_sessions_dropped_async_per_second);    fprintf(fh, CSVu64 CSVu64,            sfBaseStats->current_attribute_hosts,            sfBaseStats->attribute_table_reloads);    fprintf(fh,"\n");     fflush(fh);#ifdef LINUX      //LogScheduler();#endif       return 0;}/***  NAME **    DisplayBasePerfStats** **  DESCRIPTION**    Output Function.  We can easily code multiple output buffers**    because all that is received is a SFBASE_STATS struct which**    holds all the information to output.  This current output**    function just prints to stdout.****  FORMAL INPUTS**    SFBASE_STATS * - struct with perf information**    int            - flags for output****  FORMAL OUTPUTS**    int - 0 is successful*/int DisplayBasePerfStatsConsole(SFBASE_STATS *sfBaseStats, int iFlags){#ifdef LINUX_SMP    int iCtr;#endif    LogMessage("\n\nSnort Realtime Performance  : %s--------------------------\n",                ctime(&sfBaseStats->time));    LogMessage("Pkts Recv:   " STDu64 "\n", sfBaseStats->pkt_stats.pkts_recv);    LogMessage("Pkts Drop:   " STDu64 "\n", sfBaseStats->pkt_stats.pkts_drop);    LogMessage("%% Dropped:   %.3f%%\n", sfBaseStats->pkt_drop_percent);    LogMessage("Blocked:     " STDu64 "\n\n", sfBaseStats->total_blocked_packets);    LogMessage("Mbits/Sec:   %.3f (wire)\n",             sfBaseStats->wire_mbits_per_sec.realtime);    LogMessage("Mbits/Sec:   %.3f (ip fragmented)\n",                sfBaseStats->ipfrag_mbits_per_sec.realtime);    LogMessage("Mbits/Sec:   %.3f (ip reassembled)\n",                sfBaseStats->ipreass_mbits_per_sec.realtime);    LogMessage("Mbits/Sec:   %.3f (tcp rebuilt)\n",             sfBaseStats->rebuilt_mbits_per_sec.realtime);    LogMessage("Mbits/Sec:   %.3f (app layer)\n\n",                sfBaseStats->mbits_per_sec.realtime);    LogMessage("Bytes/Pkt:   %d (wire)\n",        sfBaseStats->avg_bytes_per_wire_packet);    LogMessage("Bytes/Pkt:   %d (ip fragmented)\n",        sfBaseStats->avg_bytes_per_ipfrag_packet);    LogMessage("Bytes/Pkt:   %d (ip reassembled)\n",        sfBaseStats->avg_bytes_per_ipreass_packet);    LogMessage("Bytes/Pkt:   %d (tcp rebuilt)\n",        sfBaseStats->avg_bytes_per_rebuilt_packet);    LogMessage("Bytes/Pkt:   %d (app layer)\n\n",        sfBaseStats->avg_bytes_per_packet);    LogMessage("KPkts/Sec:   %.3f (wire)\n",        sfBaseStats->kpackets_wire_per_sec.realtime);    LogMessage("KPkts/Sec:   %.3f (ip fragmented)\n",        sfBaseStats->kpackets_ipfrag_per_sec.realtime);    LogMessage("KPkts/Sec:   %.3f (ip reassembled)\n",        sfBaseStats->kpackets_ipreass_per_sec.realtime);    LogMessage("KPkts/Sec:   %.3f (tcp rebuilt)\n",        sfBaseStats->kpackets_rebuilt_per_sec.realtime);    LogMessage("KPkts/Sec:   %.3f (app layer)\n\n",        sfBaseStats->kpackets_per_sec.realtime);    LogMessage("PatMatch:    %.3f%%\n\n",  sfBaseStats->patmatch_percent);    /*    **  The following ifdefs are for CPU stats dealing with multiple    **  CPUs in Linux.  Snort will show user, system and idle time for    **  each CPU.  The methods of calculating this are different though,    **  since getrusage is broken for multiple CPUs in Linux.  We get the    **  CPU stats instead from the proc filesystem on Linux.    */#ifdef LINUX_SMP    for(iCtr = 0; iCtr < sfBaseStats->sfProcPidStats->iCPUs; iCtr++)    {    LogMessage("CPU%d Usage:  %.3f%% (user)  %.3f%% (sys)  %.3f%% (idle)\n",                 iCtr,                sfBaseStats->sfProcPidStats->SysCPUs[iCtr].user,                sfBaseStats->sfProcPidStats->SysCPUs[iCtr].sys,                sfBaseStats->sfProcPidStats->SysCPUs[iCtr].idle);    }    printf("\n");#else    LogMessage("CPU Usage:   %.3f%% (user)  %.3f%% (sys)  %.3f%% (idle)\n\n",                 sfBaseStats->user_cpu_time,                sfBaseStats->system_cpu_time,                sfBaseStats->idle_cpu_time);#endif    /*    **  Shows the number of snort alerts per second.    */    LogMessage("Alerts/Sec             :  %.3f\n",   sfBaseStats->alerts_per_second);    /* Session estimation statistics */    LogMessage("Syns/Sec               :  %.3f\n", sfBaseStats->syns_per_second);    LogMessage("Syn-Acks/Sec           :  %.3f\n", sfBaseStats->synacks_per_second);    LogMessage("New Cached Sessions/Sec:  %.3f\n", sfBaseStats->new_sessions_per_second);    LogMessage("Midstream Sessions/Sec :  %.3f\n", sfBaseStats->tcp_sessions_midstream_per_second);    LogMessage("Cached Sessions Del/Sec:  %.3f\n", sfBaseStats->deleted_sessions_per_second);        LogMessage("Closed Sessions/Sec    :  %.3f\n", sfBaseStats->tcp_sessions_closed_per_second);    LogMessage("TimedOut Sessions/Sec  :  %.3f\n", sfBaseStats->tcp_sessions_timedout_per_second);    LogMessage("Pruned Sessions/Sec    :  %.3f\n", sfBaseStats->tcp_sessions_pruned_per_second);    LogMessage("Dropped Async Ssns/Sec :  %.3f\n", sfBaseStats->tcp_sessions_dropped_async_per_second);    LogMessage("Current Cached Sessions:  " STDu64 "\n", sfBaseStats->total_sessions);    LogMessage("Sessions Initializing  :  " STDu64 "\n", sfBaseStats->curr_tcp_sessions_initializing);    LogMessage("Sessions Established   :  " STDu64 "\n", sfBaseStats->curr_tcp_sessions_established);    LogMessage("Sessions Closing       :  " STDu64 "\n", sfBaseStats->curr_tcp_sessions_closing);    LogMessage("Max Cached Sessions    :  " STDu64 "\n", sfBaseStats->max_sessions);    LogMessage("Max Sessions (interval):  " STDu64 "\n", sfBaseStats->max_tcp_sessions_interval);    /* more instrumentation for stream4/frag2 */    LogMessage("Stream Flushes/Sec     :  %.3f\n", sfBaseStats->stream_flushes_per_second);    LogMessage("Stream Cache Faults/Sec:  " STDu64 "\n", sfBaseStats->stream_faults);    LogMessage("Stream Cache Timeouts  :  " STDu64 "\n", sfBaseStats->stream_timeouts);    LogMessage("Frag Creates()s/Sec    :  %.3f\n", sfBaseStats->frag_creates_per_second);    LogMessage("Frag Completes()s/Sec  :  %.3f\n", sfBaseStats->frag_completes_per_second);    LogMessage("Frag Inserts()s/Sec    :  %.3f\n", sfBaseStats->frag_inserts_per_second);    LogMessage("Frag Deletes/Sec       :  %.3f\n", sfBaseStats->frag_deletes_per_second);    LogMessage("Frag AutoFrees/Sec     :  %.3f\n", sfBaseStats->frag_autofrees_per_second);    LogMessage("Frag Flushes/Sec       :  %.3f\n", sfBaseStats->frag_flushes_per_second);    LogMessage("Current Cached Frags   :  " STDu64 "\n", sfBaseStats->current_frags);    LogMessage("Max Cached Frags       :  " STDu64 "\n", sfBaseStats->max_frags);    LogMessage("Frag Timeouts          :  " STDu64 "\n", sfBaseStats->frag_timeouts);    LogMessage("Frag Faults            :  " STDu64 "\n\n", sfBaseStats->frag_faults);    LogMessage("New Cached UDP Ssns/Sec:  %.3f\n", sfBaseStats->new_udp_sessions_per_second);    LogMessage("Cached UDP Ssns Del/Sec:  %.3f\n", sfBaseStats->deleted_udp_sessions_per_second);        LogMessage("Current Cached UDP Ssns:  " STDu64 "\n", sfBaseStats->total_udp_sessions);    LogMessage("Max Cached UDP Ssns    :  " STDu64 "\n\n", sfBaseStats->max_udp_sessions);#ifdef TARGET_BASED    LogMessage("Attribute Table Hosts  :  " STDu64 "\n", sfBaseStats->current_attribute_hosts);    LogMessage("Attribute Table Reloads:  " STDu64 "\n\n", sfBaseStats->attribute_table_reloads);#endif    /*    **  Snort Maximum Performance Statistics    **  These statistics calculate the maximum performance that     **  snort could attain by using the getrusage numbers.  We've    **  seen in testing that these numbers come close to the actual    **  throughput for Mbits/Sec and Pkt/Sec.  But note that these    **  are not hard numbers and rigorous testing is necessary to    **  establish snort performance on any hardware setting.    */    if(iFlags & MAX_PERF_STATS)    {            LogMessage("Snort Maximum Performance\n");        LogMessage("-------------------------\n\n");            LogMessage("Mbits/Second\n");        LogMessage("----------------\n");        LogMessage("Snort:       %.3f\n",sfBaseStats->mbits_per_sec.usertime);        LogMessage("Sniffing:    %.3f\n",sfBaseStats->mbits_per_sec.systemtime);        LogMessage("Combined:    %.3f\n\n",sfBaseStats->mbits_per_sec.totaltime);            LogMessage("uSeconds/Pkt\n");        LogMessage("----------------\n");        LogMessage("Snort:       %.3f\n",sfBaseStats->usecs_per_packet.usertime);        LogMessage("Sniffing:    %.3f\n",sfBaseStats->usecs_per_packet.systemtime);        LogMessage("Combined:    %.3f\n\n",sfBaseStats->usecs_per_packet.totaltime);        LogMessage("KPkts/Second\n");        LogMessage("------------------\n");        LogMessage("Snort:       %.3f\n",sfBaseStats->kpackets_per_sec.usertime);        LogMessage("Sniffing:    %.3f\n",sfBaseStats->kpackets_per_sec.systemtime);        LogMessage("Combined:    %.3f\n\n",sfBaseStats->kpackets_per_sec.totaltime);    }    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -