so no real need for Maintenance thread.. so removed
parent
2d93008bd9
commit
02b51b84f4
|
@ -345,11 +345,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
protected set;
|
protected set;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Current maintenance run number
|
|
||||||
/// </summary>
|
|
||||||
public uint MaintenanceRun { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Frame time
|
/// Frame time
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
@ -361,14 +356,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// see SimStatsReporter.cs
|
// see SimStatsReporter.cs
|
||||||
public bool Normalized55FPS { get; private set; }
|
public bool Normalized55FPS { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The minimum length of time in seconds that will be taken for a scene frame.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Always derived from MinFrameTicks.
|
|
||||||
/// </remarks>
|
|
||||||
public float MinMaintenanceTime { get; private set; }
|
|
||||||
|
|
||||||
private int m_update_physics = 1;
|
private int m_update_physics = 1;
|
||||||
private int m_update_entitymovement = 1;
|
private int m_update_entitymovement = 1;
|
||||||
private int m_update_objects = 1;
|
private int m_update_objects = 1;
|
||||||
|
@ -377,7 +364,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private int m_update_backup = 200;
|
private int m_update_backup = 200;
|
||||||
|
|
||||||
private int m_update_terrain = 1000;
|
private int m_update_terrain = 1000;
|
||||||
private int m_update_land = 10;
|
|
||||||
|
|
||||||
private int m_update_coarse_locations = 5;
|
private int m_update_coarse_locations = 5;
|
||||||
private int m_update_temp_cleaning = 180;
|
private int m_update_temp_cleaning = 180;
|
||||||
|
@ -398,11 +384,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private int m_lastFrameTick;
|
private int m_lastFrameTick;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Tick at which the last maintenance run occurred.
|
|
||||||
/// </summary>
|
|
||||||
private int m_lastMaintenanceTick;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Total script execution time (in Stopwatch Ticks) since the last frame
|
/// Total script execution time (in Stopwatch Ticks) since the last frame
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -419,11 +400,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private ManualResetEvent m_updateWaitEvent = new ManualResetEvent(false);
|
private ManualResetEvent m_updateWaitEvent = new ManualResetEvent(false);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Used to control maintenance thread runs.
|
|
||||||
/// </summary>
|
|
||||||
private ManualResetEvent m_maintenanceWaitEvent = new ManualResetEvent(false);
|
|
||||||
|
|
||||||
// TODO: Possibly stop other classes being able to manipulate this directly.
|
// TODO: Possibly stop other classes being able to manipulate this directly.
|
||||||
private SceneGraph m_sceneGraph;
|
private SceneGraph m_sceneGraph;
|
||||||
private readonly Timer m_restartTimer = new Timer(15000); // Wait before firing
|
private readonly Timer m_restartTimer = new Timer(15000); // Wait before firing
|
||||||
|
@ -467,7 +443,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// Is the scene active?
|
/// Is the scene active?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// If false, maintenance and update loops are not being run, though after setting to false update may still
|
/// If false, update loop is not being run, though after setting to false update may still
|
||||||
/// be active for a period (and IsRunning will still be true). Updates can still be triggered manually if
|
/// be active for a period (and IsRunning will still be true). Updates can still be triggered manually if
|
||||||
/// the scene is not active.
|
/// the scene is not active.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
@ -497,7 +473,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public bool IsRunning { get { return m_isRunning; } }
|
public bool IsRunning { get { return m_isRunning; } }
|
||||||
private volatile bool m_isRunning;
|
private volatile bool m_isRunning;
|
||||||
|
|
||||||
// private int m_lastUpdate;
|
|
||||||
private bool m_firstHeartbeat = true;
|
private bool m_firstHeartbeat = true;
|
||||||
|
|
||||||
// private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
|
// private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
|
||||||
|
@ -853,7 +828,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
FrameTimeWarnPercent = 60;
|
FrameTimeWarnPercent = 60;
|
||||||
FrameTimeCritPercent = 40;
|
FrameTimeCritPercent = 40;
|
||||||
Normalized55FPS = true;
|
Normalized55FPS = true;
|
||||||
MinMaintenanceTime = 1;
|
|
||||||
SeeIntoRegion = true;
|
SeeIntoRegion = true;
|
||||||
|
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
@ -1614,62 +1588,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// alarms for scenes with many objects.
|
// alarms for scenes with many objects.
|
||||||
Update(1);
|
Update(1);
|
||||||
|
|
||||||
WorkManager.StartThread(
|
|
||||||
Maintenance, string.Format("Maintenance ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false, true);
|
|
||||||
|
|
||||||
Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true;
|
Watchdog.GetCurrentThreadInfo().AlarmIfTimeout = true;
|
||||||
m_lastFrameTick = Util.EnvironmentTickCount();
|
m_lastFrameTick = Util.EnvironmentTickCount();
|
||||||
Update(-1);
|
Update(-1);
|
||||||
|
|
||||||
Watchdog.RemoveThread();
|
Watchdog.RemoveThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Maintenance()
|
|
||||||
{
|
|
||||||
DoMaintenance(-1);
|
|
||||||
|
|
||||||
Watchdog.RemoveThread();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DoMaintenance(int runs)
|
|
||||||
{
|
|
||||||
long? endRun = null;
|
|
||||||
int runtc, tmpMS;
|
|
||||||
int previousMaintenanceTick;
|
|
||||||
|
|
||||||
if (runs >= 0)
|
|
||||||
endRun = MaintenanceRun + runs;
|
|
||||||
|
|
||||||
|
|
||||||
while (!m_shuttingDown && ((endRun == null && Active) || MaintenanceRun < endRun))
|
|
||||||
{
|
|
||||||
runtc = Util.EnvironmentTickCount();
|
|
||||||
++MaintenanceRun;
|
|
||||||
|
|
||||||
// m_log.DebugFormat("[SCENE]: Maintenance run {0} in {1}", MaintenanceRun, Name);
|
|
||||||
|
|
||||||
Watchdog.UpdateThread();
|
|
||||||
|
|
||||||
previousMaintenanceTick = m_lastMaintenanceTick;
|
|
||||||
m_lastMaintenanceTick = Util.EnvironmentTickCount();
|
|
||||||
runtc = Util.EnvironmentTickCountSubtract(m_lastMaintenanceTick, runtc);
|
|
||||||
runtc = (int)(MinMaintenanceTime * 1000) - runtc;
|
|
||||||
|
|
||||||
if (runtc > 0)
|
|
||||||
m_maintenanceWaitEvent.WaitOne(runtc);
|
|
||||||
|
|
||||||
// Optionally warn if a frame takes double the amount of time that it should.
|
|
||||||
if (DebugUpdates
|
|
||||||
&& Util.EnvironmentTickCountSubtract(
|
|
||||||
m_lastMaintenanceTick, previousMaintenanceTick) > (int)(MinMaintenanceTime * 1000 * 2))
|
|
||||||
m_log.WarnFormat(
|
|
||||||
"[SCENE]: Maintenance took {0} ms (desired max {1} ms) in {2}",
|
|
||||||
Util.EnvironmentTickCountSubtract(m_lastMaintenanceTick, previousMaintenanceTick),
|
|
||||||
MinMaintenanceTime * 1000,
|
|
||||||
RegionInfo.RegionName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Update(int frames)
|
public override void Update(int frames)
|
||||||
{
|
{
|
||||||
long? endFrame = null;
|
long? endFrame = null;
|
||||||
|
|
Loading…
Reference in New Issue