diff --git a/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs b/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs
index fde13f58c2..6a6448678b 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/SessionController.cs
@@ -427,5 +427,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
CheckDisposed();
reattachInformation.RebootState = RebootState.Normal;
}
+
+ ///
+ public void SetHighPriority() => process.SetHighPriority();
}
}
diff --git a/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs b/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs
index 5d35904214..df759f6de9 100644
--- a/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs
+++ b/src/Tgstation.Server.Host/Components/Watchdog/Watchdog.cs
@@ -665,6 +665,7 @@ namespace Tgstation.Server.Host.Components.Watchdog
//wait until this boy officially starts so as not to confuse the servers as to who came first
var startTime = DateTimeOffset.Now;
alphaServer = await alphaServerTask.ConfigureAwait(false);
+ alphaServer.SetHighPriority();
//extra delay for total ordering
var now = DateTimeOffset.Now;
@@ -680,7 +681,8 @@ namespace Tgstation.Server.Host.Components.Watchdog
bravoServerTask = sessionControllerFactory.Reattach(reattachInfo.Bravo, cancellationToken);
bravoServer = await bravoServerTask.ConfigureAwait(false);
-
+ bravoServer.SetHighPriority();
+
async Task CheckLaunch(ISessionController controller, string serverName)
{
var launch = await controller.LaunchResult.ConfigureAwait(false);
diff --git a/src/Tgstation.Server.Host/Core/IProcessBase.cs b/src/Tgstation.Server.Host/Core/IProcessBase.cs
index b96b93b2ae..cc287208c4 100644
--- a/src/Tgstation.Server.Host/Core/IProcessBase.cs
+++ b/src/Tgstation.Server.Host/Core/IProcessBase.cs
@@ -12,5 +12,10 @@ namespace Tgstation.Server.Host.Core
/// The resulting in the exit code of the process
///
Task Lifetime { get; }
+
+ ///
+ /// Set's the owned to
+ ///
+ void SetHighPriority();
}
}
diff --git a/src/Tgstation.Server.Host/Core/Process.cs b/src/Tgstation.Server.Host/Core/Process.cs
index cd869ee83a..15296ebb2f 100644
--- a/src/Tgstation.Server.Host/Core/Process.cs
+++ b/src/Tgstation.Server.Host/Core/Process.cs
@@ -79,5 +79,14 @@ namespace Tgstation.Server.Host.Core
}
catch (InvalidOperationException) { }
}
+
+ public void SetHighPriority()
+ {
+ try
+ {
+ handle.PriorityClass = System.Diagnostics.ProcessPriorityClass.AboveNormal;
+ }
+ catch (InvalidOperationException) { }
+ }
}
}