diff options
author | Nassim Jahnke <[email protected]> | 2022-07-27 23:19:52 +0200 |
---|---|---|
committer | Nassim Jahnke <[email protected]> | 2022-07-27 23:19:52 +0200 |
commit | c7304035b6a3ca33196d88a5c46f746dbff178fe (patch) | |
tree | 67c8b104ad3c4dd3b049977b38120c8bc1add6c7 /patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch | |
parent | aab40382a5d9b01b1c712fa17de9fdf0668ccc28 (diff) | |
download | Paper-c7304035b6a3ca33196d88a5c46f746dbff178fe.tar.gz Paper-c7304035b6a3ca33196d88a5c46f746dbff178fe.zip |
More more more more work
Diffstat (limited to 'patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch')
-rw-r--r-- | patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch b/patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch new file mode 100644 index 0000000000..17c273d2c0 --- /dev/null +++ b/patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Spottedleaf <[email protected]> +Date: Sat, 4 Apr 2020 17:00:20 -0700 +Subject: [PATCH] Consolidate flush calls for entity tracker packets + +Most server packets seem to be sent from here, so try to avoid +expensive flush calls from them. + +This change was motivated due to local testing: + +- My server spawn has 130 cows in it (for testing a prev. patch) +- Try to let 200 players join spawn + +Without this change, I could only get 20 players on before they +all started timing out due to the load put on the Netty I/O threads. + +With this change I could get all 200 on at 0ms ping. + +(one of the primary issues is that my CPU is kinda trash, and having +4 extra threads at 100% is just too much for it). + +So in general this patch should reduce Netty I/O thread load. + +diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +index 7524d9cf7184b345cbd7f0bd1d85601b75c29087..96a232f22b1c270b91635ce9c7c6cacc63b026cc 100644 +--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java ++++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java +@@ -1070,7 +1070,24 @@ public class ServerChunkCache extends ChunkSource { + this.level.timings.broadcastChunkUpdates.stopTiming(); // Paper - timing + gameprofilerfiller.pop(); + // Paper end - use set of chunks requiring updates, rather than iterating every single one loaded ++ // Paper start - controlled flush for entity tracker packets ++ List<net.minecraft.network.Connection> disabledFlushes = new java.util.ArrayList<>(this.level.players.size()); ++ for (ServerPlayer player : this.level.players) { ++ net.minecraft.server.network.ServerGamePacketListenerImpl connection = player.connection; ++ if (connection != null) { ++ connection.connection.disableAutomaticFlush(); ++ disabledFlushes.add(connection.connection); ++ } ++ } ++ try { // Paper end - controlled flush for entity tracker packets + this.chunkMap.tick(); ++ // Paper start - controlled flush for entity tracker packets ++ } finally { ++ for (net.minecraft.network.Connection networkManager : disabledFlushes) { ++ networkManager.enableAutomaticFlush(); ++ } ++ } ++ // Paper end - controlled flush for entity tracker packets + } + } + |