#include <ThruputMeter.h>
Protected Member Functions | |
| virtual void | updateStats (simtime_t now, unsigned long bits) |
| virtual void | beginNewInterval (simtime_t now) |
| virtual void | initialize () |
| virtual void | handleMessage (cMessage *msg) |
| virtual void | finish () |
Protected Attributes | |
| simtime_t | startTime |
| unsigned int | batchSize |
| simtime_t | maxInterval |
| unsigned long | numPackets |
| unsigned long | numBits |
| simtime_t | intvlStartTime |
| simtime_t | intvlLastPkTime |
| unsigned long | intvlNumPackets |
| unsigned long | intvlNumBits |
| cOutVector | bitpersecVector |
| cOutVector | pkpersecVector |
Measures and records network thruput
Definition at line 31 of file ThruputMeter.h.
| void ThruputMeter::beginNewInterval | ( | simtime_t | now | ) | [protected, virtual] |
Definition at line 67 of file ThruputMeter.cc.
Referenced by updateStats().
{
simtime_t duration = now - intvlStartTime;
// record measurements
double bitpersec = intvlNumBits/duration.dbl();
double pkpersec = intvlNumPackets/duration.dbl();
bitpersecVector.recordWithTimestamp(intvlStartTime, bitpersec);
pkpersecVector.recordWithTimestamp(intvlStartTime, pkpersec);
// restart counters
intvlStartTime = now; // FIXME this should be *beginning* of tx of this packet, not end!
intvlNumPackets = intvlNumBits = 0;
}
| void ThruputMeter::finish | ( | ) | [protected, virtual] |
Definition at line 83 of file ThruputMeter.cc.
{
simtime_t duration = simTime() - startTime;
recordScalar("duration", duration);
recordScalar("total packets", numPackets);
recordScalar("total bits", numBits);
recordScalar("avg throughput (bit/s)", numBits/duration.dbl());
recordScalar("avg packets/s", numPackets/duration.dbl());
}
| void ThruputMeter::handleMessage | ( | cMessage * | msg | ) | [protected, virtual] |
Definition at line 47 of file ThruputMeter.cc.
{
updateStats(simTime(), PK(msg)->getBitLength());
send(msg, "out");
}
| void ThruputMeter::initialize | ( | ) | [protected, virtual] |
Definition at line 24 of file ThruputMeter.cc.
{
startTime = par("startTime");
long _batchSize = par("batchSize");
if((_batchSize < 0) || (((long)(unsigned int)_batchSize) != _batchSize))
throw cRuntimeError("invalid 'batchSize=%ld' parameter at '%s' module",_batchSize, getFullPath().c_str());
batchSize = (unsigned int)_batchSize;
maxInterval = par("maxInterval");
numPackets = numBits = 0;
intvlStartTime = intvlLastPkTime = 0;
intvlNumPackets = intvlNumBits = 0;
WATCH(numPackets);
WATCH(numBits);
WATCH(intvlStartTime);
WATCH(intvlNumPackets);
WATCH(intvlNumBits);
bitpersecVector.setName("thruput (bit/sec)");
pkpersecVector.setName("packet/sec");
}
| void ThruputMeter::updateStats | ( | simtime_t | now, | |
| unsigned long | bits | |||
| ) | [protected, virtual] |
Definition at line 53 of file ThruputMeter.cc.
Referenced by handleMessage().
{
numPackets++;
numBits += bits;
// packet should be counted to new interval
if (intvlNumPackets >= batchSize || now-intvlStartTime >= maxInterval)
beginNewInterval(now);
intvlNumPackets++;
intvlNumBits += bits;
intvlLastPkTime = now;
}
unsigned int ThruputMeter::batchSize [protected] |
Definition at line 36 of file ThruputMeter.h.
Referenced by initialize(), and updateStats().
cOutVector ThruputMeter::bitpersecVector [protected] |
Definition at line 52 of file ThruputMeter.h.
Referenced by beginNewInterval(), and initialize().
simtime_t ThruputMeter::intvlLastPkTime [protected] |
Definition at line 47 of file ThruputMeter.h.
Referenced by initialize(), and updateStats().
unsigned long ThruputMeter::intvlNumBits [protected] |
Definition at line 49 of file ThruputMeter.h.
Referenced by beginNewInterval(), initialize(), and updateStats().
unsigned long ThruputMeter::intvlNumPackets [protected] |
Definition at line 48 of file ThruputMeter.h.
Referenced by beginNewInterval(), initialize(), and updateStats().
simtime_t ThruputMeter::intvlStartTime [protected] |
Definition at line 46 of file ThruputMeter.h.
Referenced by beginNewInterval(), initialize(), and updateStats().
simtime_t ThruputMeter::maxInterval [protected] |
Definition at line 37 of file ThruputMeter.h.
Referenced by initialize(), and updateStats().
unsigned long ThruputMeter::numBits [protected] |
Definition at line 43 of file ThruputMeter.h.
Referenced by finish(), initialize(), and updateStats().
unsigned long ThruputMeter::numPackets [protected] |
Definition at line 42 of file ThruputMeter.h.
Referenced by finish(), initialize(), and updateStats().
cOutVector ThruputMeter::pkpersecVector [protected] |
Definition at line 53 of file ThruputMeter.h.
Referenced by beginNewInterval(), and initialize().
simtime_t ThruputMeter::startTime [protected] |
Definition at line 35 of file ThruputMeter.h.
Referenced by finish(), and initialize().
1.7.1