Expose minimum frame time and update periods for experimentation.

Settings are at bottom of [Startup] in OpenSimDefaults.ini, override in OpenSim.ini to change
Defaults are the same as previously.
More information to come on opensim-dev shortly.
Feel free to tweak but if you do please don't expect any support unless feedback on certain tweaks is explicitly requested.
remove-scene-viewer
Justin Clark-Casey (justincc) 2011-10-13 23:47:37 +01:00
parent 128d8dfd8b
commit 4e7d4330c2
2 changed files with 75 additions and 19 deletions

View File

@ -162,17 +162,6 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary>
protected DateTime m_lastFrameUpdate = DateTime.UtcNow;
// TODO: Possibly stop other classes being able to manipulate this directly.
private SceneGraph m_sceneGraph;
private volatile int m_bordersLocked;
// private int m_RestartTimerCounter;
private readonly Timer m_restartTimer = new Timer(15000); // Wait before firing
// private int m_incrementsof15seconds;
private volatile bool m_backingup;
private Dictionary<UUID, ReturnInfo> m_returns = new Dictionary<UUID, ReturnInfo>();
private Dictionary<UUID, SceneObjectGroup> m_groupsWithTargets = new Dictionary<UUID, SceneObjectGroup>();
private Object m_heartbeatLock = new Object();
private int m_update_physics = 1;
private int m_update_entitymovement = 1;
private int m_update_objects = 1;
@ -196,6 +185,24 @@ namespace OpenSim.Region.Framework.Scenes
private int landMS;
private int lastCompletedFrame;
/// <summary>
/// Signals whether temporary objects are currently being cleaned up. Needed because this is launched
/// asynchronously from the update loop.
/// </summary>
private bool m_cleaningTemps = false;
private Object m_heartbeatLock = new Object();
// TODO: Possibly stop other classes being able to manipulate this directly.
private SceneGraph m_sceneGraph;
private volatile int m_bordersLocked;
// private int m_RestartTimerCounter;
private readonly Timer m_restartTimer = new Timer(15000); // Wait before firing
// private int m_incrementsof15seconds;
private volatile bool m_backingup;
private Dictionary<UUID, ReturnInfo> m_returns = new Dictionary<UUID, ReturnInfo>();
private Dictionary<UUID, SceneObjectGroup> m_groupsWithTargets = new Dictionary<UUID, SceneObjectGroup>();
private bool m_physics_enabled = true;
private bool m_scripts_enabled = true;
private string m_defaultScriptEngine;
@ -208,8 +215,6 @@ namespace OpenSim.Region.Framework.Scenes
private object m_deleting_scene_object = new object();
private bool m_cleaningTemps = false;
private UpdatePrioritizationSchemes m_priorityScheme = UpdatePrioritizationSchemes.Time;
private bool m_reprioritizationEnabled = true;
private double m_reprioritizationInterval = 5000.0;
@ -220,8 +225,6 @@ namespace OpenSim.Region.Framework.Scenes
private bool m_generateMaptiles;
private bool m_useBackup = true;
// private Dictionary<UUID, string[]> m_UserNamesCache = new Dictionary<UUID, string[]>();
#endregion Fields
#region Properties
@ -645,10 +648,6 @@ namespace OpenSim.Region.Framework.Scenes
m_physics_enabled = !RegionInfo.RegionSettings.DisablePhysics;
StatsReporter = new SimStatsReporter(this);
StatsReporter.OnSendStatsResult += SendSimStatsPackets;
StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats;
// Old
/*
m_simulatorVersion = simulatorVersion
@ -741,6 +740,17 @@ namespace OpenSim.Region.Framework.Scenes
RegionInfo.RegionSettings.TerrainImageID = tileID;
}
}
MinFrameTime = startupConfig.GetFloat( "MinFrameTime", MinFrameTime);
m_update_backup = startupConfig.GetInt( "UpdateStorageEveryNFrames", m_update_backup);
m_update_coarse_locations = startupConfig.GetInt( "UpdateCoarseLocationsEveryNFrames", m_update_coarse_locations);
m_update_entitymovement = startupConfig.GetInt( "UpdateEntityMovementEveryNFrames", m_update_entitymovement);
m_update_events = startupConfig.GetInt( "UpdateEventsEveryNFrames", m_update_events);
m_update_objects = startupConfig.GetInt( "UpdateObjectsEveryNFrames", m_update_objects);
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);
}
catch
{
@ -778,6 +788,10 @@ namespace OpenSim.Region.Framework.Scenes
m_log.Info("[SCENE]: Using the " + m_priorityScheme + " prioritization scheme");
#endregion Interest Management
StatsReporter = new SimStatsReporter(this);
StatsReporter.OnSendStatsResult += SendSimStatsPackets;
StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats;
}
/// <summary>

View File

@ -115,6 +115,48 @@
; into a restart.
InworldRestartShutsDown = false
; The minimum proportion of a second that any particular frame can take to execute.
; Only change this if you really know what you're doing, and be prepared to change UpdatePhysicsEveryNFrames
; (and other Frames params) to match! For instance, halving MinFrameTime to 0.0445 require
; UpdatePhysicsEveryNFrames = 2 unless you don't mind your avatar walking like Benny Hill.
MinFrameTime = 0.089
; Send scheduled updates to objects in the scene
; This must be a whole number
UpdateObjectsEveryNFrames = 1;
; Send position/velocity, etc. updates to agents in the scene
; This must be a whole number
UpdateAgentsEveryNFrames = 1;
; Apply pending forces from physics calculations to an entity.
; This must be a whole number
UpdateEntityMovementEveryNFrames = 1;
; Send coarse location updates to viewers. In a classic viewer, this updates the minimap.
; This must be a whole number
UpdateCoarseLocationsEveryNFrames = 50;
; Update physics. Within each update physics also updates in a series of contigous mini-steps
; 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;
; Send terrain updates to viewers
; This must be a whole number
UpdateTerrainEveryNFrames = 50;
; Persitently store any objects which meet the PRIM STORAGE criteria
; This must be a whole number
UpdateStorageEveryNFrames = 200;
; ##
; ## PRIM STORAGE
; ##