X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=api%2Fstats.go;h=d5665b77a7044b6f1a2177aca87430d95dedceb5;hb=4a4094e6cdc7f5d9e5a470ccf82df1c780c7e224;hp=ec623c759e15bdef1f1baad3a5836f7623b3ceb2;hpb=45e38494c1d65ad9178ad15f4048c0ab16f98b77;p=govpp.git diff --git a/api/stats.go b/api/stats.go index ec623c7..d5665b7 100644 --- a/api/stats.go +++ b/api/stats.go @@ -1,12 +1,38 @@ +// Copyright (c) 2019 Cisco and/or its affiliates. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at: +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + 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 + GetMemoryStats(*MemoryStats) 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. @@ -17,8 +43,7 @@ type NodeStats struct { // NodeCounters represents node counters. type NodeCounters struct { NodeIndex uint32 - // TODO: node name is not currently retrievable via stats API (will be most likely added in 19.04) - //NodeName string + NodeName string // requires VPP 19.04+ Clocks uint64 Vectors uint64 @@ -34,22 +59,20 @@ type InterfaceStats struct { // InterfaceCounters represents interface counters. type InterfaceCounters struct { InterfaceIndex uint32 - // TODO: interface name is not currently retrievable via stats API (will be most likely added in 19.04) - //InterfaceName string - - RxPackets uint64 - RxBytes uint64 - RxErrors uint64 - TxPackets uint64 - TxBytes uint64 - TxErrors uint64 - - 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] + InterfaceName string // requires VPP 19.04+ + + Rx InterfaceCounterCombined + Tx InterfaceCounterCombined + + RxErrors uint64 + TxErrors uint64 + + RxUnicast InterfaceCounterCombined + RxMulticast InterfaceCounterCombined + RxBroadcast InterfaceCounterCombined + TxUnicast InterfaceCounterCombined + TxMulticast InterfaceCounterCombined + TxBroadcast InterfaceCounterCombined Drops uint64 Punts uint64 @@ -57,6 +80,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. @@ -67,13 +97,43 @@ type ErrorStats struct { // ErrorCounter represents error counter. type ErrorCounter struct { CounterName string - Value uint64 + + Values []uint64 } -// StatsProvider provides the methods for getting statistics. -type StatsProvider interface { - GetSystemStats() (*SystemStats, error) - GetNodeStats() (*NodeStats, error) - GetInterfaceStats() (*InterfaceStats, error) - GetErrorStats(names ...string) (*ErrorStats, error) +// BufferStats represents statistics per buffer pool. +type BufferStats struct { + Buffer map[string]BufferPool +} + +// BufferPool represents buffer pool. +type BufferPool struct { + PoolName string + + Cached float64 + Used float64 + Available float64 +} + +// MemoryStats represents memory stats segment counters. +type MemoryStats struct { + // Deprecated: /mem/statseg total memory directory + Total float64 + // Deprecated: /mem/statseg used memory directory + Used float64 + + // stat/main memory usage per-heap + Stat map[int]MemoryCounters + Main map[int]MemoryCounters +} + +// MemoryCounters represents values of various memory usage +type MemoryCounters struct { + Total uint64 + Used uint64 + Free uint64 + UsedMMap uint64 + TotalAlloc uint64 + FreeChunks uint64 + Releasable uint64 }