From 943d0935a624710b2d38bd4be906aaada2c2d1fe Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 22 Nov 2019 07:01:17 +0000 Subject: YEngine, change default number of exec threads to 2 of priority Normal. Let the threads priority a option on ini files --- OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs | 28 +++++++++++++++++++--- .../Region/ScriptEngine/YEngine/XMRScriptThread.cs | 6 ++--- 2 files changed, 28 insertions(+), 6 deletions(-) (limited to 'OpenSim') diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs b/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs index d2b4ebd..5dcaa8f 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs @@ -207,8 +207,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine if(!m_Enabled) return; - numThreadScriptWorkers = m_Config.GetInt("NumThreadScriptWorkers", 1); - + numThreadScriptWorkers = m_Config.GetInt("NumThreadScriptWorkers", 2); + string priority = m_Config.GetString("Priority", "Normal"); m_TraceCalls = m_Config.GetBoolean("TraceCalls", false); m_Verbose = m_Config.GetBoolean("Verbose", false); m_ScriptDebug = m_Config.GetBoolean("ScriptDebug", false); @@ -250,9 +250,31 @@ namespace OpenSim.Region.ScriptEngine.Yengine return; } + ThreadPriority workersPrio = ThreadPriority.Normal; + switch (priority) + { + case "Lowest": + workersPrio = ThreadPriority.Lowest; + break; + case "BelowNormal": + workersPrio = ThreadPriority.BelowNormal; + break; + case "Normal": + workersPrio = ThreadPriority.Normal; + break; + case "AboveNormal": + workersPrio = ThreadPriority.AboveNormal; + break; + case "Highest": + workersPrio = ThreadPriority.Highest; + break; + default: + m_log.ErrorFormat("[YEngine] Invalid thread priority: '{0}'. Assuming Normal", priority); + break; + } m_SleepThread = StartMyThread(RunSleepThread, "Yengine sleep", ThreadPriority.Normal); for(int i = 0; i < numThreadScriptWorkers; i++) - StartThreadWorker(i); + StartThreadWorker(i, workersPrio); m_log.InfoFormat("[YEngine]: Enabled, {0}.{1} Meg (0x{2}) stacks", (m_StackSize >> 20).ToString(), diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRScriptThread.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRScriptThread.cs index f68fd51..c71eb81 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRScriptThread.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRScriptThread.cs @@ -56,13 +56,13 @@ namespace OpenSim.Region.ScriptEngine.Yengine } } - public void StartThreadWorker(int i) + public void StartThreadWorker(int i, ThreadPriority priority) { Thread thd; if(i >= 0) - thd = Yengine.StartMyThread(RunScriptThread, "YScript" + i.ToString(), ThreadPriority.BelowNormal); + thd = Yengine.StartMyThread(RunScriptThread, "YScript" + i.ToString(), priority); else - thd = Yengine.StartMyThread(RunScriptThread, "YScript", ThreadPriority.BelowNormal); + thd = Yengine.StartMyThread(RunScriptThread, "YScript", priority); lock(m_WakeUpLock) m_RunningInstances.Add(thd.ManagedThreadId, null); } -- cgit v1.1