From 0c0286911d7e7be0f0f0e0923a2776792f23d133 Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Fri, 1 Feb 2008 20:52:00 +0000 Subject: Config option to set number of scripts per AppDomain --- .../ScriptEngine/Common/ScriptEngineBase/AppDomainManager.cs | 3 ++- .../Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs | 2 +- bin/OpenSim.ini.example | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AppDomainManager.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AppDomainManager.cs index 68ad88d..3519d54 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AppDomainManager.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/AppDomainManager.cs @@ -87,8 +87,9 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase //private ScriptEngine m_scriptEngine; //public AppDomainManager(ScriptEngine scriptEngine) - public AppDomainManager() + public AppDomainManager(int MaxScriptsPerDomain) { + maxScriptsPerAppDomain = MaxScriptsPerDomain; //m_scriptEngine = scriptEngine; } diff --git a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs index 8b64d3d..fa40947 100644 --- a/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/Common/ScriptEngineBase/ScriptEngine.cs @@ -90,7 +90,7 @@ namespace OpenSim.Region.ScriptEngine.Common.ScriptEngineBase m_EventManager = new EventManager(this, HookUpToServer); m_ScriptManager = newScriptManager; //m_ScriptManager = new ScriptManager(this); - m_AppDomainManager = new AppDomainManager(); + m_AppDomainManager = new AppDomainManager(ScriptConfigSource.GetInt("ScriptsPerAppDomain", 1)); m_LSLLongCmdHandler = new LSLLongCmdHandler(this); // Should we iterate the region for scripts that needs starting? diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 3169cd0..0e3349e 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -155,3 +155,11 @@ DeactivateScriptOnTimeout=false ; Too low and you will waste lots of CPU ; Too high and people touching object or similar will have to wait up to this amount of time before script responding SleepTimeIfNoScriptExecutionMs=50 + +; AppDomains are used for two things: +; * Security: Scripts inside AppDomains are limited in permissions. +; * Script unloading: When a script is deactivated it can not be unloaded. Only whole AppDomains can be unloaded. +; AppDomains are therefore only unloaded once ALL active scripts inside it has been deactivated (removed from prims). +; Each AppDomain has some memory overhead. But leaving dead scripts in memory also has memory overhead. +ScriptsPerAppDomain=1 + -- cgit v1.1