Start recording object updates per second statistic (analogue of agent updates per secod) and expose via monitoring module as ObjectUpdatePerSecondMonitor
A useful diagnostic to find out how object updates are burdening a sceneremove-scene-viewer
parent
f138a2056e
commit
fe3594c5ea
|
@ -200,6 +200,14 @@ namespace OpenSim.Region.CoreModules.Framework.Monitoring
|
|||
m => m.Scene.StatsReporter.LastReportedSimStats[3],
|
||||
m => string.Format("{0} per second", m.GetValue())));
|
||||
|
||||
m_monitors.Add(
|
||||
new GenericMonitor(
|
||||
m_scene,
|
||||
"ObjectUpdatesPerSecondMonitor",
|
||||
"Object Updates",
|
||||
m => m.Scene.StatsReporter.LastReportedObjectUpdates,
|
||||
m => string.Format("{0} per second", m.GetValue())));
|
||||
|
||||
m_monitors.Add(
|
||||
new GenericMonitor(
|
||||
m_scene,
|
||||
|
|
|
@ -3018,6 +3018,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
//isattachment = ParentGroup.RootPart.IsAttachment;
|
||||
|
||||
remoteClient.SendPrimUpdate(this, PrimUpdateFlags.FullUpdate);
|
||||
ParentGroup.Scene.StatsReporter.AddObjectUpdates(1);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -4792,7 +4793,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
// Causes this thread to dig into the Client Thread Data.
|
||||
// Remember your locking here!
|
||||
remoteClient.SendPrimUpdate(this, PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity | PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity);
|
||||
remoteClient.SendPrimUpdate(
|
||||
this,
|
||||
PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity
|
||||
| PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity);
|
||||
|
||||
ParentGroup.Scene.StatsReporter.AddObjectUpdates(1);
|
||||
}
|
||||
|
||||
public void AddScriptLPS(int count)
|
||||
|
|
|
@ -86,6 +86,15 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
get { return lastReportedSimFPS; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Number of object updates performed in the last stats cycle
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This isn't sent out to the client but it is very useful data to detect whether viewers are being sent a
|
||||
/// large number of object updates.
|
||||
/// </remarks>
|
||||
public float LastReportedObjectUpdates { get; private set; }
|
||||
|
||||
public float[] LastReportedSimStats
|
||||
{
|
||||
get { return lastReportedSimStats; }
|
||||
|
@ -100,8 +109,17 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
private float lastReportedSimFPS = 0;
|
||||
private float[] lastReportedSimStats = new float[21];
|
||||
private float m_pfps = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Number of agent updates requested in this stats cycle
|
||||
/// </summary>
|
||||
private int m_agentUpdates = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Number of object updates requested in this stats cycle
|
||||
/// </summary>
|
||||
private int m_objectUpdates;
|
||||
|
||||
private int m_frameMS = 0;
|
||||
private int m_netMS = 0;
|
||||
private int m_agentMS = 0;
|
||||
|
@ -291,6 +309,10 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
{
|
||||
handlerSendStatResult(simStats);
|
||||
}
|
||||
|
||||
// Extra statistics that aren't currently sent to clients
|
||||
LastReportedObjectUpdates = m_objectUpdates / statsUpdateFactor;
|
||||
|
||||
resetvalues();
|
||||
}
|
||||
}
|
||||
|
@ -301,6 +323,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_fps = 0;
|
||||
m_pfps = 0;
|
||||
m_agentUpdates = 0;
|
||||
m_objectUpdates = 0;
|
||||
//m_inPacketsPerSecond = 0;
|
||||
//m_outPacketsPerSecond = 0;
|
||||
m_unAckedBytes = 0;
|
||||
|
@ -382,6 +405,11 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_pfps += frames;
|
||||
}
|
||||
|
||||
public void AddObjectUpdates(int numUpdates)
|
||||
{
|
||||
m_objectUpdates += numUpdates;
|
||||
}
|
||||
|
||||
public void AddAgentUpdates(int numUpdates)
|
||||
{
|
||||
m_agentUpdates += numUpdates;
|
||||
|
|
Loading…
Reference in New Issue