diff --git a/patches/server/0047-Affinity-Locks.patch b/patches/server/0047-Affinity-Locks.patch new file mode 100644 index 000000000..bb2d79dec --- /dev/null +++ b/patches/server/0047-Affinity-Locks.patch @@ -0,0 +1,81 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Mon, 5 Aug 2024 15:07:31 -0500 +Subject: [PATCH] Affinity Locks + + +diff --git a/build.gradle.kts b/build.gradle.kts +index 46980b062980be8c564a215a2ae67e0d1fe5251e..2b1fd2cd7046f283510cd6e801abd8f49b0e8870 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -24,6 +24,9 @@ dependencies { + implementation("com.fasterxml.jackson.core:jackson-core:2.13.0") + implementation("com.fasterxml.jackson.core:jackson-databind:2.13.0") + implementation("com.fasterxml.jackson.core:jackson-annotations:2.13.0") ++ ++ // https://mvnrepository.com/artifact/net.openhft/Java-Thread-Affinity ++ implementation("net.openhft:affinity:3.26ea5") + // Slice end + + implementation("org.mongodb:bson:4.11.1") // Slice - MongoDB Bson Library for ObjectIds +diff --git a/src/main/java/net/minecraft/server/Main.java b/src/main/java/net/minecraft/server/Main.java +index bc391d27399d8c22e78735ca39aa8ab45efb6413..fc1002b11f38ab31ff4148dbb8398f41389a3980 100644 +--- a/src/main/java/net/minecraft/server/Main.java ++++ b/src/main/java/net/minecraft/server/Main.java +@@ -342,7 +342,7 @@ public class Main { + } + + return dedicatedserver1; +- }); ++ }, dedicatedserversettings.getProperties().pinnedCPU); + /* CraftBukkit start + Thread thread = new Thread("Server Shutdown Thread") { + public void run() { +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index b8a43a2833b9f014067681277edad3b96a6d63cd..5c874b36dc8fd2c31192888bead8bc685d391ea0 100644 +--- a/src/main/java/net/minecraft/server/MinecraftServer.java ++++ b/src/main/java/net/minecraft/server/MinecraftServer.java +@@ -316,10 +316,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { ++ public static S spin(Function serverFactory, int pinnedCPU) { + AtomicReference atomicreference = new AtomicReference(); + Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system +- ((MinecraftServer) atomicreference.get()).runServer(); ++ ((MinecraftServer) atomicreference.get()).runServer(pinnedCPU); + }, "Server thread"); + + thread.setUncaughtExceptionHandler((thread1, throwable) -> { +@@ -1135,8 +1135,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop