XEngine: make calls to gc.collect on region startup scripts loading a configurable option, since it is very slow operation
parent
f29d5ad662
commit
73b20c2ca2
|
@ -110,6 +110,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
private int m_ScriptFailCount; // Number of script fails since compile queue was last empty
|
private int m_ScriptFailCount; // Number of script fails since compile queue was last empty
|
||||||
private string m_ScriptErrorMessage;
|
private string m_ScriptErrorMessage;
|
||||||
private bool m_AppDomainLoading;
|
private bool m_AppDomainLoading;
|
||||||
|
private bool m_CompactMemOnLoad;
|
||||||
private Dictionary<UUID,ArrayList> m_ScriptErrors =
|
private Dictionary<UUID,ArrayList> m_ScriptErrors =
|
||||||
new Dictionary<UUID,ArrayList>();
|
new Dictionary<UUID,ArrayList>();
|
||||||
|
|
||||||
|
@ -301,8 +302,8 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
m_MaxScriptQueue = m_ScriptConfig.GetInt("MaxScriptEventQueue",300);
|
m_MaxScriptQueue = m_ScriptConfig.GetInt("MaxScriptEventQueue",300);
|
||||||
m_StackSize = m_ScriptConfig.GetInt("ThreadStackSize", 262144);
|
m_StackSize = m_ScriptConfig.GetInt("ThreadStackSize", 262144);
|
||||||
m_SleepTime = m_ScriptConfig.GetInt("MaintenanceInterval", 10) * 1000;
|
m_SleepTime = m_ScriptConfig.GetInt("MaintenanceInterval", 10) * 1000;
|
||||||
m_AppDomainLoading = m_ScriptConfig.GetBoolean("AppDomainLoading", true);
|
m_AppDomainLoading = m_ScriptConfig.GetBoolean("AppDomainLoading", false);
|
||||||
|
m_CompactMemOnLoad = m_ScriptConfig.GetBoolean("CompactMemOnLoad", false);
|
||||||
m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30);
|
m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30);
|
||||||
m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false);
|
m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false);
|
||||||
m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000;
|
m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000;
|
||||||
|
@ -1278,10 +1279,9 @@ namespace OpenSim.Region.ScriptEngine.XEngine
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// do not load a assembly on top of a lot of to release memory
|
// optionaly do not load a assembly on top of a lot of to release memory
|
||||||
// also yield a bit
|
// only if logins disable since causes a lot of rubber banding
|
||||||
// only if logins disable since causes a lot of rubber banding
|
if(m_CompactMemOnLoad && !m_Scene.LoginsEnabled)
|
||||||
if(!m_Scene.LoginsEnabled)
|
|
||||||
GC.Collect(2);
|
GC.Collect(2);
|
||||||
|
|
||||||
ScriptInstance instance = null;
|
ScriptInstance instance = null;
|
||||||
|
|
|
@ -925,6 +925,13 @@
|
||||||
;; by scripts have changed.
|
;; by scripts have changed.
|
||||||
; DeleteScriptsOnStartup = true
|
; DeleteScriptsOnStartup = true
|
||||||
|
|
||||||
|
;# {CompactMemOnLoad} {} {compacts memory on each script load at startup?} {true false} false
|
||||||
|
;; forces calls to memory garbage collector before loading each script DLL during region startup.
|
||||||
|
;; Peek memory usage is reduced and region starts with a more compacted memory allocation.
|
||||||
|
;; But this costs a lot of time, so region load will take a lot longer.
|
||||||
|
;; it is more usefull if there are no previously compiled scripts DLLs (as with DeleteScriptsOnStartup = true)
|
||||||
|
;CompactMemOnLoad = false
|
||||||
|
|
||||||
;# {DefaultCompileLanguage} {Enabled:true} {Default script language?} {lsl vb cs} lsl
|
;# {DefaultCompileLanguage} {Enabled:true} {Default script language?} {lsl vb cs} lsl
|
||||||
;; Default language for scripts
|
;; Default language for scripts
|
||||||
; DefaultCompileLanguage = "lsl"
|
; DefaultCompileLanguage = "lsl"
|
||||||
|
|
|
@ -1696,14 +1696,23 @@
|
||||||
; this may only be a problem if regions stay alive for a long time with lots of scripts added or edited.
|
; this may only be a problem if regions stay alive for a long time with lots of scripts added or edited.
|
||||||
; at this time some mono versions seem to have problems with the true option
|
; at this time some mono versions seem to have problems with the true option
|
||||||
; so default is now false until a fix is found
|
; so default is now false until a fix is found
|
||||||
AppDomainLoading = false
|
; AppDomainLoading = false
|
||||||
|
|
||||||
; Controls whether previously compiled scripts DLLs are deleted on sim restart. If you set this to false
|
; Controls whether previously compiled scripts DLLs are deleted on sim restart.
|
||||||
; then startup will be considerably faster since scripts won't need to be recompiled. However, then it becomes your responsibility to delete the
|
; If you set this to false then startup will be considerably faster since scripts won't need to be recompiled.
|
||||||
; compiled scripts if you're recompiling OpenSim from source code and internal interfaces used
|
; It should be true on first run after updating opensim binary version
|
||||||
; by scripts have changed.
|
; after first run you can change to false.
|
||||||
; DeleteScriptsOnStartup = false
|
; You can also set it to false and delete the script DLLs by hand
|
||||||
|
; This does not delete cached scripts state.
|
||||||
|
; DeleteScriptsOnStartup = true
|
||||||
|
|
||||||
|
; CompactMemOnLoad forces calls to memory garbage collector before loading each script binary
|
||||||
|
; forces calls to memory garbage collector before loading each script DLL during region startup.
|
||||||
|
; Peek memory usage is reduced and region starts with a more compacted memory allocation.
|
||||||
|
; But this costs a lot of time, so region load will take a lot longer.
|
||||||
|
; it is more usefull if there are no previously compiled scripts DLLs (or DeleteScriptsOnStartup = true)
|
||||||
|
; CompactMemOnLoad = false
|
||||||
|
|
||||||
; Controls whether scripts are stopped by aborting their threads externally (abort)
|
; Controls whether scripts are stopped by aborting their threads externally (abort)
|
||||||
; or by co-operative checks inserted by OpenSimulator into compiled script (co-op).
|
; or by co-operative checks inserted by OpenSimulator into compiled script (co-op).
|
||||||
; co-op will be more stable as aborting threads can cause instability.
|
; co-op will be more stable as aborting threads can cause instability.
|
||||||
|
|
Loading…
Reference in New Issue