mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
Move expired objects cleaning trigger to the maintenance thread of a region rather than it's main scene loop.
[Startup] default setting UpdateTempCleaningEveryNFrames becomes UpdateTempCleaningEveryNSeconds. Default becomes 180s instead of effective 182s (which would also vary with any changes in frame time or extra long frames)
This commit is contained in:
@@ -377,13 +377,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
private int m_update_physics = 1;
|
||||
private int m_update_entitymovement = 1;
|
||||
private int m_update_objects = 1;
|
||||
private int m_update_temp_cleaning = 1000;
|
||||
private int m_update_presences = 1; // Update scene presence movements
|
||||
private int m_update_events = 1;
|
||||
private int m_update_backup = 200;
|
||||
private int m_update_terrain = 50;
|
||||
// private int m_update_land = 1;
|
||||
private int m_update_coarse_locations = 50;
|
||||
private int m_update_temp_cleaning = 180;
|
||||
|
||||
private int agentMS;
|
||||
private int frameMS;
|
||||
@@ -1014,7 +1014,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
m_update_physics = startupConfig.GetInt( "UpdatePhysicsEveryNFrames", m_update_physics);
|
||||
m_update_presences = startupConfig.GetInt( "UpdateAgentsEveryNFrames", m_update_presences);
|
||||
m_update_terrain = startupConfig.GetInt( "UpdateTerrainEveryNFrames", m_update_terrain);
|
||||
m_update_temp_cleaning = startupConfig.GetInt( "UpdateTempCleaningEveryNFrames", m_update_temp_cleaning);
|
||||
m_update_temp_cleaning = startupConfig.GetInt( "UpdateTempCleaningEveryNSeconds", m_update_temp_cleaning);
|
||||
}
|
||||
|
||||
// FIXME: Ultimately this should be in a module.
|
||||
@@ -1491,7 +1491,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
public void DoMaintenance(int runs)
|
||||
{
|
||||
long? endRun = null;
|
||||
int runtc;
|
||||
int runtc, tmpMS;
|
||||
int previousMaintenanceTick;
|
||||
|
||||
if (runs >= 0)
|
||||
@@ -1505,6 +1505,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
runtc = Util.EnvironmentTickCount();
|
||||
++MaintenanceRun;
|
||||
|
||||
// m_log.DebugFormat("[SCENE]: Maintenance run {0} in {1}", MaintenanceRun, Name);
|
||||
|
||||
// Coarse locations relate to positions of green dots on the mini-map (on a SecondLife client)
|
||||
if (MaintenanceRun % (m_update_coarse_locations / 10) == 0)
|
||||
{
|
||||
@@ -1526,6 +1528,21 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
// Delete temp-on-rez stuff
|
||||
if (MaintenanceRun % m_update_temp_cleaning == 0 && !m_cleaningTemps)
|
||||
{
|
||||
// m_log.DebugFormat("[SCENE]: Running temp-on-rez cleaning in {0}", Name);
|
||||
tmpMS = Util.EnvironmentTickCount();
|
||||
m_cleaningTemps = true;
|
||||
|
||||
Watchdog.RunInThread(
|
||||
delegate { CleanTempObjects(); m_cleaningTemps = false; },
|
||||
string.Format("CleanTempObjects ({0})", Name),
|
||||
null);
|
||||
|
||||
tempOnRezMS = Util.EnvironmentTickCountSubtract(tmpMS);
|
||||
}
|
||||
|
||||
Watchdog.UpdateThread();
|
||||
|
||||
previousMaintenanceTick = m_lastMaintenanceTick;
|
||||
@@ -1564,7 +1581,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
// m_log.DebugFormat("[SCENE]: Processing frame {0} in {1}", Frame, RegionInfo.RegionName);
|
||||
|
||||
agentMS = tempOnRezMS = eventMS = backupMS = terrainMS = landMS = spareMS = 0;
|
||||
agentMS = eventMS = backupMS = terrainMS = landMS = spareMS = 0;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -1617,21 +1634,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (Frame % m_update_presences == 0)
|
||||
m_sceneGraph.UpdatePresences();
|
||||
|
||||
agentMS += Util.EnvironmentTickCountSubtract(tmpMS);
|
||||
|
||||
// Delete temp-on-rez stuff
|
||||
if (Frame % m_update_temp_cleaning == 0 && !m_cleaningTemps)
|
||||
{
|
||||
tmpMS = Util.EnvironmentTickCount();
|
||||
m_cleaningTemps = true;
|
||||
|
||||
Watchdog.RunInThread(
|
||||
delegate { CleanTempObjects(); m_cleaningTemps = false; },
|
||||
string.Format("CleanTempObjects ({0})", Name),
|
||||
null);
|
||||
|
||||
tempOnRezMS = Util.EnvironmentTickCountSubtract(tmpMS);
|
||||
}
|
||||
agentMS += Util.EnvironmentTickCountSubtract(tmpMS);
|
||||
|
||||
if (Frame % m_update_events == 0)
|
||||
{
|
||||
@@ -1701,7 +1704,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
|
||||
EventManager.TriggerRegionHeartbeatEnd(this);
|
||||
otherMS = tempOnRezMS + eventMS + backupMS + terrainMS + landMS;
|
||||
otherMS = eventMS + backupMS + terrainMS + landMS;
|
||||
|
||||
if (!UpdateOnTimer)
|
||||
{
|
||||
|
||||
@@ -180,10 +180,6 @@
|
||||
; This must be a whole number
|
||||
UpdatePhysicsEveryNFrames = 1;
|
||||
|
||||
; Clean up temp on rez objects.
|
||||
; This must be a whole number
|
||||
UpdateTempCleaningEveryNFrames = 1000;
|
||||
|
||||
; Send out the on frame event to modules and other listeners. This should probably never deviate from 1.
|
||||
; This must be a whole number
|
||||
UpdateEventsEveryNFrames = 1;
|
||||
@@ -196,6 +192,10 @@
|
||||
; This must be a whole number
|
||||
UpdateStorageEveryNFrames = 200;
|
||||
|
||||
; Clean up temp on rez objects.
|
||||
; This must be a whole number
|
||||
UpdateTempCleaningEveryNSeconds = 180;
|
||||
|
||||
; ##
|
||||
; ## PRIM STORAGE
|
||||
; ##
|
||||
|
||||
Reference in New Issue
Block a user