9 #include "daq/rfarm/manager/RFFlowStat.h"
14 RFFlowStat::RFFlowStat(
const char* shmname,
int id,
RingBuffer* rbuf)
17 m_cell = &(m_rfshm->GetCell(
id));
22 gettimeofday(&m_t0, 0);
25 RFFlowStat::RFFlowStat(
const char* shmname)
30 RFFlowStat::~RFFlowStat()
35 void RFFlowStat::log(
int size)
41 m_cell->nqueue = m_rbuf->numq();
44 m_flowsize += (float)size;
46 if (m_cell->nevent % m_interval == 0) {
47 gettimeofday(&tnow, 0);
48 float delta = (float)((tnow.tv_sec - m_t0.tv_sec) * 1000000 +
49 (tnow.tv_usec - m_t0.tv_usec));
50 m_cell->flowrate = m_flowsize / delta;
52 m_cell->avesize = m_flowsize / (float)m_nevtint / 1000.0;
53 m_cell->evtrate = (float)m_nevtint / delta * 1000000.0;
54 m_cell->elapsed = time(NULL);
60 void RFFlowStat::clear(
int cellid)
74 return m_rfshm->GetCell(
id);
77 void RFFlowStat::fillNodeInfo(
int id,
RfNodeInfo* info,
bool outflag)
82 info->nevent_in = cell.nevent;
83 info->nqueue_in = cell.nqueue;
84 info->flowrate_in = cell.flowrate;
85 info->avesize_in = cell.avesize;
86 info->evtrate_in = cell.evtrate;
88 info->nevent_out = cell.nevent;
89 info->nqueue_out = cell.nqueue;
90 info->flowrate_out = cell.flowrate;
91 info->avesize_out = cell.avesize;
92 info->evtrate_out = cell.evtrate;
95 if (getloadavg(loads, 3) > 0)
96 info->loadave = (float)loads[0];
108 void RFFlowStat::fillProcessStatus(
RfNodeInfo* info,
int input,
int output,
int basf2,
int hserver,
int hrelay)
110 info->pid_input = input;
111 info->pid_output = output;
112 info->pid_basf2 = basf2;
113 info->pid_hserver = hserver;
114 info->pid_hrelay = hrelay;
Class to manage a Ring Buffer placed in an IPC shared memory.
Abstract base class for different kinds of events.