Kea 2.5.8
isc::perfdhcp::StatsMgr Class Reference

Statistics Manager. More...

#include <stats_mgr.h>

+ Inheritance diagram for isc::perfdhcp::StatsMgr:

Public Member Functions

 StatsMgr (CommandOptions &options)
 Constructor.
 
void addCustomCounter (const std::string &short_name, const std::string &long_name)
 Add named custom uint64 counter.
 
void addExchangeStats (const ExchangeType xchg_type, const double drop_time=-1)
 Specify new exchange type.
 
bool droppedPackets () const
 Check if any packet drops occurred.
 
double getAvgDelay (const ExchangeType xchg_type) const
 Return average packet delay.
 
double getAvgUnorderedLookupSetSize (const ExchangeType xchg_type) const
 Return average unordered lookup set size.
 
uint64_t getCollectedNum (const ExchangeType xchg_type) const
 Return number of garbage collected packets.
 
CustomCounterPtr getCounter (const std::string &counter_key)
 Return specified counter.
 
uint64_t getDroppedPacketsNum (const ExchangeType xchg_type) const
 Return total number of dropped packets.
 
double getMaxDelay (const ExchangeType xchg_type) const
 Return maximum delay between sent and received packet.
 
double getMinDelay (const ExchangeType xchg_type) const
 Return minimum delay between sent and received packet.
 
uint64_t getNonUniqueAddrNum (const ExchangeType xchg_type) const
 Return total number of non unique addresses.
 
uint64_t getOrderedLookups (const ExchangeType xchg_type) const
 Return number of ordered sent packets lookups.
 
uint64_t getOrphans (const ExchangeType xchg_type) const
 Return number of orphan packets.
 
uint64_t getRcvdPacketsNum (const ExchangeType xchg_type) const
 Return total number of received packets.
 
uint64_t getRejLeasesNum (const ExchangeType xchg_type) const
 Return total number of rejected leases.
 
std::tuple< typename ExchangeStats::PktListIterator, typename ExchangeStats::PktListIteratorgetSentPackets (const ExchangeType xchg_type) const
 
uint64_t getSentPacketsNum (const ExchangeType xchg_type) const
 Return total number of sent packets.
 
double getStdDevDelay (const ExchangeType xchg_type) const
 Return standard deviation of packet delay.
 
boost::posix_time::time_period getTestPeriod () const
 Get time period since the start of test.
 
uint64_t getUnorderedLookups (const ExchangeType xchg_type) const
 Return number of unordered sent packets lookups.
 
bool hasExchangeStats (const ExchangeType xchg_type) const
 Check if the exchange type has been specified.
 
const CustomCounterincrementCounter (const std::string &counter_key, const uint64_t value=1)
 Increment specified counter.
 
dhcp::PktPtr passRcvdPacket (const ExchangeType xchg_type, const dhcp::PktPtr &packet)
 Add new received packet and match with sent packet.
 
void passSentPacket (const ExchangeType xchg_type, const dhcp::PktPtr &packet)
 Adds new packet to the sent packets list.
 
void printCustomCounters () const
 Print names and values of custom counters.
 
void printIntermediateStats (bool clean_report, std::string clean_sep) const
 Print intermediate statistics.
 
void printLeases () const
 Delegate to all exchanges to print their leases.
 
void printStats () const
 Print statistics counters for all exchange types.
 
void printTimestamps () const
 Print timestamps of all packets.
 
void updateNonUniqueAddrNum (const ExchangeType xchg_type)
 Increase total number of non unique addresses.
 
void updateRejLeases (const ExchangeType xchg_type)
 Increase total number of rejected leases.
 

Detailed Description

Statistics Manager.

This class template is a storage for various performance statistics collected during performance tests execution with perfdhcp tool.

Statistics Manager holds lists of sent and received packets and groups them into exchanges. For example: DHCPDISCOVER message and corresponding DHCPOFFER messages belong to one exchange, DHCPREQUEST and corresponding DHCPACK message belong to another exchange etc. In order to update statistics for a particular exchange type, client class passes sent and received packets. Internally, Statistics Manager tries to match transaction id of received packet with sent packet stored on the list of sent packets. When packets are matched the round trip time can be calculated.

Definition at line 708 of file bin/perfdhcp/stats_mgr.h.

Constructor & Destructor Documentation

◆ StatsMgr()

isc::perfdhcp::StatsMgr::StatsMgr ( CommandOptions options)

Constructor.

This constructor by default disables packets archiving mode. In this mode all packets from the list of sent packets are moved to list of archived packets once they have been matched with received packets. This is required if it has been selected from the command line to print timestamps for all packets after the test. If this is not selected archiving should be disabled for performance reasons and to avoid waste of memory for storing large list of archived packets.

Definition at line 353 of file bin/perfdhcp/stats_mgr.cc.

References addCustomCounter(), addExchangeStats(), isc::perfdhcp::DO, isc::perfdhcp::CommandOptions::DORA_SARR, isc::perfdhcp::CommandOptions::getDropTime(), isc::perfdhcp::CommandOptions::getExchangeMode(), isc::perfdhcp::CommandOptions::getIpVersion(), isc::perfdhcp::CommandOptions::getReleaseRate(), isc::perfdhcp::CommandOptions::getRenewRate(), isc::perfdhcp::RA, isc::perfdhcp::RL, isc::perfdhcp::RLA, isc::perfdhcp::RN, isc::perfdhcp::RNA, isc::perfdhcp::RR, isc::perfdhcp::SA, and isc::perfdhcp::CommandOptions::testDiags().

+ Here is the call graph for this function:

Member Function Documentation

◆ addCustomCounter()

void isc::perfdhcp::StatsMgr::addCustomCounter ( const std::string &  short_name,
const std::string &  long_name 
)
inline

Add named custom uint64 counter.

Method creates new named counter and stores in counter's map under key specified here as short_name.

Parameters
short_namekey to use to access counter in the map.
long_namename of the counter presented in the log file.

Definition at line 765 of file bin/perfdhcp/stats_mgr.h.

References isc_throw.

Referenced by StatsMgr().

◆ addExchangeStats()

void isc::perfdhcp::StatsMgr::addExchangeStats ( const ExchangeType  xchg_type,
const double  drop_time = -1 
)
inline

Specify new exchange type.

This method creates new ExchangeStats object that will collect statistics data from packets exchange of the specified type.

Parameters
xchg_typeexchange type.
drop_timemaximum time elapsed before packet is assumed dropped. Negative value disables it.
Exceptions
isc::BadValueif exchange of specified type exists.

Definition at line 732 of file bin/perfdhcp/stats_mgr.h.

References isc_throw.

Referenced by StatsMgr().

◆ droppedPackets()

bool isc::perfdhcp::StatsMgr::droppedPackets ( ) const
inline

Check if any packet drops occurred.

Definition at line 778 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::BasicScen::run().

◆ getAvgDelay()

double isc::perfdhcp::StatsMgr::getAvgDelay ( const ExchangeType  xchg_type) const
inline

Return average packet delay.

Method returns average packet delay for specified exchange type.

Returns
average packet delay.

Definition at line 893 of file bin/perfdhcp/stats_mgr.h.

◆ getAvgUnorderedLookupSetSize()

double isc::perfdhcp::StatsMgr::getAvgUnorderedLookupSetSize ( const ExchangeType  xchg_type) const
inline

Return average unordered lookup set size.

Method returns average unordered lookup set size. This value changes every time ExchangeStats::matchPackets function performs unordered packet lookup.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
average unordered lookup set size.

Definition at line 931 of file bin/perfdhcp/stats_mgr.h.

◆ getCollectedNum()

uint64_t isc::perfdhcp::StatsMgr::getCollectedNum ( const ExchangeType  xchg_type) const
inline

Return number of garbage collected packets.

Method returns number of garbage collected timed out packets. Packet is assumed timed out when duration between sending it to server and receiving server's response is greater than value specified with -d<value> command line argument.

Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of garbage collected packets.

Definition at line 1016 of file bin/perfdhcp/stats_mgr.h.

◆ getCounter()

CustomCounterPtr isc::perfdhcp::StatsMgr::getCounter ( const std::string &  counter_key)
inline

Return specified counter.

Method returns specified counter.

Parameters
counter_keykey pointing to the counter in the counters map. The short counter name has to be used to access counter.
Returns
pointer to specified counter object.

Definition at line 794 of file bin/perfdhcp/stats_mgr.h.

References isc_throw.

Referenced by incrementCounter().

◆ getDroppedPacketsNum()

uint64_t isc::perfdhcp::StatsMgr::getDroppedPacketsNum ( const ExchangeType  xchg_type) const
inline

Return total number of dropped packets.

Method returns total number of dropped packets for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of dropped packets.

Definition at line 1001 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::BasicScen::checkExitConditions().

◆ getMaxDelay()

double isc::perfdhcp::StatsMgr::getMaxDelay ( const ExchangeType  xchg_type) const
inline

Return maximum delay between sent and received packet.

Method returns maximum delay between sent and received packet for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
maximum delay between packets.

Definition at line 882 of file bin/perfdhcp/stats_mgr.h.

◆ getMinDelay()

double isc::perfdhcp::StatsMgr::getMinDelay ( const ExchangeType  xchg_type) const
inline

Return minimum delay between sent and received packet.

Method returns minimum delay between sent and received packet for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
minimum delay between packets.

Definition at line 869 of file bin/perfdhcp/stats_mgr.h.

◆ getNonUniqueAddrNum()

uint64_t isc::perfdhcp::StatsMgr::getNonUniqueAddrNum ( const ExchangeType  xchg_type) const
inline

Return total number of non unique addresses.

Method returns total number of non unique addresses and/or prefixes for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of non unique addresses.

Definition at line 1060 of file bin/perfdhcp/stats_mgr.h.

◆ getOrderedLookups()

uint64_t isc::perfdhcp::StatsMgr::getOrderedLookups ( const ExchangeType  xchg_type) const
inline

Return number of ordered sent packets lookups.

Method returns number of ordered sent packet lookups. Ordered lookup is used when packets are received in the same order as they were sent to the server. If packets are skipped or received out of order, lookup function will use unordered lookup (with hash table).

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of ordered lookups.

Definition at line 962 of file bin/perfdhcp/stats_mgr.h.

◆ getOrphans()

uint64_t isc::perfdhcp::StatsMgr::getOrphans ( const ExchangeType  xchg_type) const
inline

Return number of orphan packets.

Method returns number of orphan packets for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of orphan packets so far.

Definition at line 917 of file bin/perfdhcp/stats_mgr.h.

◆ getRcvdPacketsNum()

uint64_t isc::perfdhcp::StatsMgr::getRcvdPacketsNum ( const ExchangeType  xchg_type) const
inline

Return total number of received packets.

Method returns total number of received packets for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of received packets.

Definition at line 988 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::haveAllPacketsBeenReceived(), isc::perfdhcp::TestControl::printRate(), isc::perfdhcp::AvalancheScen::run(), isc::perfdhcp::TestControl::sendRequest4(), and isc::perfdhcp::TestControl::sendRequest6().

◆ getRejLeasesNum()

uint64_t isc::perfdhcp::StatsMgr::getRejLeasesNum ( const ExchangeType  xchg_type) const
inline

Return total number of rejected leases.

Method returns total number of rejected leases for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of rejected leases.

Definition at line 1029 of file bin/perfdhcp/stats_mgr.h.

◆ getSentPackets()

std::tuple< typename ExchangeStats::PktListIterator, typename ExchangeStats::PktListIterator > isc::perfdhcp::StatsMgr::getSentPackets ( const ExchangeType  xchg_type) const
inline

◆ getSentPacketsNum()

uint64_t isc::perfdhcp::StatsMgr::getSentPacketsNum ( const ExchangeType  xchg_type) const
inline

Return total number of sent packets.

Method returns total number of sent packets for specified exchange type.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of sent packets.

Definition at line 975 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::BasicScen::checkExitConditions(), and isc::perfdhcp::AvalancheScen::run().

◆ getStdDevDelay()

double isc::perfdhcp::StatsMgr::getStdDevDelay ( const ExchangeType  xchg_type) const
inline

Return standard deviation of packet delay.

Method returns standard deviation of packet delay for specified exchange type.

Returns
standard deviation of packet delay.

Definition at line 904 of file bin/perfdhcp/stats_mgr.h.

◆ getTestPeriod()

boost::posix_time::time_period isc::perfdhcp::StatsMgr::getTestPeriod ( ) const
inline

Get time period since the start of test.

Calculate dna return period since the test start. This can be specifically helpful when calculating packet exchange rates.

Returns
test period so far.

Definition at line 1072 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::BasicScen::checkExitConditions(), isc::perfdhcp::TestControl::printRate(), isc::perfdhcp::TestControl::sendDiscover4(), and isc::perfdhcp::TestControl::sendSolicit6().

◆ getUnorderedLookups()

uint64_t isc::perfdhcp::StatsMgr::getUnorderedLookups ( const ExchangeType  xchg_type) const
inline

Return number of unordered sent packets lookups.

Method returns number of unordered sent packet lookups. Unordered lookup is used when received packet was sent out of order by server - transaction id of received packet does not match transaction id of next sent packet.

Parameters
xchg_typeexchange type.
Exceptions
isc::BadValueif invalid exchange type specified.
Returns
number of unordered lookups.

Definition at line 946 of file bin/perfdhcp/stats_mgr.h.

◆ hasExchangeStats()

bool isc::perfdhcp::StatsMgr::hasExchangeStats ( const ExchangeType  xchg_type) const
inline

Check if the exchange type has been specified.

This method checks if the ExchangeStats object of a particular type exists (has been added using addExchangeStats function).

Parameters
xchg_typeA type of the exchange being represented by the ExchangeStats object.
Returns
true if the ExchangeStats object has been added for a specified exchange type.

Definition at line 754 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::processReceivedPacket4(), and isc::perfdhcp::TestControl::processReceivedPacket6().

◆ incrementCounter()

const CustomCounter & isc::perfdhcp::StatsMgr::incrementCounter ( const std::string &  counter_key,
const uint64_t  value = 1 
)
inline

Increment specified counter.

Increment counter value by one.

Parameters
counter_keykey pointing to the counter in the counters map.
valuevalue to increment counter by.
Returns
pointer to specified counter after incrementation.

Definition at line 810 of file bin/perfdhcp/stats_mgr.h.

References getCounter().

Referenced by isc::perfdhcp::BasicScen::run().

+ Here is the call graph for this function:

◆ passRcvdPacket()

dhcp::PktPtr isc::perfdhcp::StatsMgr::passRcvdPacket ( const ExchangeType  xchg_type,
const dhcp::PktPtr packet 
)
inline

Add new received packet and match with sent packet.

Method adds new packet to the list of received packets. It also searches for corresponding packet on the list of sent packets. When packets are matched the statistics counters are updated accordingly for the particular exchange type.

Parameters
xchg_typeexchange type.
packetreceived packet
Exceptions
isc::BadValueif invalid exchange type specified or packet is null.
isc::Unexpectedif corresponding packet was not found on the list of sent packets.

Definition at line 847 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::processReceivedPacket4(), and isc::perfdhcp::TestControl::processReceivedPacket6().

◆ passSentPacket()

void isc::perfdhcp::StatsMgr::passSentPacket ( const ExchangeType  xchg_type,
const dhcp::PktPtr packet 
)
inline

Adds new packet to the sent packets list.

Method adds new packet to the sent packets list. Packets are added to the list sequentially and most often read sequentially.

Parameters
xchg_typeexchange type.
packetpacket to be added to the list
Exceptions
isc::BadValueif invalid exchange type specified or packet is null.

Definition at line 827 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::sendDiscover4(), isc::perfdhcp::TestControl::sendMessageFromAck(), isc::perfdhcp::TestControl::sendMessageFromReply(), isc::perfdhcp::TestControl::sendRequest4(), isc::perfdhcp::TestControl::sendRequest6(), and isc::perfdhcp::TestControl::sendSolicit6().

◆ printCustomCounters()

void isc::perfdhcp::StatsMgr::printCustomCounters ( ) const
inline

Print names and values of custom counters.

Method prints names and values of custom counters. Custom counters are defined by client class for tracking different statistics.

Exceptions
isc::InvalidOperationif no custom counters added for tracking.

Definition at line 1191 of file bin/perfdhcp/stats_mgr.h.

References isc_throw.

Referenced by isc::perfdhcp::TestControl::printStats().

◆ printIntermediateStats()

void isc::perfdhcp::StatsMgr::printIntermediateStats ( bool  clean_report,
std::string  clean_sep 
) const
inline

Print intermediate statistics.

Method prints intermediate statistics for all exchanges. Statistics includes sent, received and dropped packets counters.

Parameters
clean_reportvalue to generate easy to parse report.
clean_sepstring used as separator if clean_report enabled..

Definition at line 1117 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::printIntermediateStats().

◆ printLeases()

void isc::perfdhcp::StatsMgr::printLeases ( ) const

Delegate to all exchanges to print their leases.

Definition at line 457 of file bin/perfdhcp/stats_mgr.cc.

Referenced by isc::perfdhcp::AvalancheScen::run(), and isc::perfdhcp::BasicScen::run().

◆ printStats()

void isc::perfdhcp::StatsMgr::printStats ( ) const
inline

Print statistics counters for all exchange types.

Method prints statistics for all exchange types. Statistics includes:

  • number of sent and received packets
  • number of dropped packets and number of orphans
  • minimum packets delay,
  • average packets delay,
  • maximum packets delay,
  • standard deviation of packets delay.
Exceptions
isc::InvalidOperationif no exchange type added to track statistics.

Definition at line 1092 of file bin/perfdhcp/stats_mgr.h.

References isc_throw.

Referenced by isc::perfdhcp::TestControl::printStats().

◆ printTimestamps()

void isc::perfdhcp::StatsMgr::printTimestamps ( ) const
inline

Print timestamps of all packets.

Method prints timestamps of all sent and received packets for all defined exchange types.

Exceptions
isc::InvalidOperationif one of the packets has no timestamp value set or if packets archive mode is disabled.
isc::InvalidOperationif no exchange type added to track statistics or packets archive mode is disabled.

Definition at line 1167 of file bin/perfdhcp/stats_mgr.h.

References isc_throw.

Referenced by isc::perfdhcp::AvalancheScen::run(), and isc::perfdhcp::BasicScen::run().

◆ updateNonUniqueAddrNum()

void isc::perfdhcp::StatsMgr::updateNonUniqueAddrNum ( const ExchangeType  xchg_type)
inline

Increase total number of non unique addresses.

Method increases total number of non unique addresses or prefixes by one for specified exchange type.

Definition at line 1047 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::address6Uniqueness(), and isc::perfdhcp::TestControl::addUniqeAddr().

◆ updateRejLeases()

void isc::perfdhcp::StatsMgr::updateRejLeases ( const ExchangeType  xchg_type)
inline

Increase total number of rejected leases.

Method increases total number of rejected leases by one for specified exchange type.

Definition at line 1038 of file bin/perfdhcp/stats_mgr.h.

Referenced by isc::perfdhcp::TestControl::processReceivedPacket6().


The documentation for this class was generated from the following files: