YEngine, change default number of exec threads to 2 of priority Normal. Let the threads priority a option on ini files

This commit is contained in:
UbitUmarov
2019-11-22 07:01:17 +00:00
parent d5f918f945
commit 943d0935a6
4 changed files with 57 additions and 13 deletions

View File

@@ -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(),

View File

@@ -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);
}