From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Spottedleaf 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 adb1c48f42157fb127be4fd9f0a6f3784d8c4b39..998f63fba0d45a44eaf9cbe48a034bac4e02e965 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;