mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 11:33:28 +08:00
Merge branch 'master' into careminster
Conflicts: OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs OpenSim/Region/Framework/Scenes/Scene.Inventory.cs OpenSim/Region/Framework/Scenes/Scene.cs
This commit is contained in:
@@ -103,26 +103,38 @@ namespace OpenSim
|
||||
"[OPENSIM MAIN]: Environment variable MONO_THREADS_PER_CPU is {0}", monoThreadsPerCpu ?? "unset");
|
||||
|
||||
// Verify the Threadpool allocates or uses enough worker and IO completion threads
|
||||
// .NET 2.0 workerthreads default to 50 * numcores
|
||||
// .NET 3.0 workerthreads defaults to 250 * numcores
|
||||
// .NET 4.0 workerthreads are dynamic based on bitness and OS resources
|
||||
// Max IO Completion threads are 1000 on all 3 CLRs.
|
||||
// .NET 2.0, workerthreads default to 50 * numcores
|
||||
// .NET 3.0, workerthreads defaults to 250 * numcores
|
||||
// .NET 4.0, workerthreads are dynamic based on bitness and OS resources
|
||||
// Max IO Completion threads are 1000 on all 3 CLRs
|
||||
//
|
||||
// Mono 2.10.9 to at least Mono 3.1, workerthreads default to 100 * numcores, iocp threads to 4 * numcores
|
||||
int workerThreadsMin = 500;
|
||||
int workerThreadsMax = 1000; // may need further adjustment to match other CLR
|
||||
int iocpThreadsMin = 1000;
|
||||
int iocpThreadsMax = 2000; // may need further adjustment to match other CLR
|
||||
|
||||
{
|
||||
int currentMinWorkerThreads, currentMinIocpThreads;
|
||||
System.Threading.ThreadPool.GetMinThreads(out currentMinWorkerThreads, out currentMinIocpThreads);
|
||||
m_log.InfoFormat(
|
||||
"[OPENSIM MAIN]: Runtime gave us {0} min worker threads and {1} min IOCP threads",
|
||||
currentMinWorkerThreads, currentMinIocpThreads);
|
||||
}
|
||||
|
||||
int workerThreads, iocpThreads;
|
||||
System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out iocpThreads);
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Runtime gave us {0} worker threads and {1} IOCP threads", workerThreads, iocpThreads);
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Runtime gave us {0} max worker threads and {1} max IOCP threads", workerThreads, iocpThreads);
|
||||
|
||||
if (workerThreads < workerThreadsMin)
|
||||
{
|
||||
workerThreads = workerThreadsMin;
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Bumping up to worker threads to {0}",workerThreads);
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Bumping up to max worker threads to {0}",workerThreads);
|
||||
}
|
||||
if (workerThreads > workerThreadsMax)
|
||||
{
|
||||
workerThreads = workerThreadsMax;
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Limiting worker threads to {0}",workerThreads);
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Limiting max worker threads to {0}",workerThreads);
|
||||
}
|
||||
|
||||
// Increase the number of IOCP threads available.
|
||||
@@ -130,22 +142,24 @@ namespace OpenSim
|
||||
if (iocpThreads < iocpThreadsMin)
|
||||
{
|
||||
iocpThreads = iocpThreadsMin;
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Bumping up IO completion threads to {0}",iocpThreads);
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Bumping up max IO completion threads to {0}",iocpThreads);
|
||||
}
|
||||
// Make sure we don't overallocate IOCP threads and thrash system resources
|
||||
if ( iocpThreads > iocpThreadsMax )
|
||||
{
|
||||
iocpThreads = iocpThreadsMax;
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Limiting IO completion threads to {0}",iocpThreads);
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Limiting max IO completion threads to {0}",iocpThreads);
|
||||
}
|
||||
// set the resulting worker and IO completion thread counts back to ThreadPool
|
||||
if ( System.Threading.ThreadPool.SetMaxThreads(workerThreads, iocpThreads) )
|
||||
{
|
||||
m_log.InfoFormat("[OPENSIM MAIN]: Threadpool set to {0} worker threads and {1} IO completion threads", workerThreads, iocpThreads);
|
||||
m_log.InfoFormat(
|
||||
"[OPENSIM MAIN]: Threadpool set to {0} max worker threads and {1} max IO completion threads",
|
||||
workerThreads, iocpThreads);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.Info("[OPENSIM MAIN]: Threadpool reconfiguration failed, runtime defaults still in effect.");
|
||||
m_log.Warn("[OPENSIM MAIN]: Threadpool reconfiguration failed, runtime defaults still in effect.");
|
||||
}
|
||||
|
||||
// Check if the system is compatible with OpenSimulator.
|
||||
@@ -153,17 +167,16 @@ namespace OpenSim
|
||||
string supported = String.Empty;
|
||||
if (Util.IsEnvironmentSupported(ref supported))
|
||||
{
|
||||
m_log.Info("Environment is compatible.\n");
|
||||
m_log.Info("[OPENSIM MAIN]: Environment is supported by OpenSimulator.");
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.Warn("Environment is unsupported (" + supported + ")\n");
|
||||
m_log.Warn("[OPENSIM MAIN]: Environment is not supported by OpenSimulator (" + supported + ")\n");
|
||||
}
|
||||
|
||||
// Configure nIni aliases and localles
|
||||
Culture.SetCurrentCulture();
|
||||
|
||||
|
||||
// Validate that the user has the most basic configuration done
|
||||
// If not, offer to do the most basic configuration for them warning them along the way of the importance of
|
||||
// reading these files.
|
||||
|
||||
@@ -337,7 +337,6 @@ namespace OpenSim
|
||||
config.Set("physics", "OpenDynamicsEngine");
|
||||
config.Set("meshing", "Meshmerizer");
|
||||
config.Set("physical_prim", true);
|
||||
config.Set("see_into_this_sim_from_neighbor", true);
|
||||
config.Set("serverside_object_permissions", true);
|
||||
config.Set("storage_plugin", "OpenSim.Data.SQLite.dll");
|
||||
config.Set("storage_connection_string", "URI=file:OpenSim.db,version=3");
|
||||
|
||||
Reference in New Issue
Block a user