📄 perf-base.c
字号:
*/int CloseStreamSession(SFBASE *sfBase, char flags){ if (flags & SESSION_CLOSED_NORMALLY) sfBase->iClosedSessions++; else if (flags & SESSION_CLOSED_TIMEDOUT) sfBase->iStreamTimeouts++; else if (flags & SESSION_CLOSED_PRUNED) sfBase->iPrunedSessions++; else if (flags & SESSION_CLOSED_ASYNC) sfBase->iDroppedAsyncSessions++; return 0;}/*** NAME** RemoveStreamSession**** DESCRIPTION** Add a session count**** FORMAL INPUTS** SFBASE * - ptr to update.**** FORMAL OUTPUTS** int - 0 is successful*/int RemoveStreamSession(SFBASE *sfBase){ sfBase->iTotalSessions--; sfBase->iDeletedSessions++; return 0;}/*** NAME** AddUDPSession**** DESCRIPTION** Add a session count**** FORMAL INPUTS** SFBASE * - ptr to update.**** FORMAL OUTPUTS** int - 0 is successful*/int AddUDPSession(SFBASE *sfBase){ sfBase->iTotalUDPSessions++; sfBase->iNewUDPSessions++; if(sfBase->iTotalUDPSessions > sfBase->iMaxUDPSessions) sfBase->iMaxUDPSessions = sfBase->iTotalUDPSessions; return 0;}/*** NAME** RemoveUDPSession**** DESCRIPTION** Add a session count**** FORMAL INPUTS** SFBASE * - ptr to update.**** FORMAL OUTPUTS** int - 0 is successful*/int RemoveUDPSession(SFBASE *sfBase){ sfBase->iTotalUDPSessions--; sfBase->iDeletedUDPSessions++; return 0;}/*** NAME** ProcessBaseStats**** DESCRIPTION** Main function to process Base Stats.**** FORMAL INPUTS** SFBASE * - ptr to update.**** FORMAL OUTPUTS** int - 0 is successful*/int ProcessBaseStats(SFBASE *sfBase, int console, int file, FILE * fh){ SFBASE_STATS sfBaseStats; if( console || file ) { if(CalculateBasePerfStats(sfBase, &sfBaseStats)) return -1; } if( console ) DisplayBasePerfStatsConsole(&sfBaseStats, sfBase->iFlags); if( file ) LogBasePerfStats(&sfBaseStats, fh ); return 0;}int GetProcessingTime(SYSTIMES *Systimes, SFBASE *sfBase){ int todRet = -1; struct timeval tvTime;#ifdef LINUX_SMP if(sfProcessProcPidStats(&(sfBase->sfProcPidStats))) return -1; todRet = gettimeofday(&tvTime, NULL);#else struct rusage rusage; int rusageRet;#ifndef WIN32 rusageRet = getrusage(RUSAGE_SELF, &rusage);#else rusageRet = -1;#endif /* !WIN32 */ todRet = gettimeofday(&tvTime, NULL); if (rusageRet < 0) { rusage.ru_utime.tv_sec = 0; rusage.ru_utime.tv_usec = 0; rusage.ru_stime.tv_sec = 0; rusage.ru_stime.tv_usec = 0; } Systimes->usertime = ((double)rusage.ru_utime.tv_sec + ((double)rusage.ru_utime.tv_usec * 1.0e-6)) - sfBase->usertime_sec; Systimes->systemtime = ((double)rusage.ru_stime.tv_sec + ((double)rusage.ru_stime.tv_usec * 1.0e-6)) - sfBase->systemtime_sec; Systimes->totaltime = Systimes->usertime + Systimes->systemtime;#endif /* LINUX_SMP */ if (todRet < 0) { return todRet; } Systimes->realtime = ((double)tvTime.tv_sec + ((double)tvTime.tv_usec * 1.0e-6)) - sfBase->realtime_sec; return 0;}int GetEventsPerSecond(SFBASE *sfBase, SFBASE_STATS *sfBaseStats, SYSTIMES *Systimes){ sfBaseStats->alerts_per_second = (double)(pc.alert_pkts - sfBase->iAlerts) / Systimes->realtime; sfBase->iAlerts = pc.alert_pkts; sfBaseStats->total_sessions = sfBase->iTotalSessions; sfBaseStats->max_sessions = sfBase->iMaxSessions; sfBaseStats->syns_per_second = (double)(sfBase->iSyns) / Systimes->realtime; sfBaseStats->synacks_per_second = (double)(sfBase->iSynAcks) / Systimes->realtime; sfBaseStats->deleted_sessions_per_second = (double)(sfBase->iDeletedSessions) / Systimes->realtime; sfBaseStats->new_sessions_per_second = (double)(sfBase->iNewSessions) / Systimes->realtime; sfBaseStats->tcp_sessions_midstream_per_second = (double)(sfBase->iMidStreamSessions) / Systimes->realtime; sfBaseStats->tcp_sessions_closed_per_second = (double)(sfBase->iClosedSessions) / Systimes->realtime; sfBaseStats->tcp_sessions_timedout_per_second = (double)(sfBase->iStreamTimeouts) / Systimes->realtime; sfBaseStats->tcp_sessions_pruned_per_second = (double)(sfBase->iPrunedSessions) / Systimes->realtime; sfBaseStats->tcp_sessions_dropped_async_per_second = (double)(sfBase->iDroppedAsyncSessions) / Systimes->realtime; sfBaseStats->max_tcp_sessions_interval = sfBase->iMaxSessionsInterval; sfBaseStats->stream_flushes_per_second = (double)sfBase->iStreamFlushes / Systimes->realtime; sfBaseStats->stream_faults = sfBase->iStreamFaults; sfBaseStats->stream_timeouts = sfBase->iStreamTimeouts; sfBaseStats->curr_tcp_sessions_initializing = sfBase->iSessionsInitializing; sfBaseStats->curr_tcp_sessions_established = sfBase->iSessionsEstablished; sfBaseStats->curr_tcp_sessions_closing = sfBase->iSessionsClosing; sfBaseStats->frag_creates_per_second = (double)sfBase->iFragCreates / Systimes->realtime; sfBaseStats->frag_completes_per_second = (double)sfBase->iFragCompletes / Systimes->realtime; sfBaseStats->frag_inserts_per_second = (double)sfBase->iFragInserts / Systimes->realtime; sfBaseStats->frag_deletes_per_second = (double)sfBase->iFragDeletes / Systimes->realtime; sfBaseStats->frag_autofrees_per_second = (double)sfBase->iFragAutoFrees / Systimes->realtime; sfBaseStats->frag_flushes_per_second = (double)sfBase->iFragFlushes / Systimes->realtime; sfBaseStats->max_frags = sfBase->iMaxFrags; sfBaseStats->current_frags = sfBase->iCurrentFrags; sfBaseStats->frag_timeouts = sfBase->iFragTimeouts; sfBaseStats->frag_faults = sfBase->iFragFaults; sfBase->iSyns = 0; sfBase->iSynAcks = 0; sfBase->iNewSessions = 0; sfBase->iDeletedSessions = 0; sfBase->iStreamFlushes = 0; sfBase->iStreamFaults = 0; sfBase->iStreamTimeouts = 0; sfBase->iFragCreates = 0; sfBase->iFragCompletes = 0; sfBase->iFragInserts = 0; sfBase->iFragDeletes = 0; sfBase->iFragAutoFrees = 0; sfBase->iFragFlushes = 0; sfBase->iFragTimeouts = 0; sfBase->iFragFaults = 0; sfBaseStats->total_udp_sessions = sfBase->iTotalUDPSessions; sfBaseStats->max_udp_sessions = sfBase->iMaxUDPSessions; sfBaseStats->deleted_udp_sessions_per_second = (double)(sfBase->iDeletedUDPSessions) / Systimes->realtime; sfBaseStats->new_udp_sessions_per_second = (double)(sfBase->iNewUDPSessions) / Systimes->realtime; sfBase->iNewUDPSessions = 0; sfBase->iDeletedUDPSessions = 0; sfBase->iMaxSessionsInterval = sfBase->iTotalSessions; sfBase->iMidStreamSessions = 0; sfBase->iClosedSessions = 0; sfBase->iPrunedSessions = 0; sfBase->iDroppedAsyncSessions = 0; return 0;} int GetPacketsPerSecond(SFBASE *sfBase, SFBASE_STATS *sfBaseStats, SYSTIMES *Systimes){ sfBaseStats->kpackets_per_sec.realtime = (double)((double)sfBase->total_packets / 1000) / Systimes->realtime; if(sfBase->iFlags & MAX_PERF_STATS) { sfBaseStats->kpackets_per_sec.usertime = (double)((double)sfBase->total_packets / 1000) / Systimes->usertime; sfBaseStats->kpackets_per_sec.systemtime = (double)((double)sfBase->total_packets / 1000) / Systimes->systemtime; sfBaseStats->kpackets_per_sec.totaltime = (double)((double)sfBase->total_packets / 1000) / Systimes->totaltime; } sfBaseStats->kpackets_wire_per_sec.realtime = (double)((double)sfBase->total_wire_packets / 1000) / Systimes->realtime; if(sfBase->iFlags & MAX_PERF_STATS) { sfBaseStats->kpackets_wire_per_sec.usertime = (double)((double)sfBase->total_wire_packets / 1000) / Systimes->usertime; sfBaseStats->kpackets_wire_per_sec.systemtime = (double)((double)sfBase->total_wire_packets / 1000) / Systimes->systemtime; sfBaseStats->kpackets_wire_per_sec.totaltime = (double)((double)sfBase->total_wire_packets / 1000) / Systimes->totaltime; } sfBaseStats->kpackets_ipfrag_per_sec.realtime = (double)((double)sfBase->total_ipfragmented_packets / 1000) / Systimes->realtime; if(sfBase->iFlags & MAX_PERF_STATS) { sfBaseStats->kpackets_ipfrag_per_sec.usertime = (double)((double)sfBase->total_ipfragmented_packets / 1000) / Systimes->usertime; sfBaseStats->kpackets_ipfrag_per_sec.systemtime = (double)((double)sfBase->total_ipfragmented_packets / 1000) / Systimes->systemtime; sfBaseStats->kpackets_ipfrag_per_sec.totaltime = (double)((double)sfBase->total_ipfragmented_packets / 1000) / Systimes->totaltime; } sfBaseStats->kpackets_ipreass_per_sec.realtime = (double)((double)sfBase->total_ipreassembled_packets / 1000) / Systimes->realtime; if(sfBase->iFlags & MAX_PERF_STATS) { sfBaseStats->kpackets_ipreass_per_sec.usertime = (double)((double)sfBase->total_ipreassembled_packets / 1000) / Systimes->usertime; sfBaseStats->kpackets_ipreass_per_sec.systemtime = (double)((double)sfBase->total_ipreassembled_packets / 1000) / Systimes->systemtime; sfBaseStats->kpackets_ipreass_per_sec.totaltime = (double)((double)sfBase->total_ipreassembled_packets / 1000) / Systimes->totaltime; } sfBaseStats->kpackets_rebuilt_per_sec.realtime = (double)((double)sfBase->total_rebuilt_packets / 1000) / Systimes->realtime; if(sfBase->iFlags & MAX_PERF_STATS) { sfBaseStats->kpackets_rebuilt_per_sec.usertime = (double)((double)sfBase->total_rebuilt_packets / 1000) / Systimes->usertime; sfBaseStats->kpackets_rebuilt_per_sec.systemtime = (double)((double)sfBase->total_rebuilt_packets / 1000) / Systimes->systemtime; sfBaseStats->kpackets_rebuilt_per_sec.totaltime = (double)((double)sfBase->total_rebuilt_packets / 1000) / Systimes->totaltime; } return 0;}int GetuSecondsPerPacket(SFBASE *sfBase, SFBASE_STATS *sfBaseStats, SYSTIMES *Systimes){ sfBaseStats->usecs_per_packet.usertime = (Systimes->usertime * 1.0e6) / (double)sfBase->total_packets; sfBaseStats->usecs_per_packet.systemtime = (Systimes->systemtime * 1.0e6) / (double)sfBase->total_packets; sfBaseStats->usecs_per_packet.totaltime = (Systimes->totaltime * 1.0e6) / (double)sfBase->total_packets; sfBaseStats->usecs_per_packet.realtime = (Systimes->realtime * 1.0e6) / (double)sfBase->total_packets;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -