* Added Agent Time, Pending Downloads, and made Agent Updates/Sec actually accurate.

* We're only missing, the script related sim stats counters and the Images time counter and the Pending Uploads counter.  The rest of them are actually implemented now.
ThreadPoolClientBranch
Teravus Ovares 2008-01-16 05:48:40 +00:00
parent 5958192398
commit 5dd741267e
4 changed files with 93 additions and 10 deletions

View File

@ -137,7 +137,9 @@ namespace OpenSim.Region.Environment.Modules
if (TryGetUserTextureService(client.AgentId, out textureService)) if (TryGetUserTextureService(client.AgentId, out textureService))
{ {
textureService.HandleTextureRequest(client, e); textureService.HandleTextureRequest(client, e);
m_scene.AddPendingDownloads(1);
} }
} }
public void ProcessTextureSenders() public void ProcessTextureSenders()
@ -169,6 +171,7 @@ namespace OpenSim.Region.Environment.Modules
private void TextureSent(TextureSender sender) private void TextureSent(TextureSender sender)
{ {
sender.Sending = false; sender.Sending = false;
m_scene.AddPendingDownloads(-1);
} }
} }
} }

View File

@ -607,7 +607,6 @@ namespace OpenSim.Region.Environment.Scenes
m_statsReporter.AddPhysicsFPS(physicsFPS); m_statsReporter.AddPhysicsFPS(physicsFPS);
m_statsReporter.SetTimeDilation(m_timedilation); m_statsReporter.SetTimeDilation(m_timedilation);
m_statsReporter.AddFPS(1); m_statsReporter.AddFPS(1);
m_statsReporter.AddAgentUpdates(1);
m_statsReporter.AddInPackets(0); m_statsReporter.AddInPackets(0);
m_statsReporter.SetRootAgents(m_innerScene.GetRootAgentCount()); m_statsReporter.SetRootAgents(m_innerScene.GetRootAgentCount());
m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount()); m_statsReporter.SetChildAgents(m_innerScene.GetChildAgentCount());
@ -1766,6 +1765,20 @@ namespace OpenSim.Region.Environment.Scenes
m_statsReporter.AddOutPackets(outPackets); m_statsReporter.AddOutPackets(outPackets);
m_statsReporter.AddunAckedBytes(unAckedBytes); m_statsReporter.AddunAckedBytes(unAckedBytes);
} }
public void AddAgentTime(int ms)
{
m_statsReporter.addFrameMS(ms);
m_statsReporter.addAgentMS(ms);
}
public void AddAgentUpdates(int count)
{
m_statsReporter.AddAgentUpdates(count);
}
public void AddPendingDownloads(int count)
{
m_statsReporter.addPendingDownload(count);
}
#endregion #endregion

View File

@ -56,6 +56,8 @@ namespace OpenSim.Region.Environment.Scenes
private float m_sitAvatarHeight = 2.0f; private float m_sitAvatarHeight = 2.0f;
private float m_godlevel = 0; private float m_godlevel = 0;
private int m_perfMonMS = 0;
private bool m_setAlwaysRun = false; private bool m_setAlwaysRun = false;
private Quaternion m_bodyRot; private Quaternion m_bodyRot;
@ -402,12 +404,16 @@ namespace OpenSim.Region.Environment.Scenes
// this.UpdateQuadTreeNode(); // this.UpdateQuadTreeNode();
//this.RefreshQuadObject(); //this.RefreshQuadObject();
//} //}
m_perfMonMS = System.Environment.TickCount;
if (!m_gotAllObjectsInScene) if (!m_gotAllObjectsInScene)
{ {
if (!m_isChildAgent || m_scene.m_sendTasksToChild) if (!m_isChildAgent || m_scene.m_sendTasksToChild)
{ {
m_scene.SendAllSceneObjectsToClient(this); m_scene.SendAllSceneObjectsToClient(this);
m_gotAllObjectsInScene = true; m_gotAllObjectsInScene = true;
} }
} }
if (m_partsUpdateQueue.Count > 0) if (m_partsUpdateQueue.Count > 0)
@ -464,6 +470,8 @@ namespace OpenSim.Region.Environment.Scenes
} }
} }
} }
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
public void forceAvatarMovement(Vector3 position, Quaternion rotation) public void forceAvatarMovement(Vector3 position, Quaternion rotation)
@ -634,6 +642,8 @@ namespace OpenSim.Region.Environment.Scenes
// Must check for standing up even when PhysicsActor is null, // Must check for standing up even when PhysicsActor is null,
// since sitting currently removes avatar from physical scene // since sitting currently removes avatar from physical scene
m_perfMonMS = System.Environment.TickCount;
uint flags = agentData.AgentData.ControlFlags; uint flags = agentData.AgentData.ControlFlags;
LLQuaternion bodyRotation = agentData.AgentData.BodyRotation; LLQuaternion bodyRotation = agentData.AgentData.BodyRotation;
@ -762,6 +772,8 @@ namespace OpenSim.Region.Environment.Scenes
} }
m_scene.EventManager.TriggerOnClientMovement(this); m_scene.EventManager.TriggerOnClientMovement(this);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
/// <summary> /// <summary>
@ -1008,6 +1020,8 @@ namespace OpenSim.Region.Environment.Scenes
/// </summary> /// </summary>
protected void UpdateMovementAnimations(bool update_movementflag) protected void UpdateMovementAnimations(bool update_movementflag)
{ {
if (update_movementflag) if (update_movementflag)
{ {
// Are we moving? // Are we moving?
@ -1081,6 +1095,7 @@ namespace OpenSim.Region.Environment.Scenes
} }
} }
} }
} }
/// <summary> /// <summary>
@ -1093,6 +1108,9 @@ namespace OpenSim.Region.Environment.Scenes
Console.WriteLine("DEBUG: AddNewMovement: child agent"); Console.WriteLine("DEBUG: AddNewMovement: child agent");
return; return;
} }
m_perfMonMS = System.Environment.TickCount;
m_rotation = rotation; m_rotation = rotation;
NewForce newVelocity = new NewForce(); NewForce newVelocity = new NewForce();
Vector3 direc = rotation*vec; Vector3 direc = rotation*vec;
@ -1134,6 +1152,8 @@ namespace OpenSim.Region.Environment.Scenes
newVelocity.Y = direc.y; newVelocity.Y = direc.y;
newVelocity.Z = direc.z; newVelocity.Z = direc.z;
m_forcesList.Add(newVelocity); m_forcesList.Add(newVelocity);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
#endregion #endregion
@ -1190,11 +1210,16 @@ namespace OpenSim.Region.Environment.Scenes
/// <param name="remoteClient"></param> /// <param name="remoteClient"></param>
public void SendTerseUpdateToClient(IClientAPI remoteClient) public void SendTerseUpdateToClient(IClientAPI remoteClient)
{ {
m_perfMonMS = System.Environment.TickCount;
LLVector3 pos = m_pos; LLVector3 pos = m_pos;
LLVector3 vel = Velocity; LLVector3 vel = Velocity;
LLQuaternion rot = new LLQuaternion(m_bodyRot.x, m_bodyRot.y, m_bodyRot.z, m_bodyRot.w); LLQuaternion rot = new LLQuaternion(m_bodyRot.x, m_bodyRot.y, m_bodyRot.z, m_bodyRot.w);
remoteClient.SendAvatarTerseUpdate(m_regionHandle, 64096, LocalId, new LLVector3(pos.X, pos.Y, pos.Z), remoteClient.SendAvatarTerseUpdate(m_regionHandle, 64096, LocalId, new LLVector3(pos.X, pos.Y, pos.Z),
new LLVector3(vel.X, vel.Y, vel.Z), rot); new LLVector3(vel.X, vel.Y, vel.Z), rot);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
m_scene.AddAgentUpdates(1);
} }
/// <summary> /// <summary>
@ -1202,11 +1227,18 @@ namespace OpenSim.Region.Environment.Scenes
/// </summary> /// </summary>
public void SendTerseUpdateToAllClients() public void SendTerseUpdateToAllClients()
{ {
m_perfMonMS = System.Environment.TickCount;
m_scene.Broadcast(SendTerseUpdateToClient); m_scene.Broadcast(SendTerseUpdateToClient);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
public void SendCoarseLocations() public void SendCoarseLocations()
{ {
m_perfMonMS = System.Environment.TickCount;
List<LLVector3> CoarseLocations = new List<LLVector3>(); List<LLVector3> CoarseLocations = new List<LLVector3>();
List<ScenePresence> avatars = m_scene.GetAvatars(); List<ScenePresence> avatars = m_scene.GetAvatars();
for (int i = 0; i < avatars.Count; i++) for (int i = 0; i < avatars.Count; i++)
@ -1218,6 +1250,8 @@ namespace OpenSim.Region.Environment.Scenes
} }
m_controllingClient.SendCoarseLocationUpdate(CoarseLocations); m_controllingClient.SendCoarseLocationUpdate(CoarseLocations);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
public void CoarseLocationChange() public void CoarseLocationChange()
@ -1234,6 +1268,7 @@ namespace OpenSim.Region.Environment.Scenes
remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid,
LocalId, m_pos, m_appearance.TextureEntry.ToBytes(), LocalId, m_pos, m_appearance.TextureEntry.ToBytes(),
m_parentID); m_parentID);
m_scene.AddAgentUpdates(1);
} }
/// <summary> /// <summary>
@ -1241,6 +1276,8 @@ namespace OpenSim.Region.Environment.Scenes
/// </summary> /// </summary>
public void SendFullUpdateToAllClients() public void SendFullUpdateToAllClients()
{ {
m_perfMonMS = System.Environment.TickCount;
List<ScenePresence> avatars = m_scene.GetScenePresences(); List<ScenePresence> avatars = m_scene.GetScenePresences();
foreach (ScenePresence avatar in avatars) foreach (ScenePresence avatar in avatars)
{ {
@ -1254,6 +1291,8 @@ namespace OpenSim.Region.Environment.Scenes
} }
} }
} }
m_scene.AddAgentUpdates(avatars.Count);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
/// <summary> /// <summary>
@ -1289,6 +1328,8 @@ namespace OpenSim.Region.Environment.Scenes
/// </summary> /// </summary>
public void SendAppearanceToAllOtherAgents() public void SendAppearanceToAllOtherAgents()
{ {
m_perfMonMS=System.Environment.TickCount;
m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
{ {
if (scenePresence.UUID != UUID) if (scenePresence.UUID != UUID)
@ -1296,6 +1337,7 @@ namespace OpenSim.Region.Environment.Scenes
m_appearance.SendAppearanceToOtherAgent(scenePresence); m_appearance.SendAppearanceToOtherAgent(scenePresence);
} }
}); });
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS);
} }
public void SendAppearanceToOtherAgent(ScenePresence avatar) public void SendAppearanceToOtherAgent(ScenePresence avatar)

View File

@ -57,6 +57,8 @@ namespace OpenSim.Region.Environment.Scenes
ChildAgents = 14, ChildAgents = 14,
InPacketsPerSecond = 17, InPacketsPerSecond = 17,
OutPacketsPerSecond = 18, OutPacketsPerSecond = 18,
PendingDownloads = 19,
PendingUploads = 20,
UnAckedBytes = 24 UnAckedBytes = 24
} }
@ -64,9 +66,10 @@ namespace OpenSim.Region.Environment.Scenes
private float m_timeDilation = 0; private float m_timeDilation = 0;
private int m_fps = 0; private int m_fps = 0;
private float m_pfps = 0; private float m_pfps = 0;
private float m_agentUpdates = 0; private int m_agentUpdates = 0;
private int m_frameMS = 0; private int m_frameMS = 0;
private int m_netMS = 0; private int m_netMS = 0;
private int m_agentMS = 0;
private int m_physicsMS = 0; private int m_physicsMS = 0;
private int m_imageMS = 0; private int m_imageMS = 0;
private int m_otherMS = 0; private int m_otherMS = 0;
@ -77,8 +80,11 @@ namespace OpenSim.Region.Environment.Scenes
private int m_outPacketsPerSecond = 0; private int m_outPacketsPerSecond = 0;
private int m_activePrim = 0; private int m_activePrim = 0;
private int m_unAckedBytes = 0; private int m_unAckedBytes = 0;
private int m_pendingDownloads = 0;
private int m_pendingUploads = 0;
SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[16];
SimStatsPacket.StatBlock[] sb = new SimStatsPacket.StatBlock[19];
SimStatsPacket.RegionBlock rb = new SimStatsPacket.RegionBlock(); SimStatsPacket.RegionBlock rb = new SimStatsPacket.RegionBlock();
SimStatsPacket statpack = (SimStatsPacket)PacketPool.Instance.GetPacket(PacketType.SimStats); SimStatsPacket statpack = (SimStatsPacket)PacketPool.Instance.GetPacket(PacketType.SimStats);
@ -91,7 +97,7 @@ namespace OpenSim.Region.Environment.Scenes
public SimStatsReporter(RegionInfo regionData) public SimStatsReporter(RegionInfo regionData)
{ {
ReportingRegion = regionData; ReportingRegion = regionData;
for (int i = 0; i<16;i++) for (int i = 0; i<19;i++)
{ {
sb[i] = new SimStatsPacket.StatBlock(); sb[i] = new SimStatsPacket.StatBlock();
} }
@ -157,7 +163,7 @@ namespace OpenSim.Region.Environment.Scenes
sb[3].StatValue = (m_agentUpdates); sb[3].StatValue = (m_agentUpdates);
//sb[4] = sbb; //sb[4] = sbb;
//sb[4].StatID = (uint) Stats.Agents; sb[4].StatID = (uint) Stats.Agents;
sb[4].StatValue = m_rootAgents; sb[4].StatValue = m_rootAgents;
//sb[5] = sbb; //sb[5] = sbb;
@ -188,17 +194,26 @@ namespace OpenSim.Region.Environment.Scenes
sb[12].StatValue = m_otherMS; sb[12].StatValue = m_otherMS;
//sb[8] = sbb; //sb[8] = sbb;
sb[13].StatID = (uint) Stats.InPacketsPerSecond; sb[13].StatID = (uint)Stats.InPacketsPerSecond;
sb[13].StatValue = (m_inPacketsPerSecond); sb[13].StatValue = (m_inPacketsPerSecond);
//sb[9] = sbb; //sb[9] = sbb;
sb[14].StatID = (uint) Stats.OutPacketsPerSecond; sb[14].StatID = (uint)Stats.OutPacketsPerSecond;
sb[14].StatValue = (m_outPacketsPerSecond); sb[14].StatValue = (m_outPacketsPerSecond);
//sb[10] = sbb; //sb[10] = sbb;
sb[15].StatID = (uint) Stats.UnAckedBytes; sb[15].StatID = (uint)Stats.UnAckedBytes;
sb[15].StatValue = m_unAckedBytes; sb[15].StatValue = m_unAckedBytes;
sb[16].StatID = (uint)Stats.AgentMS;
sb[16].StatValue = m_agentMS;
sb[17].StatID = (uint)Stats.PendingDownloads;
sb[17].StatValue = m_pendingDownloads;
sb[18].StatID = (uint)Stats.PendingUploads;
sb[18].StatValue = m_pendingUploads;
statpack.Stat = sb; statpack.Stat = sb;
if (OnSendStatsResult != null) if (OnSendStatsResult != null)
@ -218,6 +233,7 @@ namespace OpenSim.Region.Environment.Scenes
m_outPacketsPerSecond = 0; m_outPacketsPerSecond = 0;
m_unAckedBytes = 0; m_unAckedBytes = 0;
m_frameMS = 0; m_frameMS = 0;
m_agentMS = 0;
m_netMS = 0; m_netMS = 0;
m_physicsMS = 0; m_physicsMS = 0;
m_imageMS = 0; m_imageMS = 0;
@ -266,7 +282,7 @@ namespace OpenSim.Region.Environment.Scenes
m_pfps += frames; m_pfps += frames;
} }
public void AddAgentUpdates(float numUpdates) public void AddAgentUpdates(int numUpdates)
{ {
m_agentUpdates += numUpdates; m_agentUpdates += numUpdates;
} }
@ -294,6 +310,10 @@ namespace OpenSim.Region.Environment.Scenes
{ {
m_netMS += ms; m_netMS += ms;
} }
public void addAgentMS(int ms)
{
m_agentMS += ms;
}
public void addPhysicsMS(int ms) public void addPhysicsMS(int ms)
{ {
m_physicsMS += ms; m_physicsMS += ms;
@ -306,5 +326,10 @@ namespace OpenSim.Region.Environment.Scenes
{ {
m_otherMS += ms; m_otherMS += ms;
} }
public void addPendingDownload(int count)
{
m_pendingDownloads += count;
}
} }
} }