Add IncomingPacketsResentCount clientstack statistics

This records how many packets were indicated to be resends by clients
Not 100% reliable since clients can lie about resends, but usually would indicate if clients are not receiving UDP acks at all or in a manner they consider timely.
link-sitting
Justin Clark-Casey (justincc) 2013-11-06 01:02:20 +00:00
parent caf2abe311
commit 8e1bf55e7b
1 changed files with 23 additions and 0 deletions

View File

@ -132,6 +132,19 @@ namespace OpenSim.Region.ClientStack.LindenUDP
stat => stat.Value = m_udpServer.IncomingOrphanedPacketCount, stat => stat.Value = m_udpServer.IncomingOrphanedPacketCount,
StatVerbosity.Info)); StatVerbosity.Info));
StatsManager.RegisterStat(
new Stat(
"IncomingPacketsResentCount",
"Number of inbound packets that clients indicate are resends.",
"",
"",
"clientstack",
scene.Name,
StatType.Pull,
MeasuresOfInterest.AverageChangeOverTime,
stat => stat.Value = m_udpServer.IncomingPacketsResentCount,
StatVerbosity.Debug));
StatsManager.RegisterStat( StatsManager.RegisterStat(
new Stat( new Stat(
"OutgoingUDPSendsCount", "OutgoingUDPSendsCount",
@ -317,6 +330,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// </summary> /// </summary>
internal int PacketsSentCount { get; set; } internal int PacketsSentCount { get; set; }
/// <summary>
/// Record how many incoming packets are indicated as resends by clients.
/// </summary>
internal int IncomingPacketsResentCount { get; set; }
/// <summary> /// <summary>
/// Record how many inbound packets could not be recognized as LLUDP packets. /// Record how many inbound packets could not be recognized as LLUDP packets.
/// </summary> /// </summary>
@ -1467,6 +1485,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
#region Incoming Packet Accounting #region Incoming Packet Accounting
// We're not going to worry about interlock yet since its not currently critical that this total count
// is 100% correct
if (packet.Header.Resent)
IncomingPacketsResentCount++;
// Check the archive of received reliable packet IDs to see whether we already received this packet // Check the archive of received reliable packet IDs to see whether we already received this packet
if (packet.Header.Reliable && !udpClient.PacketArchive.TryEnqueue(packet.Header.Sequence)) if (packet.Header.Reliable && !udpClient.PacketArchive.TryEnqueue(packet.Header.Sequence))
{ {