minecraft: make more responsive
This commit is contained in:
@@ -158,6 +158,12 @@
|
|||||||
|
|
||||||
# Higher backlog for the large number of concurrent torrent connections
|
# Higher backlog for the large number of concurrent torrent connections
|
||||||
"net.core.netdev_max_backlog" = 5000;
|
"net.core.netdev_max_backlog" = 5000;
|
||||||
|
|
||||||
|
# Minecraft server optimizations
|
||||||
|
# Disable autogroup for better scheduling of game server threads
|
||||||
|
"kernel.sched_autogroup_enabled" = 0;
|
||||||
|
# Huge pages for Minecraft JVM (4000MB heap / 2MB per page + ~200 overhead)
|
||||||
|
"vm.nr_hugepages" = 2200;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,38 @@
|
|||||||
let
|
let
|
||||||
heap_size = "4000M";
|
heap_size = "4000M";
|
||||||
in
|
in
|
||||||
"-Xmx${heap_size} -Xms${heap_size} -XX:+UseZGC -XX:+ZGenerational";
|
lib.concatStringsSep " " [
|
||||||
|
# Memory
|
||||||
|
"-Xmx${heap_size}"
|
||||||
|
"-Xms${heap_size}"
|
||||||
|
# GC
|
||||||
|
"-XX:+UseZGC"
|
||||||
|
"-XX:+ZGenerational"
|
||||||
|
# Base JVM optimizations (brucethemoose/Minecraft-Performance-Flags-Benchmarks)
|
||||||
|
"-XX:+UnlockExperimentalVMOptions"
|
||||||
|
"-XX:+UnlockDiagnosticVMOptions"
|
||||||
|
"-XX:+AlwaysActAsServerClassMachine"
|
||||||
|
"-XX:+AlwaysPreTouch"
|
||||||
|
"-XX:+DisableExplicitGC"
|
||||||
|
"-XX:+UseNUMA"
|
||||||
|
"-XX:+PerfDisableSharedMem"
|
||||||
|
"-XX:+UseFastUnorderedTimeStamps"
|
||||||
|
"-XX:+UseCriticalJavaThreadPriority"
|
||||||
|
"-XX:ThreadPriorityPolicy=1"
|
||||||
|
"-XX:AllocatePrefetchStyle=3"
|
||||||
|
"-XX:-DontCompileHugeMethods"
|
||||||
|
"-XX:MaxNodeLimit=240000"
|
||||||
|
"-XX:NodeLimitFudgeFactor=8000"
|
||||||
|
"-XX:ReservedCodeCacheSize=400M"
|
||||||
|
"-XX:NonNMethodCodeHeapSize=12M"
|
||||||
|
"-XX:ProfiledCodeHeapSize=194M"
|
||||||
|
"-XX:NonProfiledCodeHeapSize=194M"
|
||||||
|
"-XX:NmethodSweepActivity=1"
|
||||||
|
"-XX:+UseVectorCmov"
|
||||||
|
# Large pages (requires vm.nr_hugepages sysctl)
|
||||||
|
"-XX:+UseLargePages"
|
||||||
|
"-XX:LargePageSizeInBytes=2m"
|
||||||
|
];
|
||||||
|
|
||||||
serverProperties = {
|
serverProperties = {
|
||||||
server-port = service_configs.ports.minecraft;
|
server-port = service_configs.ports.minecraft;
|
||||||
@@ -116,6 +147,14 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.minecraft-server-main = {
|
||||||
|
serviceConfig = {
|
||||||
|
Nice = -5;
|
||||||
|
IOSchedulingPriority = 0;
|
||||||
|
LimitMEMLOCK = "infinity"; # Required for large pages
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
services.caddy.virtualHosts = lib.mkIf (config.services.caddy.enable) {
|
services.caddy.virtualHosts = lib.mkIf (config.services.caddy.enable) {
|
||||||
"map.${service_configs.https.domain}".extraConfig = ''
|
"map.${service_configs.https.domain}".extraConfig = ''
|
||||||
root * ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}/squaremap/web
|
root * ${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}/squaremap/web
|
||||||
|
|||||||
@@ -60,6 +60,10 @@ testPkgs.testers.runNixOSTest {
|
|||||||
wants = lib.mkForce [ ];
|
wants = lib.mkForce [ ];
|
||||||
after = lib.mkForce [ ];
|
after = lib.mkForce [ ];
|
||||||
requires = lib.mkForce [ ];
|
requires = lib.mkForce [ ];
|
||||||
|
serviceConfig = {
|
||||||
|
Nice = lib.mkForce 0;
|
||||||
|
LimitMEMLOCK = lib.mkForce "infinity";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Test-specific overrides only - reduce memory for testing
|
# Test-specific overrides only - reduce memory for testing
|
||||||
|
|||||||
Reference in New Issue
Block a user