Skip to content

Commit 9c3b218

Browse files
committed
queueing: added packetRate and dataRate statistics to SlidingWindowRateMeter and ExponentialRateMeter
1 parent 3687fe5 commit 9c3b218

6 files changed

Lines changed: 24 additions & 0 deletions

File tree

src/inet/queueing/meter/ExponentialRateMeter.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ namespace queueing {
1515

1616
Define_Module(ExponentialRateMeter);
1717

18+
simsignal_t ExponentialRateMeter::packetRateSignal = registerSignal("packetRate");
19+
simsignal_t ExponentialRateMeter::dataRateSignal = registerSignal("dataRate");
20+
1821
void ExponentialRateMeter::initialize(int stage)
1922
{
2023
PacketMeterBase::initialize(stage);
@@ -37,6 +40,8 @@ void ExponentialRateMeter::meterPacket(Packet *packet)
3740
currentNumPackets = 0;
3841
currentTotalPacketLength = b(0);
3942
lastUpdate = now;
43+
emit(packetRateSignal, packetrate);
44+
emit(dataRateSignal, datarate.get());
4045
}
4146
currentNumPackets++;
4247
currentTotalPacketLength += packet->getDataLength();

src/inet/queueing/meter/ExponentialRateMeter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ class INET_API ExponentialRateMeter : public PacketMeterBase
2323
bps datarate = bps(0);
2424
double packetrate = 0;
2525

26+
static simsignal_t packetRateSignal;
27+
static simsignal_t dataRateSignal;
28+
2629
protected:
2730
virtual void initialize(int stage) override;
2831
virtual void meterPacket(Packet *packet) override;

src/inet/queueing/meter/ExponentialRateMeter.ned

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,8 @@ simple ExponentialRateMeter extends PacketMeterBase like IPacketMeter
2222
parameters:
2323
double alpha; // Parameter in the range of (0, 1) for the exponential weight decrease
2424
@class(ExponentialRateMeter);
25+
@signal[packetRate](type=double);
26+
@statistic[packetRate](title="packet rate"; record=vector; unit=pps; interpolationmode=linear);
27+
@signal[dataRate](type=double);
28+
@statistic[dataRate](title="data rate"; record=vector; unit=bps; interpolationmode=linear);
2529
}

src/inet/queueing/meter/SlidingWindowRateMeter.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ namespace queueing {
1515

1616
Define_Module(SlidingWindowRateMeter);
1717

18+
simsignal_t SlidingWindowRateMeter::packetRateSignal = registerSignal("packetRate");
19+
simsignal_t SlidingWindowRateMeter::dataRateSignal = registerSignal("dataRate");
20+
1821
void SlidingWindowRateMeter::initialize(int stage)
1922
{
2023
PacketMeterBase::initialize(stage);
@@ -42,6 +45,8 @@ void SlidingWindowRateMeter::meterPacket(Packet *packet)
4245
}
4346
datarate = currentTotalPacketLength / s(timeWindow.dbl());
4447
packetrate = currentNumPackets /timeWindow.dbl();
48+
emit(packetRateSignal, packetrate);
49+
emit(dataRateSignal, datarate.get());
4550
auto rateTag = packet->addTagIfAbsent<RateTag>();
4651
rateTag->setDatarate(datarate);
4752
rateTag->setPacketrate(packetrate);

src/inet/queueing/meter/SlidingWindowRateMeter.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ class INET_API SlidingWindowRateMeter : public PacketMeterBase
2424

2525
std::map<simtime_t, b> packetLengths;
2626

27+
static simsignal_t packetRateSignal;
28+
static simsignal_t dataRateSignal;
29+
2730
protected:
2831
virtual void initialize(int stage) override;
2932
virtual void meterPacket(Packet *packet) override;

src/inet/queueing/meter/SlidingWindowRateMeter.ned

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,8 @@ simple SlidingWindowRateMeter extends PacketMeterBase like IPacketMeter
2020
parameters:
2121
double timeWindow @unit(s); // Amount of time to look back from the current simulation time
2222
@class(SlidingWindowRateMeter);
23+
@signal[packetRate](type=double);
24+
@statistic[packetRate](title="packet rate"; record=vector; unit=pps; interpolationmode=linear);
25+
@signal[dataRate](type=double);
26+
@statistic[dataRate](title="data rate"; record=vector; unit=bps; interpolationmode=linear);
2327
}

0 commit comments

Comments
 (0)