summaryrefslogtreecommitdiffhomepage
path: root/patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch
diff options
context:
space:
mode:
authorNassim Jahnke <[email protected]>2022-07-27 23:19:52 +0200
committerNassim Jahnke <[email protected]>2022-07-27 23:19:52 +0200
commitc7304035b6a3ca33196d88a5c46f746dbff178fe (patch)
tree67c8b104ad3c4dd3b049977b38120c8bc1add6c7 /patches/server/0749-Consolidate-flush-calls-for-entity-tracker-packets.patch
parentaab40382a5d9b01b1c712fa17de9fdf0668ccc28 (diff)
downloadPaper-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.patch52
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
+ }
+ }
+