![]() |
Kea
1.5.0
|
Statistics Manager. More...
#include <stats_mgr.h>
Inheritance diagram for isc::perfdhcp::StatsMgr< T >:Classes | |
| class | CustomCounter |
| Custom Counter. More... | |
| class | ExchangeStats |
| Exchange Statistics. More... | |
Public Types | |
| typedef boost::shared_ptr< CustomCounter > | CustomCounterPtr |
| typedef std::map< std::string, CustomCounterPtr > | CustomCountersMap |
| Map containing custom counters. More... | |
| typedef CustomCountersMap::const_iterator | CustomCountersMapIterator |
| Iterator for CustomCountersMap. More... | |
| typedef std::map< ExchangeType, ExchangeStatsPtr > | ExchangesMap |
| Map containing all specified exchange types. More... | |
| typedef ExchangesMap::const_iterator | ExchangesMapIterator |
| Iterator pointing to ExchangesMap. More... | |
| typedef boost::shared_ptr< ExchangeStats > | ExchangeStatsPtr |
| Pointer to ExchangeStats. More... | |
| enum | ExchangeType { XCHG_DO, XCHG_RA, XCHG_RNA, XCHG_SA, XCHG_RR, XCHG_RN, XCHG_RL } |
| DHCP packet exchange types. More... | |
Public Member Functions | |
| StatsMgr (const bool archive_enabled=false) | |
| Constructor. More... | |
| void | addCustomCounter (const std::string &short_name, const std::string &long_name) |
| Add named custom uint64 counter. More... | |
| void | addExchangeStats (const ExchangeType xchg_type, const double drop_time=-1) |
| Specify new exchange type. More... | |
| bool | droppedPackets () const |
| Check if any packet drops occurred. More... | |
| double | getAvgDelay (const ExchangeType xchg_type) const |
| Return average packet delay. More... | |
| double | getAvgUnorderedLookupSetSize (const ExchangeType xchg_type) const |
| Return average unordered lookup set size. More... | |
| uint64_t | getCollectedNum (const ExchangeType xchg_type) const |
| Return number of garbage collected packets. More... | |
| CustomCounterPtr | getCounter (const std::string &counter_key) |
| Return specified counter. More... | |
| uint64_t | getDroppedPacketsNum (const ExchangeType xchg_type) const |
| Return total number of dropped packets. More... | |
| double | getMaxDelay (const ExchangeType xchg_type) const |
| Return maximum delay between sent and received packet. More... | |
| double | getMinDelay (const ExchangeType xchg_type) const |
| Return minimum delay between sent and received packet. More... | |
| uint64_t | getOrderedLookups (const ExchangeType xchg_type) const |
| Return number of ordered sent packets lookups. More... | |
| uint64_t | getOrphans (const ExchangeType xchg_type) const |
| Return number of orphan packets. More... | |
| uint64_t | getRcvdPacketsNum (const ExchangeType xchg_type) const |
| Return total number of received packets. More... | |
| uint64_t | getSentPacketsNum (const ExchangeType xchg_type) const |
| Return total number of sent packets. More... | |
| double | getStdDevDelay (const ExchangeType xchg_type) const |
| Return standard deviation of packet delay. More... | |
| boost::posix_time::time_period | getTestPeriod () const |
| Get time period since the start of test. More... | |
| uint64_t | getUnorderedLookups (const ExchangeType xchg_type) const |
| Return number of unordered sent packets lookups. More... | |
| bool | hasExchangeStats (const ExchangeType xchg_type) const |
| Check if the exchange type has been specified. More... | |
| const CustomCounter & | incrementCounter (const std::string &counter_key, const uint64_t value=1) |
| Increment specified counter. More... | |
| boost::shared_ptr< T > | passRcvdPacket (const ExchangeType xchg_type, const boost::shared_ptr< T > &packet) |
| Add new received packet and match with sent packet. More... | |
| void | passSentPacket (const ExchangeType xchg_type, const boost::shared_ptr< T > &packet) |
| Adds new packet to the sent packets list. More... | |
| void | printCustomCounters () const |
| Print names and values of custom counters. More... | |
| void | printIntermediateStats () const |
| Print intermediate statistics. More... | |
| void | printStats () const |
| Print statistics counters for all exchange types. More... | |
| void | printTimestamps () const |
| Print timestamps of all packets. More... | |
Static Public Member Functions | |
| static std::string | exchangeToString (ExchangeType xchg_type) |
| Return name of the exchange. More... | |
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.
| T | class representing DHCPv4 or DHCPv6 packet. |
Definition at line 48 of file bin/perfdhcp/stats_mgr.h.
| typedef boost::shared_ptr<CustomCounter> isc::perfdhcp::StatsMgr< T >::CustomCounterPtr |
Definition at line 112 of file bin/perfdhcp/stats_mgr.h.
| typedef std::map<std::string, CustomCounterPtr> isc::perfdhcp::StatsMgr< T >::CustomCountersMap |
Map containing custom counters.
Definition at line 877 of file bin/perfdhcp/stats_mgr.h.
| typedef CustomCountersMap::const_iterator isc::perfdhcp::StatsMgr< T >::CustomCountersMapIterator |
Iterator for CustomCountersMap.
Definition at line 879 of file bin/perfdhcp/stats_mgr.h.
| typedef std::map<ExchangeType, ExchangeStatsPtr> isc::perfdhcp::StatsMgr< T >::ExchangesMap |
Map containing all specified exchange types.
Definition at line 873 of file bin/perfdhcp/stats_mgr.h.
| typedef ExchangesMap::const_iterator isc::perfdhcp::StatsMgr< T >::ExchangesMapIterator |
Iterator pointing to ExchangesMap.
Definition at line 875 of file bin/perfdhcp/stats_mgr.h.
| typedef boost::shared_ptr<ExchangeStats> isc::perfdhcp::StatsMgr< T >::ExchangeStatsPtr |
Pointer to ExchangeStats.
Definition at line 871 of file bin/perfdhcp/stats_mgr.h.
| enum isc::perfdhcp::StatsMgr::ExchangeType |
DHCP packet exchange types.
Definition at line 115 of file bin/perfdhcp/stats_mgr.h.
|
inline |
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.
| archive_enabled | true indicates that packets archive mode is enabled. |
Definition at line 894 of file bin/perfdhcp/stats_mgr.h.
|
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 943 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 910 of file bin/perfdhcp/stats_mgr.h.
References isc_throw.
|
inline |
Check if any packet drops occurred.
Definition at line 956 of file bin/perfdhcp/stats_mgr.h.
|
inlinestatic |
Return name of the exchange.
Method returns name of the specified exchange type. This function is mainly for logging purposes.
| xchg_type | exchange type. |
Definition at line 1224 of file bin/perfdhcp/stats_mgr.h.
References isc::perfdhcp::StatsMgr< T >::XCHG_DO, isc::perfdhcp::StatsMgr< T >::XCHG_RA, isc::perfdhcp::StatsMgr< T >::XCHG_RL, isc::perfdhcp::StatsMgr< T >::XCHG_RN, isc::perfdhcp::StatsMgr< T >::XCHG_RNA, isc::perfdhcp::StatsMgr< T >::XCHG_RR, and isc::perfdhcp::StatsMgr< T >::XCHG_SA.
Referenced by isc::perfdhcp::StatsMgr< T >::printStats(), and isc::perfdhcp::StatsMgr< T >::printTimestamps().
|
inline |
Return average packet delay.
Method returns average packet delay for specified exchange type.
Definition at line 1074 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 1112 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 1197 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 974 of file bin/perfdhcp/stats_mgr.h.
References isc_throw.
Referenced by isc::perfdhcp::StatsMgr< T >::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 1182 of file bin/perfdhcp/stats_mgr.h.
|
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 1063 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 1050 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 1143 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 1098 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 1169 of file bin/perfdhcp/stats_mgr.h.
|
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 1156 of file bin/perfdhcp/stats_mgr.h.
|
inline |
Return standard deviation of packet delay.
Method returns standard deviation of packet delay for specified exchange type.
Definition at line 1085 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 1210 of file bin/perfdhcp/stats_mgr.h.
|
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 1127 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 932 of file bin/perfdhcp/stats_mgr.h.
|
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 990 of file bin/perfdhcp/stats_mgr.h.
References isc::perfdhcp::StatsMgr< T >::getCounter().
Here is the call graph for this function:
|
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 1027 of file bin/perfdhcp/stats_mgr.h.
|
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 1007 of file bin/perfdhcp/stats_mgr.h.
|
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 1336 of file bin/perfdhcp/stats_mgr.h.
References isc_throw.
|
inline |
Print intermediate statistics.
Method prints intermediate statistics for all exchanges. Statistics includes sent, received and dropped packets counters.
Definition at line 1281 of file bin/perfdhcp/stats_mgr.h.
|
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 1258 of file bin/perfdhcp/stats_mgr.h.
References isc::perfdhcp::StatsMgr< T >::exchangeToString(), and isc_throw.
Here is the call graph for this function:
|
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 1313 of file bin/perfdhcp/stats_mgr.h.
References isc::perfdhcp::StatsMgr< T >::exchangeToString(), and isc_throw.
Here is the call graph for this function: