Skip to content

Instantly share code, notes, and snippets.

Created November 26, 2013 20:33
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save anonymous/7665717 to your computer and use it in GitHub Desktop.
diff --git a/minetest.conf.example b/minetest.conf.example
index ee22e9f..365a25a 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -248,6 +248,8 @@
#disable_anticheat = false
# If true, actions are recorded for rollback
#enable_rollback_recording = false
+#maximum time for single server step
+#dedicated_server_step = 0.1
# Profiler data print interval. #0 = disable.
#profiler_print_interval = 0
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 9df9b3a..31ee23b 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -204,6 +204,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("emergequeue_limit_diskonly", "");
settings->setDefault("emergequeue_limit_generate", "");
settings->setDefault("num_emerge_threads", "1");
+ settings->setDefault("dedicated_server_step","0.1");
// physics stuff
settings->setDefault("movement_acceleration_default", "3");
diff --git a/src/server.cpp b/src/server.cpp
index c29ec3d..1798b3c 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -98,6 +98,8 @@ void * ServerThread::Thread()
BEGIN_DEBUG_EXCEPTION_HANDLER
+ f32 dedicated_server_step = g_settings->getFloat("dedicated_server_step");
+
while(getRun())
{
try{
@@ -109,7 +111,15 @@ void * ServerThread::Thread()
}
//infostream<<"Running m_server->Receive()"<<std::endl;
- m_server->Receive();
+ // receive up to 1000 packets or till dedicated server time limit is hit
+ // usually only a single packet is queued so this will only loop on
+ // high cpu load
+ u32 end_ms = porting::getTimeMs() + 1000 * dedicated_server_step;
+ for (size_t i = 0; i < 1000; ++i)
+ {
+ if (!m_server->Receive() || porting::getTimeMs() > end_ms)
+ break;
+ }
}
catch(con::NoIncomingDataException &e)
{
@@ -1719,12 +1729,13 @@ void Server::AsyncRunStep()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment