diff --git a/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java b/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java index 41702d04f..13f2cbb21 100644 --- a/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java +++ b/core/src/main/java/com/volmit/iris/core/commands/CommandDeveloper.java @@ -57,7 +57,8 @@ public class CommandDeveloper implements DecreeExecutor { Iris.info(C.DARK_PURPLE + "Engine Status"); Iris.info(C.DARK_PURPLE + "Tectonic Threads: " + C.LIGHT_PURPLE + engine.getMantle().getDynamicThreads()); Iris.info(C.DARK_PURPLE + "Tectonic Limit: " + C.LIGHT_PURPLE + engine.getMantle().getTectonicLimit()); - Iris.info(C.DARK_PURPLE + "Tectonic Plates: " + C.LIGHT_PURPLE + engine.getMantle().getLoadedRegionCount()); + Iris.info(C.DARK_PURPLE + "Tectonic Loaded Plates: " + C.LIGHT_PURPLE + engine.getMantle().getLoadedRegionCount()); + Iris.info(C.DARK_PURPLE + "Tectonic Plates: " + C.LIGHT_PURPLE + engine.getMantle().getNotClearedLoadedRegions()); Iris.info(C.DARK_PURPLE + "Tectonic ToUnload: " + C.LIGHT_PURPLE + engine.getMantle().getToUnload()); Iris.info(C.DARK_PURPLE + "Tectonic Unload Duration: " + C.LIGHT_PURPLE + Form.duration((long) engine.getMantle().getTectonicDuration())); Iris.info(C.DARK_PURPLE + "Cache Size: " + C.LIGHT_PURPLE + Form.f(IrisData.cacheSize())); diff --git a/core/src/main/java/com/volmit/iris/core/service/DynamicPerformanceSVC.java b/core/src/main/java/com/volmit/iris/core/service/DynamicPerformanceSVC.java index a289b2d87..1b9276d93 100644 --- a/core/src/main/java/com/volmit/iris/core/service/DynamicPerformanceSVC.java +++ b/core/src/main/java/com/volmit/iris/core/service/DynamicPerformanceSVC.java @@ -33,8 +33,8 @@ public class DynamicPerformanceSVC implements IrisService { protected long loop() { try { if (engine.getMantle().getTectonicLimit() < engine.getMantle().getLoadedRegionCount()){ - // engine.getMantle().trim(5); - // return 2000; + engine.getMantle().trim(5); + return 2000; } } catch (Throwable e) { Iris.reportError(e); diff --git a/core/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java b/core/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java index 59fef608f..1a22f797c 100644 --- a/core/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java +++ b/core/src/main/java/com/volmit/iris/engine/mantle/EngineMantle.java @@ -301,6 +301,9 @@ public interface EngineMantle extends IObjectPlacer { default double getTectonicLimit(){ return Mantle.tectonicLimit.get(); } + default long getNotClearedLoadedRegions(){ + return getMantle().getLoadedRegions().size() - getMantle().getToUnload().size(); + } default double getTectonicDuration(){ return getMantle().getAdjustedIdleDuration().get(); } diff --git a/core/src/main/java/com/volmit/iris/util/mantle/Mantle.java b/core/src/main/java/com/volmit/iris/util/mantle/Mantle.java index f30c50f93..2eda30e8d 100644 --- a/core/src/main/java/com/volmit/iris/util/mantle/Mantle.java +++ b/core/src/main/java/com/volmit/iris/util/mantle/Mantle.java @@ -388,8 +388,6 @@ public class Mantle { return numberOfEntries * bytesPerEntry; } - //@Getter - //private final AtomicInteger fakeToUnload = new AtomicInteger(0); private final AtomicInteger oldFakeToUnload = new AtomicInteger((0)); @Getter private final AtomicDouble adjustedIdleDuration = new AtomicDouble(0); @@ -479,9 +477,12 @@ public class Mantle { if (IrisSettings.get().getPerformance().AggressiveTectonicUnload && loadedRegions.size() > forceAggressiveThreshold.get()) { - AtomicInteger dummyLoadedRegions = new AtomicInteger(loadedRegions.size()); + AtomicInteger regionCountToRemove = new AtomicInteger(0); + if (loadedRegions.size() > tectonicLimit.get()){ + regionCountToRemove.set(loadedRegions.size() - tectonicLimit.get()); + } - while (dummyLoadedRegions.get() > tectonicLimit.get()) { + for (; regionCountToRemove.get() > 0 ;) { Long[] oldestKey = {null}; long[] oldestAge = {Long.MIN_VALUE}; @@ -502,7 +503,7 @@ public class Mantle { hyperLock.withLong(finalOldestKey, () -> { toUnload.add(finalOldestKey); Iris.debug("Oldest Tectonic Region " + finalOldestKey + " added to unload"); - dummyLoadedRegions.getAndDecrement(); + regionCountToRemove.getAndDecrement(); }); } }