From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
Date: Mon, 30 Aug 2021 04:26:40 -0700
Subject: [PATCH] Reduce worldgen thread worker count for low core count CPUs


diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
index 384ddb03af26ae360fd22e2e231d9d14d6ad0865..23a999c19809a4fb62b37400e3767dc44692adb3 100644
--- a/src/main/java/net/minecraft/Util.java
+++ b/src/main/java/net/minecraft/Util.java
@@ -146,7 +146,19 @@ public class Util {
 
     private static ExecutorService makeExecutor(String s, int priorityModifier) { // Paper - add priority
         // Paper start - use simpler thread pool that allows 1 thread
-        int i = Math.min(8, Math.max(Runtime.getRuntime().availableProcessors() - 2, 1));
+        // Paper start - also try to avoid suffocating the system with the worldgen workers
+        int cpus = Runtime.getRuntime().availableProcessors() / 2;
+        int i;
+        if (cpus <= 4) {
+            i = cpus <= 2 ? 1 : 2;
+        } else if (cpus <= 8) {
+            // [5, 8]
+            i = Math.max(3, cpus - 2);
+        } else {
+            i = cpus * 2 / 3;
+        }
+        i = Math.min(8, i);
+        // Paper end - also try to avoid suffocating the system with the worldgen workers
         i = Integer.getInteger("Paper.WorkerThreadCount", i);
         ExecutorService executorService;
 
