aboutsummaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2019-09-17 12:41:47 +0200
committerOndrej Fabry <ofabry@cisco.com>2019-10-03 12:54:22 +0200
commit809b69ea4a90455445c34bbad7d8e5fea5cf3462 (patch)
treeba4b94339ac83908e2d9933692dc373929380aa7 /api
parent48198748bdfcc7d30c794cdac19de822da53f840 (diff)
Optimizations for statsclient
- this dramatically improves performance for stats data collection - memory allocation is now done only when stat dirs change - updating prepared stat dir does not need to allocate memory - created integration test for testing stats client - added NumWorkerThreads and VectorRatePerWorker to SystemStats - added ReduceSimpleCounterStatIndex, ReduceCombinedCounterStatIndex for aggregating specific index Change-Id: I702731a69024ab5dd0832bb5cfe2773a987359e5 Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'api')
-rw-r--r--api/stats.go66
1 files changed, 38 insertions, 28 deletions
diff --git a/api/stats.go b/api/stats.go
index e254eae..2850b5f 100644
--- a/api/stats.go
+++ b/api/stats.go
@@ -14,13 +14,24 @@
package api
+// StatsProvider provides methods for retrieving statistics.
+type StatsProvider interface {
+ GetSystemStats(*SystemStats) error
+ GetNodeStats(*NodeStats) error
+ GetInterfaceStats(*InterfaceStats) error
+ GetErrorStats(*ErrorStats) error
+ GetBufferStats(*BufferStats) error
+}
+
// SystemStats represents global system statistics.
type SystemStats struct {
- VectorRate float64
- InputRate float64
- LastUpdate float64
- LastStatsClear float64
- Heartbeat float64
+ VectorRate uint64
+ NumWorkerThreads uint64
+ VectorRatePerWorker []uint64
+ InputRate uint64
+ LastUpdate uint64
+ LastStatsClear uint64
+ Heartbeat uint64
}
// NodeStats represents per node statistics.
@@ -49,19 +60,18 @@ type InterfaceCounters struct {
InterfaceIndex uint32
InterfaceName string // requires VPP 19.04+
- RxPackets uint64
- RxBytes uint64
- RxErrors uint64
- TxPackets uint64
- TxBytes uint64
- TxErrors uint64
+ Rx InterfaceCounterCombined
+ Tx InterfaceCounterCombined
- RxUnicast [2]uint64 // packets[0], bytes[1]
- RxMulticast [2]uint64 // packets[0], bytes[1]
- RxBroadcast [2]uint64 // packets[0], bytes[1]
- TxUnicastMiss [2]uint64 // packets[0], bytes[1]
- TxMulticast [2]uint64 // packets[0], bytes[1]
- TxBroadcast [2]uint64 // packets[0], bytes[1]
+ RxErrors uint64
+ TxErrors uint64
+
+ RxUnicast InterfaceCounterCombined
+ RxMulticast InterfaceCounterCombined
+ RxBroadcast InterfaceCounterCombined
+ TxUnicast InterfaceCounterCombined
+ TxMulticast InterfaceCounterCombined
+ TxBroadcast InterfaceCounterCombined
Drops uint64
Punts uint64
@@ -69,6 +79,13 @@ type InterfaceCounters struct {
IP6 uint64
RxNoBuf uint64
RxMiss uint64
+ Mpls uint64
+}
+
+// InterfaceCounterCombined defines combined counters for interfaces.
+type InterfaceCounterCombined struct {
+ Packets uint64
+ Bytes uint64
}
// ErrorStats represents statistics per error counter.
@@ -79,7 +96,8 @@ type ErrorStats struct {
// ErrorCounter represents error counter.
type ErrorCounter struct {
CounterName string
- Value uint64
+
+ Value uint64
}
// BufferStats represents statistics per buffer pool.
@@ -89,17 +107,9 @@ type BufferStats struct {
// BufferPool represents buffer pool.
type BufferPool struct {
- PoolName string
+ PoolName string
+
Cached float64
Used float64
Available float64
}
-
-// StatsProvider provides the methods for getting statistics.
-type StatsProvider interface {
- GetSystemStats() (*SystemStats, error)
- GetNodeStats() (*NodeStats, error)
- GetInterfaceStats() (*InterfaceStats, error)
- GetErrorStats(names ...string) (*ErrorStats, error)
- GetBufferStats() (*BufferStats, error)
-}