suricata
util-profiling.c File Reference
#include "suricata-common.h"
#include "util-profiling.h"
#include "tm-threads.h"
#include "conf.h"
#include "util-unittest.h"
#include "util-byte.h"
#include "util-profiling-locks.h"
#include "util-conf.h"
#include "util-path.h"
Include dependency graph for util-profiling.c:

Go to the source code of this file.

Data Structures

struct  SCProfilePacketData_
 
struct  ProfileProtoRecords
 

Macros

#define CASE_CODE(E)   case E: return #E
 
#define TEST_RUNS   1024
 

Typedefs

typedef struct SCProfilePacketData_ SCProfilePacketData
 

Functions

void SCProfilingDumpPacketStats (void)
 
const char * PacketProfileDetectIdToString (PacketProfileDetectId id)
 Maps the PacketProfileDetectId, to its string equivalent. More...
 
const char * PacketProfileLoggerIdToString (LoggerId id)
 Maps the LoggerId's to its string equivalent for profiling output. More...
 
void SCProfilingInit (void)
 Initialize profiling. More...
 
void SCProfilingDestroy (void)
 Free resources used by profiling. More...
 
void SCProfilingDump (void)
 
void SCProfilingPrintPacketProfile (Packet *p)
 
void SCProfilingAddPacket (Packet *p)
 
PktProfilingSCProfilePacketStart (void)
 
int SCProfileRuleStart (Packet *p)
 
void SCProfilingRegisterTests (void)
 
void SCProfileRuleStartCollection (void)
 
void SCProfileRuleStopCollection (void)
 

Variables

int profiling_locks_enabled
 
int profiling_locks_output_to_file
 
char * profiling_locks_file_name
 
const char * profiling_locks_file_mode
 
SCProfilePacketData packet_profile_data4 [257]
 
SCProfilePacketData packet_profile_data6 [257]
 
SCProfilePacketData packet_profile_tmm_data4 [TMM_SIZE][257]
 
SCProfilePacketData packet_profile_tmm_data6 [TMM_SIZE][257]
 
SCProfilePacketData packet_profile_app_data4 [ALPROTO_MAX][257]
 
SCProfilePacketData packet_profile_app_data6 [ALPROTO_MAX][257]
 
SCProfilePacketData packet_profile_app_pd_data4 [257]
 
SCProfilePacketData packet_profile_app_pd_data6 [257]
 
SCProfilePacketData packet_profile_detect_data4 [PROF_DETECT_SIZE][257]
 
SCProfilePacketData packet_profile_detect_data6 [PROF_DETECT_SIZE][257]
 
SCProfilePacketData packet_profile_log_data4 [LOGGER_SIZE][256]
 
SCProfilePacketData packet_profile_log_data6 [LOGGER_SIZE][256]
 
struct ProfileProtoRecords packet_profile_flowworker_data [PROFILE_FLOWWORKER_SIZE]
 
int profiling_packets_enabled = 0
 
int profiling_output_to_file = 0
 
thread_local int profiling_rules_entered = 0
 

Detailed Description

Author
Endace Technology Limited.
Victor Julien victo.nosp@m.r@in.nosp@m.linia.nosp@m.c.ne.nosp@m.t

An API for profiling operations.

Really just a wrapper around the existing perf counters.

Definition in file util-profiling.c.

Macro Definition Documentation

◆ CASE_CODE

#define CASE_CODE (   E)    case E: return #E

Definition at line 1213 of file util-profiling.c.

◆ TEST_RUNS

#define TEST_RUNS   1024

Typedef Documentation

◆ SCProfilePacketData

Function Documentation

◆ PacketProfileDetectIdToString()

const char * PacketProfileDetectIdToString ( PacketProfileDetectId  id)

Maps the PacketProfileDetectId, to its string equivalent.

Parameters
idPacketProfileDetectId id
Return values
stringequivalent for the PacketProfileDetectId id

Definition at line 1221 of file util-profiling.c.

References CASE_CODE, PROF_DETECT_ALERT, PROF_DETECT_CLEANUP, PROF_DETECT_GETSGH, PROF_DETECT_IPONLY, PROF_DETECT_NONMPMLIST, PROF_DETECT_PF_PAYLOAD, PROF_DETECT_PF_PKT, PROF_DETECT_PF_RECORD, PROF_DETECT_PF_SORT1, PROF_DETECT_PF_SORT2, PROF_DETECT_PF_TX, PROF_DETECT_RULES, PROF_DETECT_SETUP, PROF_DETECT_TX, and PROF_DETECT_TX_UPDATE.

◆ PacketProfileLoggerIdToString()

◆ SCProfilePacketStart()

PktProfiling* SCProfilePacketStart ( void  )

Definition at line 1183 of file util-profiling.c.

References SC_ATOMIC_ADD.

◆ SCProfileRuleStart()

int SCProfileRuleStart ( Packet p)

Definition at line 1192 of file util-profiling.c.

References Packet_::flags, PKT_PROFILE, Packet_::profile, and SC_ATOMIC_ADD.

◆ SCProfileRuleStartCollection()

void SCProfileRuleStartCollection ( void  )

Definition at line 1400 of file util-profiling.c.

◆ SCProfileRuleStopCollection()

void SCProfileRuleStopCollection ( void  )

Definition at line 1404 of file util-profiling.c.

◆ SCProfilingAddPacket()

void SCProfilingAddPacket ( Packet p)

◆ SCProfilingDestroy()

void SCProfilingDestroy ( void  )

Free resources used by profiling.

Definition at line 270 of file util-profiling.c.

References profiling_packets_enabled.

◆ SCProfilingDump()

void SCProfilingDump ( void  )

Definition at line 296 of file util-profiling.c.

References SCLogPerf, and SCProfilingDumpPacketStats().

Here is the call graph for this function:

◆ SCProfilingDumpPacketStats()

void SCProfilingDumpPacketStats ( void  )

Definition at line 351 of file util-profiling.c.

References profiling_packets_enabled.

Referenced by SCProfilingDump().

Here is the caller graph for this function:

◆ SCProfilingInit()

void SCProfilingInit ( void  )

Initialize profiling.

Definition at line 133 of file util-profiling.c.

References ConfGetInt(), and SC_ATOMIC_INIT.

Referenced by PreRunInit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SCProfilingPrintPacketProfile()

void SCProfilingPrintPacketProfile ( Packet p)

Definition at line 765 of file util-profiling.c.

◆ SCProfilingRegisterTests()

void SCProfilingRegisterTests ( void  )

Definition at line 1393 of file util-profiling.c.

References UtRegisterTest().

Here is the call graph for this function:

Variable Documentation

◆ packet_profile_app_data4

SCProfilePacketData packet_profile_app_data4[ALPROTO_MAX][257]

Definition at line 75 of file util-profiling.c.

◆ packet_profile_app_data6

SCProfilePacketData packet_profile_app_data6[ALPROTO_MAX][257]

Definition at line 76 of file util-profiling.c.

◆ packet_profile_app_pd_data4

SCProfilePacketData packet_profile_app_pd_data4[257]

Definition at line 78 of file util-profiling.c.

◆ packet_profile_app_pd_data6

SCProfilePacketData packet_profile_app_pd_data6[257]

Definition at line 79 of file util-profiling.c.

◆ packet_profile_data4

SCProfilePacketData packet_profile_data4[257]

all proto's + tunnel

Definition at line 68 of file util-profiling.c.

◆ packet_profile_data6

SCProfilePacketData packet_profile_data6[257]

all proto's + tunnel

Definition at line 69 of file util-profiling.c.

◆ packet_profile_detect_data4

SCProfilePacketData packet_profile_detect_data4[PROF_DETECT_SIZE][257]

Definition at line 81 of file util-profiling.c.

◆ packet_profile_detect_data6

SCProfilePacketData packet_profile_detect_data6[PROF_DETECT_SIZE][257]

Definition at line 82 of file util-profiling.c.

◆ packet_profile_flowworker_data

struct ProfileProtoRecords packet_profile_flowworker_data[PROFILE_FLOWWORKER_SIZE]

Definition at line 85 of file util-profiling.c.

◆ packet_profile_log_data4

SCProfilePacketData packet_profile_log_data4[LOGGER_SIZE][256]

Definition at line 84 of file util-profiling.c.

◆ packet_profile_log_data6

SCProfilePacketData packet_profile_log_data6[LOGGER_SIZE][256]

Definition at line 85 of file util-profiling.c.

◆ packet_profile_tmm_data4

SCProfilePacketData packet_profile_tmm_data4[TMM_SIZE][257]

Definition at line 72 of file util-profiling.c.

◆ packet_profile_tmm_data6

SCProfilePacketData packet_profile_tmm_data6[TMM_SIZE][257]

Definition at line 73 of file util-profiling.c.

◆ profiling_locks_enabled

int profiling_locks_enabled

◆ profiling_locks_file_mode

const char* profiling_locks_file_mode

◆ profiling_locks_file_name

char* profiling_locks_file_name

◆ profiling_locks_output_to_file

int profiling_locks_output_to_file

◆ profiling_output_to_file

int profiling_output_to_file = 0

Definition at line 95 of file util-profiling.c.

◆ profiling_packets_enabled

int profiling_packets_enabled = 0

Definition at line 94 of file util-profiling.c.

Referenced by SCProfilingDestroy(), and SCProfilingDumpPacketStats().

◆ profiling_rules_entered

thread_local int profiling_rules_entered = 0

Used as a check so we don't double enter a profiling run.

Definition at line 110 of file util-profiling.c.