sync logging added to RegionSyncModule

dsg
Robert Adams 2011-03-11 15:42:39 -08:00
parent 7f6529af4e
commit 9edbbf2728
2 changed files with 64 additions and 7 deletions

View File

@ -31,7 +31,7 @@ using OpenMetaverse.StructuredData;
namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
{ {
[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AttachmentsModule")] [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "AttachmentsModule")]
public class RegionSyncModule : INonSharedRegionModule, IRegionSyncModule, ICommandableModule public class RegionSyncModule : INonSharedRegionModule, IRegionSyncModule, ICommandableModule, ISyncStatistics
//public class RegionSyncModule : IRegionModule, IRegionSyncModule, ICommandableModule //public class RegionSyncModule : IRegionModule, IRegionSyncModule, ICommandableModule
{ {
#region INonSharedRegionModule #region INonSharedRegionModule
@ -79,7 +79,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
SyncStatisticCollector.LogDirectory = m_sysConfig.GetString("SyncLogDirectory", "."); SyncStatisticCollector.LogDirectory = m_sysConfig.GetString("SyncLogDirectory", ".");
SyncStatisticCollector.LogInterval = m_sysConfig.GetInt("SyncLogInterval", 5000); SyncStatisticCollector.LogInterval = m_sysConfig.GetInt("SyncLogInterval", 5000);
SyncStatisticCollector.LogMaxFileTimeMin = m_sysConfig.GetInt("SyncLogMaxFileTimeMin", 5); SyncStatisticCollector.LogMaxFileTimeMin = m_sysConfig.GetInt("SyncLogMaxFileTimeMin", 5);
SyncStatisticCollector.LogFileHeader = m_sysConfig.GetString("SyncLogFileHeader", "stats-"); SyncStatisticCollector.LogFileHeader = m_sysConfig.GetString("SyncLogFileHeader", "sync-");
} }
//Called after Initialise() //Called after Initialise()
@ -129,6 +129,9 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
//Start symmetric synchronization initialization automatically //Start symmetric synchronization initialization automatically
//SyncStart(null); //SyncStart(null);
// connect to statistics system
SyncStatisticCollector.Register(this);
} }
@ -724,6 +727,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
sog.UpdateTaintedBucketSyncInfo(bucketName, DateTime.Now.Ticks); //this update the timestamp and clear the taint info of the bucket sog.UpdateTaintedBucketSyncInfo(bucketName, DateTime.Now.Ticks); //this update the timestamp and clear the taint info of the bucket
string sogxml = SceneObjectSerializer.ToXml2Format(sog); string sogxml = SceneObjectSerializer.ToXml2Format(sog);
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedObject, sogxml); SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedObject, sogxml);
lock (m_stats) m_statSOGBucketOut++;
SendObjectUpdateToRelevantSyncConnectors(sog, syncMsg); SendObjectUpdateToRelevantSyncConnectors(sog, syncMsg);
} }
} }
@ -769,6 +773,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedBucketProperties, OSDParser.SerializeJsonString(data)); SymmetricSyncMessage syncMsg = new SymmetricSyncMessage(SymmetricSyncMessage.MsgType.UpdatedBucketProperties, OSDParser.SerializeJsonString(data));
//m_log.DebugFormat("{0}: PhysBucketSender for {1}, pos={2}", LogHeader, updatedPart.UUID.ToString(), pa.Position.ToString()); //m_log.DebugFormat("{0}: PhysBucketSender for {1}, pos={2}", LogHeader, updatedPart.UUID.ToString(), pa.Position.ToString());
lock (m_stats) m_statPhysBucketOut++;
SendObjectUpdateToRelevantSyncConnectors(updatedPart, syncMsg); SendObjectUpdateToRelevantSyncConnectors(updatedPart, syncMsg);
} }
} }
@ -1172,14 +1177,13 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
m_scene.EventManager.TriggerOnSymmetricSyncStop(); m_scene.EventManager.TriggerOnSymmetricSyncStop();
} }
} }
} }
private void SyncStatus(Object[] args) private void SyncStatus(Object[] args)
{ {
int connectorCount = 0; int connectorCount = 0;
m_log.Warn(LogHeader + ": " + this.StatisticTitle());
m_log.Warn(LogHeader + ": " + this.StatisticLine(true));
ForEachSyncConnector(delegate(SyncConnector connector) ForEachSyncConnector(delegate(SyncConnector connector)
{ {
if (connectorCount++ == 0) if (connectorCount++ == 0)
@ -1395,6 +1399,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
/// <param name="senderActorID">ActorID of the sender</param> /// <param name="senderActorID">ActorID of the sender</param>
public void HandleIncomingMessage(SymmetricSyncMessage msg, string senderActorID) public void HandleIncomingMessage(SymmetricSyncMessage msg, string senderActorID)
{ {
lock (m_stats) m_statMsgsIn++;
//Added senderActorID, so that we don't have to include actorID in sync messages -- TODO //Added senderActorID, so that we don't have to include actorID in sync messages -- TODO
switch (msg.Type) switch (msg.Type)
{ {
@ -1502,6 +1507,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
{ {
string sogxml = Encoding.ASCII.GetString(msg.Data, 0, msg.Length); string sogxml = Encoding.ASCII.GetString(msg.Data, 0, msg.Length);
SceneObjectGroup sog = SceneObjectSerializer.FromXml2Format(sogxml); SceneObjectGroup sog = SceneObjectSerializer.FromXml2Format(sogxml);
lock (m_stats) m_statSOGBucketIn++;
if (sog.IsDeleted) if (sog.IsDeleted)
{ {
@ -1542,6 +1548,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
return; return;
} }
lock (m_stats) m_statPhysBucketIn++;
UUID partUUID = data["UUID"].AsUUID(); UUID partUUID = data["UUID"].AsUUID();
string bucketName = data["Bucket"].AsString(); string bucketName = data["Bucket"].AsString();
@ -1774,6 +1782,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
return; return;
} }
lock (m_stats) m_statEventIn++;
string init_actorID = data["actorID"].AsString(); string init_actorID = data["actorID"].AsString();
ulong evSeqNum = data["seqNum"].AsULong(); ulong evSeqNum = data["seqNum"].AsULong();
@ -2401,6 +2410,7 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
SymmetricSyncMessage rsm = new SymmetricSyncMessage(msgType, OSDParser.SerializeJsonString(data)); SymmetricSyncMessage rsm = new SymmetricSyncMessage(msgType, OSDParser.SerializeJsonString(data));
//send to actors who are interested in the event //send to actors who are interested in the event
lock (m_stats) m_statEventOut++;
SendSceneEventToRelevantSyncConnectors(m_actorID, rsm); SendSceneEventToRelevantSyncConnectors(m_actorID, rsm);
} }
@ -2422,6 +2432,50 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
#endregion //RegionSyncModule members and functions #endregion //RegionSyncModule members and functions
#region ISyncStatistics
private object m_stats = new object();
private int m_statMsgsIn = 0;
private int m_statMsgsOut = 0;
private int m_statSOGBucketIn = 0;
private int m_statSOGBucketOut = 0;
private int m_statPhysBucketIn = 0;
private int m_statPhysBucketOut = 0;
private int m_statEventIn = 0;
private int m_statEventOut = 0;
public string StatisticIdentifier()
{
// RegionSyncModule(actor/region)
return "RegionSyncModule" + "(" + ActorID + "/" + m_scene.RegionInfo.RegionName + ")";
}
public string StatisticLine(bool clearFlag)
{
string statLine = "";
lock (m_stats)
{
statLine = String.Format("{0},{1},{2},{3},{4},{5},{6},{7}",
m_statMsgsIn, m_statMsgsOut,
m_statSOGBucketIn, m_statSOGBucketOut,
m_statPhysBucketIn, m_statPhysBucketOut,
m_statEventIn, m_statEventOut
);
if (clearFlag)
{
m_statMsgsIn = m_statMsgsOut = 0;
m_statSOGBucketIn = m_statSOGBucketOut = 0;
m_statPhysBucketIn = m_statPhysBucketOut = 0;
m_statEventIn = m_statEventOut = 0;
}
}
return statLine;
}
public string StatisticTitle()
{
return "MsgsIn,MsgsOut,SOGIn,SOGOut,PhysIn,PhysOut,EventIn,EventOut";
}
#endregion ISyncStatistics
} }
public class RegionSyncListenerInfo public class RegionSyncListenerInfo

View File

@ -2795,7 +2795,7 @@ namespace OpenSim.Region.Framework.Scenes
m_parentGroup.AbsolutePosition = newpos; m_parentGroup.AbsolutePosition = newpos;
return; return;
} }
m_log.DebugFormat("[PHYSICS]: TerseUpdate: UUID={0}, newpos={1}", PhysActor.UUID.ToString(), newpos.ToString()); // m_log.DebugFormat("[PHYSICS]: TerseUpdate: UUID={0}, newpos={1}", PhysActor.UUID.ToString(), newpos.ToString());
//m_parentGroup.RootPart.m_groupPosition = newpos; //m_parentGroup.RootPart.m_groupPosition = newpos;
} }
//ScheduleTerseUpdate(); //ScheduleTerseUpdate();
@ -5513,7 +5513,7 @@ namespace OpenSim.Region.Framework.Scenes
SceneObjectPart localPart = this; SceneObjectPart localPart = this;
PhysicsActor pa = localPart.PhysActor; PhysicsActor pa = localPart.PhysActor;
//m_log.DebugFormat("{0}: PhysicsBucketUpdateProcessor. pos={1}", "[SCENE OBJECT PART]", data["Position"].AsVector3().ToString()); // m_log.DebugFormat("{0}: PhysicsBucketUpdateProcessor. pos={1}", "[SCENE OBJECT PART]", data["Position"].AsVector3().ToString());
lock (m_bucketUpdateLocks[bucketName]) lock (m_bucketUpdateLocks[bucketName])
{ {
@ -5612,12 +5612,15 @@ namespace OpenSim.Region.Framework.Scenes
{ {
bucketSynInfo.TaintBucket(); bucketSynInfo.TaintBucket();
} }
// m_log.DebugFormat("{0}: TaintBucketSyncInfo: FullUpdate", "[SCENE OBJECT PART]");
} }
else else
{ {
string bucketName = m_primPropertyBucketMap[property]; string bucketName = m_primPropertyBucketMap[property];
//m_bucketSyncTainted[bucketName] = true; //m_bucketSyncTainted[bucketName] = true;
m_bucketSyncInfoList[bucketName].TaintBucket(); m_bucketSyncInfoList[bucketName].TaintBucket();
// m_log.DebugFormat("{0}: TaintBucketSyncInfo: tainting bucket {1} for {2}",
// "[SCENE OBJECT PART]", bucketName, property.ToString());
} }
} }
} }