#include "managers/plugin_manager.h"
#include "utils/stats.h"
+#define BASE_FILE (PERF_NAME ".csv")
+
using namespace std;
BaseTracker::BaseTracker(PerfConfig* perf) : PerfTracker(perf,
#include <sys/resource.h>
+#define CPU_FILE (PERF_NAME "_cpu.csv")
+
#ifdef UNIT_TEST
#include "catch/catch.hpp"
#endif
return (uint64_t)t.tv_sec * 1000000 + t.tv_usec;
}
+
+CPUTracker::CPUTracker(PerfConfig *perf) :
+ PerfTracker(perf, perf->output == PERF_FILE ? CPU_FILE : nullptr){}
+
void CPUTracker::get_clocks(struct rusage& usage, struct timeval& wall_time)
{
getrusage(RUSAGE_THREAD, &usage);
class CPUTracker : public PerfTracker
{
public:
- CPUTracker(PerfConfig *perf):
- PerfTracker(perf, perf->output == PERF_FILE ? CPU_FILE : nullptr)
- {}
+ CPUTracker(PerfConfig*);
void reset() override;
void process(bool) override;
#include "utils/stats.h"
#include "utils/util.h"
+#define EVENT_FILE (PERF_NAME "_event.csv")
+
THREAD_LOCAL EventTracker* perf_event;
static std::string csv_header =
"#timestamp,qualified_events,non_qualified_events\n";
+EventTracker::EventTracker(PerfConfig *perf) :
+ PerfTracker(perf, perf->output == PERF_FILE ? EVENT_FILE : nullptr) {}
+
void EventTracker::reset()
{
event_counts.NQEvents = 0;
class EventTracker : public PerfTracker
{
public:
- EventTracker(PerfConfig* perf) :
- PerfTracker(perf, perf->output == PERF_FILE ? EVENT_FILE : nullptr) { }
+ EventTracker(PerfConfig*);
void reset() override;
void process(bool) override;
#include "sfip/sf_ip.h"
#include "utils/util.h"
+#define FLIP_FILE (PERF_NAME "_flow_ip.csv")
+
struct FlowStateKey
{
sfip_t ipA;
#include "utils/util.h"
+#define FLOW_FILE (PERF_NAME "_flow.csv")
+
THREAD_LOCAL FlowTracker* perf_flow;
FlowTracker::FlowTracker(PerfConfig* perf) : PerfTracker(perf,
if ( v.get_bool() )
config.perf_flags |= PERF_CPU;
}
+ else if ( v.is("events") )
+ {
+ if ( v.get_bool() )
+ config.perf_flags |= PERF_EVENT;
+ }
else if ( v.is("flow") )
{
if ( v.get_bool() )
if ( v.get_bool() )
config.perf_flags |= PERF_FLOWIP;
}
- else if ( v.is("events") )
- {
- if ( v.get_bool() )
- config.perf_flags |= PERF_EVENT;
- }
else if ( v.is("packets") )
{
config.pkt_cnt = v.get_long();
#define PERF_FLOWIP 0x00000020
#define PERF_SUMMARY 0x00000040
-#define BASE_FILE "perf_monitor.csv"
-#define FLOW_FILE "perf_monitor_flow.csv"
-#define FLIP_FILE "perf_monitor_flow_ip.csv"
-#define EVENT_FILE "perf_monitor_event.csv"
-#define CPU_FILE "perf_monitor_cpu.csv"
-
#define ROLLOVER_THRESH 512
#define MAX_PERF_FILE_SIZE UINT64_MAX
#define MIN_PERF_FILE_SIZE 4096