#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
 1.7.1