Add start GC memory and end GC memory to object stress test printouts.
This illustrates that references to Scene, SOG, etc. are not currently being released when a stress test ends (or at regression test end in general). This means even the current stress tests take much more memory than they need, a problem that will have to be addressed.iar_mods
parent
1f402fdf5e
commit
c87751a822
|
@ -567,7 +567,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// ~SceneObjectGroup()
|
// ~SceneObjectGroup()
|
||||||
// {
|
// {
|
||||||
// m_log.DebugFormat("[SCENE OBJECT GROUP]: Destructor called for {0}, local id {1}", Name, LocalId);
|
// //m_log.DebugFormat("[SCENE OBJECT GROUP]: Destructor called for {0}, local id {1}", Name, LocalId);
|
||||||
|
// Console.WriteLine("Destructor called for {0}, local id {1}", Name, LocalId);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
|
@ -47,6 +47,11 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
dumpAssetsToFile, config, simulatorVersion)
|
dumpAssetsToFile, config, simulatorVersion)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~TestScene()
|
||||||
|
{
|
||||||
|
Console.WriteLine("TestScene destructor called for {0}", RegionInfo.RegionName);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Temporarily override session authentication for tests (namely teleport).
|
/// Temporarily override session authentication for tests (namely teleport).
|
||||||
|
|
|
@ -131,7 +131,7 @@ namespace OpenSim.Tests.Torture
|
||||||
|
|
||||||
TimeSpan elapsed = DateTime.Now - start;
|
TimeSpan elapsed = DateTime.Now - start;
|
||||||
// long processMemoryAlloc = process.PrivateMemorySize64 - startProcessMemory;
|
// long processMemoryAlloc = process.PrivateMemorySize64 - startProcessMemory;
|
||||||
long processGcAlloc = GC.GetTotalMemory(false) - startGcMemory;
|
long endGcMemory = GC.GetTotalMemory(false);
|
||||||
|
|
||||||
for (int i = 1; i <= objectsToAdd; i++)
|
for (int i = 1; i <= objectsToAdd; i++)
|
||||||
{
|
{
|
||||||
|
@ -141,9 +141,19 @@ namespace OpenSim.Tests.Torture
|
||||||
string.Format("Object {0} could not be retrieved", i));
|
string.Format("Object {0} could not be retrieved", i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This does not work to fire the SceneObjectGroup destructors - something else is hanging on to them.
|
||||||
|
// scene.DeleteAllSceneObjects();
|
||||||
|
|
||||||
Console.WriteLine(
|
Console.WriteLine(
|
||||||
"Took {0}ms, {1}MB to create {2} objects each containing {3} prim(s)",
|
"Took {0}ms, {1}MB ({2} - {3}) to create {4} objects each containing {5} prim(s)",
|
||||||
Math.Round(elapsed.TotalMilliseconds), processGcAlloc / 1024 / 1024, objectsToAdd, primsInEachObject);
|
Math.Round(elapsed.TotalMilliseconds),
|
||||||
|
(endGcMemory - startGcMemory) / 1024 / 1024,
|
||||||
|
endGcMemory / 1024 / 1024,
|
||||||
|
startGcMemory / 1024 / 1024,
|
||||||
|
objectsToAdd,
|
||||||
|
primsInEachObject);
|
||||||
|
|
||||||
|
scene = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -107,6 +107,8 @@ namespace OpenSim.Tests.Torture
|
||||||
m_expectedChatMessages = scriptsToCreate;
|
m_expectedChatMessages = scriptsToCreate;
|
||||||
int startingObjectIdTail = 0x100;
|
int startingObjectIdTail = 0x100;
|
||||||
|
|
||||||
|
GC.Collect();
|
||||||
|
|
||||||
for (int idTail = startingObjectIdTail;idTail < startingObjectIdTail + scriptsToCreate; idTail++)
|
for (int idTail = startingObjectIdTail;idTail < startingObjectIdTail + scriptsToCreate; idTail++)
|
||||||
{
|
{
|
||||||
AddObjectAndScript(idTail, userId);
|
AddObjectAndScript(idTail, userId);
|
||||||
|
|
Loading…
Reference in New Issue