Add padding and lost packets to traffic stats (#2349)

* Add padding and lost packets to traffic stats

* aggregate padding packets
This commit is contained in:
Raja Subramanian authored and GitHub committed 2023-12-27 17:40:59 +05:30
1 parent ffac7561c8
commit 15500d8a18
2 files changed
+34 -18

No files matched your search

+1 -1
View File
@@ -144,7 +144,7 @@ func (p *ParticipantTrafficLoad) updateTrafficLoad() *types.TrafficLoad {
trafficTypeStats := make([]*types.TrafficTypeStats, 0, 6)
addTypeStats := func(statsList []*types.TrafficStats, trackType livekit.TrackType, streamType livekit.StreamType) {
agg := types.AggregateTrafficStats(statsList)
agg := types.AggregateTrafficStats(statsList...)
if agg != nil {
trafficTypeStats = append(trafficTypeStats, &types.TrafficTypeStats{
TrackType: trackType,
+33 -17
View File
@@ -21,10 +21,12 @@ import (
)
type TrafficStats struct {
StartTime time.Time
EndTime time.Time
Packets uint32
Bytes uint64
StartTime time.Time
EndTime time.Time
Packets uint32
PacketsLost uint32
PacketsPadding uint32
Bytes uint64
}
type TrafficTypeStats struct {
@@ -49,22 +51,30 @@ func RTPStatsDiffToTrafficStats(before, after *livekit.RTPStats) *TrafficStats {
if before == nil {
return &TrafficStats{
StartTime: startTime.AsTime(),
EndTime: after.EndTime.AsTime(),
Packets: after.Packets,
Bytes: after.Bytes + after.BytesDuplicate + after.BytesPadding,
StartTime: startTime.AsTime(),
EndTime: after.EndTime.AsTime(),
Packets: after.Packets,
PacketsLost: after.PacketsLost,
PacketsPadding: after.PacketsPadding,
Bytes: after.Bytes + after.BytesDuplicate + after.BytesPadding,
}
}
packetsLost := uint32(0)
if after.PacketsLost >= before.PacketsLost {
packetsLost = after.PacketsLost - before.PacketsLost
}
return &TrafficStats{
StartTime: startTime.AsTime(),
EndTime: after.EndTime.AsTime(),
Packets: after.Packets - before.Packets,
Bytes: (after.Bytes + after.BytesDuplicate + after.BytesPadding) - (before.Bytes + before.BytesDuplicate + before.BytesPadding),
StartTime: startTime.AsTime(),
EndTime: after.EndTime.AsTime(),
Packets: after.Packets - before.Packets,
PacketsLost: packetsLost,
PacketsPadding: after.PacketsPadding - before.PacketsPadding,
Bytes: (after.Bytes + after.BytesDuplicate + after.BytesPadding) - (before.Bytes + before.BytesDuplicate + before.BytesPadding),
}
}
func AggregateTrafficStats(statsList []*TrafficStats) *TrafficStats {
func AggregateTrafficStats(statsList ...*TrafficStats) *TrafficStats {
if len(statsList) == 0 {
return nil
}
@@ -73,6 +83,8 @@ func AggregateTrafficStats(statsList []*TrafficStats) *TrafficStats {
endTime := time.Time{}
packets := uint32(0)
packetsLost := uint32(0)
packetsPadding := uint32(0)
bytes := uint64(0)
for _, stats := range statsList {
@@ -85,6 +97,8 @@ func AggregateTrafficStats(statsList []*TrafficStats) *TrafficStats {
}
packets += stats.Packets
packetsLost += stats.PacketsLost
packetsPadding += stats.PacketsPadding
bytes += stats.Bytes
}
@@ -92,10 +106,12 @@ func AggregateTrafficStats(statsList []*TrafficStats) *TrafficStats {
endTime = time.Now()
}
return &TrafficStats{
StartTime: startTime,
EndTime: endTime,
Packets: packets,
Bytes: bytes,
StartTime: startTime,
EndTime: endTime,
Packets: packets,
PacketsLost: packetsLost,
PacketsPadding: packetsPadding,
Bytes: bytes,
}
}