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 dependency graph for util-profiling.c:

Go to the source code of this file.

Data Structures

struct  SCProfilePacketData_
 
struct  ProfileProtoRecords
 

Macros

#define DEFAULT_LOG_FILENAME   "profile.log"
 
#define DEFAULT_LOG_MODE_APPEND   "yes"
 
#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 * PacketProfileLoggertIdToString (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)
 

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 [TMM_SIZE][257]
 
SCProfilePacketData packet_profile_app_data6 [TMM_SIZE][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 1218 of file util-profiling.c.

◆ DEFAULT_LOG_FILENAME

#define DEFAULT_LOG_FILENAME   "profile.log"

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

◆ DEFAULT_LOG_MODE_APPEND

#define DEFAULT_LOG_MODE_APPEND   "yes"

Definition at line 46 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 1226 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.

◆ PacketProfileLoggertIdToString()

const char * PacketProfileLoggertIdToString ( LoggerId  id)

◆ SCProfilePacketStart()

PktProfiling* SCProfilePacketStart ( void  )

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

References SC_ATOMIC_ADD.

◆ SCProfileRuleStart()

int SCProfileRuleStart ( Packet p)

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

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

◆ SCProfilingAddPacket()

void SCProfilingAddPacket ( Packet p)

◆ SCProfilingDestroy()

void SCProfilingDestroy ( void  )

Free resources used by profiling.

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

References profiling_packets_enabled.

◆ SCProfilingDump()

void SCProfilingDump ( void  )

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

References SCLogPerf, and SCProfilingDumpPacketStats().

Here is the call graph for this function:

◆ SCProfilingDumpPacketStats()

void SCProfilingDumpPacketStats ( void  )

Definition at line 344 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 135 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 770 of file util-profiling.c.

◆ SCProfilingRegisterTests()

void SCProfilingRegisterTests ( void  )

Definition at line 1394 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[TMM_SIZE][257]

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

◆ packet_profile_app_data6

SCProfilePacketData packet_profile_app_data6[TMM_SIZE][257]

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

◆ packet_profile_app_pd_data4

SCProfilePacketData packet_profile_app_pd_data4[257]

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

◆ packet_profile_app_pd_data6

SCProfilePacketData packet_profile_app_pd_data6[257]

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

◆ packet_profile_data4

SCProfilePacketData packet_profile_data4[257]

all proto's + tunnel

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

◆ packet_profile_data6

SCProfilePacketData packet_profile_data6[257]

all proto's + tunnel

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

◆ packet_profile_detect_data4

SCProfilePacketData packet_profile_detect_data4[PROF_DETECT_SIZE][257]

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

◆ packet_profile_detect_data6

SCProfilePacketData packet_profile_detect_data6[PROF_DETECT_SIZE][257]

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

◆ packet_profile_flowworker_data

struct ProfileProtoRecords packet_profile_flowworker_data[PROFILE_FLOWWORKER_SIZE]

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

◆ packet_profile_log_data4

SCProfilePacketData packet_profile_log_data4[LOGGER_SIZE][256]

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

◆ packet_profile_log_data6

SCProfilePacketData packet_profile_log_data6[LOGGER_SIZE][256]

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

◆ packet_profile_tmm_data4

SCProfilePacketData packet_profile_tmm_data4[TMM_SIZE][257]

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

◆ packet_profile_tmm_data6

SCProfilePacketData packet_profile_tmm_data6[TMM_SIZE][257]

Definition at line 75 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 97 of file util-profiling.c.

◆ profiling_packets_enabled

int profiling_packets_enabled = 0

Definition at line 96 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 112 of file util-profiling.c.