Kea 2.7.6
|
Statistics Manager. More...
#include <stats_mgr.h>
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::PktListIterator > | getSentPackets (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 CustomCounter & | incrementCounter (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. | |
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.
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 isc::perfdhcp::CommandOptions::getIpVersion(), isc::perfdhcp::CommandOptions::getReleaseRate(), isc::perfdhcp::CommandOptions::getRenewRate(), if(), and isc::perfdhcp::CommandOptions::testDiags().
|
inline |
Add named custom uint64 counter.
Method creates new named counter and stores in counter's map under key specified here as short_name.
short_name | key to use to access counter in the map. |
long_name | name of the counter presented in the log file. |
Definition at line 765 of file bin/perfdhcp/stats_mgr.h.
References isc_throw.
|
inline |
Specify new exchange type.
This method creates new ExchangeStats object that will collect statistics data from packets exchange of the specified type.
xchg_type | exchange type. |
drop_time | maximum time elapsed before packet is assumed dropped. Negative value disables it. |
isc::BadValue | if exchange of specified type exists. |
Definition at line 732 of file bin/perfdhcp/stats_mgr.h.
References isc_throw.
|
inline |
Check if any packet drops occurred.
Definition at line 778 of file bin/perfdhcp/stats_mgr.h.
Referenced by isc::perfdhcp::BasicScen::run().
|
inline |
Return average packet delay.
Method returns average packet delay for specified exchange type.
Definition at line 893 of file bin/perfdhcp/stats_mgr.h.
|
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.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 931 of file bin/perfdhcp/stats_mgr.h.
|
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.
isc::BadValue | if invalid exchange type specified. |
Definition at line 1016 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Return specified counter.
Method returns specified counter.
counter_key | key pointing to the counter in the counters map. The short counter name has to be used to access counter. |
Definition at line 794 of file bin/perfdhcp/stats_mgr.h.
References isc_throw.
Referenced by incrementCounter().
|
inline |
Return total number of dropped packets.
Method returns total number of dropped packets for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 1001 of file bin/perfdhcp/stats_mgr.h.
Referenced by isc::perfdhcp::BasicScen::checkExitConditions().
|
inline |
Return maximum delay between sent and received packet.
Method returns maximum delay between sent and received packet for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 882 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Return minimum delay between sent and received packet.
Method returns minimum delay between sent and received packet for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 869 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Return total number of non unique addresses.
Method returns total number of non unique addresses and/or prefixes for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 1060 of file bin/perfdhcp/stats_mgr.h.
|
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).
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 962 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Return number of orphan packets.
Method returns number of orphan packets for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 917 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Return total number of received packets.
Method returns total number of received packets for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
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(), isc::perfdhcp::TestControl::sendRequest4(), isc::perfdhcp::TestControl::sendRequest6(), and isc::perfdhcp::TestControl::sendRequest6().
|
inline |
Return total number of rejected leases.
Method returns total number of rejected leases for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 1029 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Definition at line 1203 of file bin/perfdhcp/stats_mgr.h.
Referenced by isc::perfdhcp::AvalancheScen::resendPackets().
|
inline |
Return total number of sent packets.
Method returns total number of sent packets for specified exchange type.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 975 of file bin/perfdhcp/stats_mgr.h.
Referenced by isc::perfdhcp::BasicScen::checkExitConditions(), and isc::perfdhcp::AvalancheScen::run().
|
inline |
Return standard deviation of packet delay.
Method returns standard deviation of packet delay for specified exchange type.
Definition at line 904 of file bin/perfdhcp/stats_mgr.h.
|
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.
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().
|
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.
xchg_type | exchange type. |
isc::BadValue | if invalid exchange type specified. |
Definition at line 946 of file bin/perfdhcp/stats_mgr.h.
|
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).
xchg_type | A type of the exchange being represented by the ExchangeStats object. |
Definition at line 754 of file bin/perfdhcp/stats_mgr.h.
Referenced by isc::perfdhcp::TestControl::processReceivedPacket4(), and isc::perfdhcp::TestControl::processReceivedPacket6().
|
inline |
Increment specified counter.
Increment counter value by one.
counter_key | key pointing to the counter in the counters map. |
value | value to increment counter by. |
Definition at line 810 of file bin/perfdhcp/stats_mgr.h.
References getCounter().
Referenced by isc::perfdhcp::BasicScen::run().
|
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.
xchg_type | exchange type. |
packet | received packet |
isc::BadValue | if invalid exchange type specified or packet is null. |
isc::Unexpected | if 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().
|
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.
xchg_type | exchange type. |
packet | packet to be added to the list |
isc::BadValue | if 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::sendDiscover4(), isc::perfdhcp::TestControl::sendMessageFromAck(), isc::perfdhcp::TestControl::sendMessageFromReply(), isc::perfdhcp::TestControl::sendRequest4(), isc::perfdhcp::TestControl::sendRequest4(), isc::perfdhcp::TestControl::sendRequest6(), isc::perfdhcp::TestControl::sendRequest6(), isc::perfdhcp::TestControl::sendSolicit6(), and isc::perfdhcp::TestControl::sendSolicit6().
|
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.
isc::InvalidOperation | if 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().
|
inline |
Print intermediate statistics.
Method prints intermediate statistics for all exchanges. Statistics includes sent, received and dropped packets counters.
clean_report | value to generate easy to parse report. |
clean_sep | string used as separator if clean_report enabled.. |
Definition at line 1117 of file bin/perfdhcp/stats_mgr.h.
Referenced by isc::perfdhcp::TestControl::printIntermediateStats().
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().
|
inline |
Print statistics counters for all exchange types.
Method prints statistics for all exchange types. Statistics includes:
isc::InvalidOperation | if 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().
|
inline |
Print timestamps of all packets.
Method prints timestamps of all sent and received packets for all defined exchange types.
isc::InvalidOperation | if one of the packets has no timestamp value set or if packets archive mode is disabled. |
isc::InvalidOperation | if 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().
|
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().
|
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().