promotional bannermobile promotional banner

aTNO

An overly complicated optimization Modpack, specifically made for 26.1.2 using Fabric.

a Totally Normal Optimization Modpack

aTNO (or a Totally Normal Optimization modpack for long) is an overly complicated optimization modpack specifically made for 26.1.2 that try to push further the optimization made without sacrificing much of the base quality

Disclaimer: This is made for mid-range/high-end PC and may be worse than vanilla on low-end PC (not tested yet)

Second Disclaimer: This run worse on a Phone (tested on the Oneplus 9 Pro)

Da Number

Duck Vanilla aTNO¹ Fabulously Optimized² Remarkably Optimized² Adrenaline² Winner
Avg FPS³ ⁸ 232 344 281 283 280 aTNO
1% Low Avg FPS³ ⁸ Not Modded 120-138 180-200 130-168 180-200 FO / Adrenaline
Avg Tick Time (ms)³ 14.8-16.2 7-7.7 11-12 12.5-13 11-12.5 aTNO
Avg CPS (chunky)⁴ Not Modded 644,31 113.92 384.59 468.04 aTNO
Loading Time (s)⁵ 6 15 11 10 9 Vanilla
World Creation Time (s)⁶ 18 10 20 10 10 aTNO / RO / Adrenaline
Memory Usage (MB)⁷ 580 650 670 520 450 Adrenaline
  1. The Vulkan Version was used
  2. The latest 26.1.2 version of these modpack was used
  3. The test was on 32 chunk of render distance and simulation with uncapped FPS, looking at the sea
  4. This command was used: /chunky start minecraft:overworld circle 0 0 2500 2500
  5. From clicking launch to the menu (didn't count the fade in time)
  6. From clicking create world till it's fully loaded (used the F3 + 2 graph)
  7. When creating a new world and waiting until its fully loaded (after GC)
  8. Depending on the mods/modpack (idk if it apply here), the 1% lows can be fake

This was tested with a Ryzen 5 5500, a GTX 1060 6GB, 6GB Allocated RAM and a SSD SATA on CachyOS with a 1440p monitor

Da Version

The modpack come in 3 version, with each some difference, so its always good to choose the one who fit best

Vulkan Version:

The Vulkan Version make use of multiple advanced technologies like Vulkan, OpenCL and Rust to give the best result on modern hardware. Use this Version if your PC is recent enough and the GPU have enough headroom for the OpenCL utilization (see the advanced section for the OpenCL hardware recommendation).

Sodium Version:

The Sodium Version stay in the OpenGL side with Sodium and does not go into Vulkan, OpenCL or Rust. Use this version if your PC is not recent enough, your PC is not powerful enough or if you prefer the OpenGL side.

Server Version:

The Server Version is made and only for the Server (eg. via Self Hosting or a Server Host), it get ride of the client optimization, which is irrelevant. Use this version ONLY for (and not on) a Server.

Q&A

Is it compatible with Vanilla Client/Server ?

Yes, it's fully compatible with Vanilla Clien/Server.

How can I use your Modpack (not for only playing, if you get what I mean) ?

You can use my modpack as a base for your own Modpack (not obligated, but it would be nice to says that you used it), fork it, use it to compare (saying the version used) and basically everything else (execpt stealing tho, its not nice to steal).

What should I check when using the modpack as a base ?

Firstly you need to choose between Vulkan or Sodium (or Server) due to compatibility reason, then you need to test the incompatibility between mods.

Where can I make a suggestion or report a bug ?

You can make a suggestion or report a bug on the discord server (or in the curseforge comment section I guess, even tho I'm gonna be even less active than Discord) (also you can just come in the server discord without any suggestion or bug, so atleast I'm not alone in the serv)

JVM Argument and GC choice (Java 25)

The choice of the JVM argument and the GC can be important, choosing between them can change the experience while playing

Garbage-First (G1) Garbage Collector (GC)

The Garbage-First Garbage Collector (or simply G1 GC) is the Java default garbage collector since Java 9, it's balanced between throughput and latency

Here is the JVM Argument I Recommend:

-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:G1HeapRegionSize=16M -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+UseStringDeduplication -XX:InitialCodeCacheSize=16M -XX:ReservedCodeCacheSize=384M -Xss2M --enable-preview --enable-native-access=ALL-UNNAMED

Z Garbage Collector (ZGC)

The Z Garbage Collector (or simply ZGC) is a scalable low-latency focused GC with a goal of having near 0 latency and supporting multi-TB heap size

Here is the JVM Argument I Recommend:

-XX:+UseZGC -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+UseStringDeduplication -XX:InitialCodeCacheSize=16M -XX:ReservedCodeCacheSize=384M -Xss2M --enable-preview --enable-native-access=ALL-UNNAMED

Shenandoah GC

The Shenandoah GC is also a low-latency focused GC, it's like ZGC but focused on less bigger heap size

Here is the JVM Argument I Recommend:

-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:ShenandoahGarbageThreshold=25 -XX:ShenandoahMinFreeThreshold=20 -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+UseStringDeduplication -XX:InitialCodeCacheSize=16M -XX:ReservedCodeCacheSize=384M -Xss2M --enable-preview --enable-native-access=ALL-UNNAMED

Da board

Feature G1 GC ZGC Shenandoah
Pause behavior 20–200ms typical 0.1–0.5ms typical 1–5ms typical
Throughput High Medium Medium
Latency Target moderate Strong Strong
Startup Time Fast Moderate Moderate
Heap Size Support Large (up to ~4 TB) Very Large (multi-TB) Moderate (~2 TB)
Concurrent Compaction Partial Full Full
Memory overhead Baseline (~10% headroom) 15–30% higher than G1 GC 10–20% higher than G1 GC
Throughput cost Baseline 5–15% lower than G1 GC 5–10% lower than G1 GC
CPU overhead Baseline +5–10% +5–15%

(#thanks javacodegeeks)

Advanced

This section is supposed to come in <details> but curseforge doesn't support it, so instead its just gonna be a huge unhidden pile of text

This section come in 6 parts:

  • Hardware recommendation for OpenCL (from C2ME OpenCL): This part is just the C2ME OpenCL compatibility matrix (basically)
  • Tested Hardware: This part says more details about the system used to test
  • Mod parameter: This part says the change made in the config file of mods and why
  • Modified Mod: This part says how and why I modified StateStream
  • GPU Workloads and P-State (NVIDIA and Vulkan Version Only): This part just says the specific interaction between the Vulkan Version and NVIDIA GPU
  • Mod List: This part just says all the mod used (in any version) with their link and author

Hardware recommendation for OpenCL (from C2ME OpenCL)

Minimum hardware requirements

  • a working OpenCL 1.2+ driver
  • cl_khr_fp64 support (fp64 support)

Recommended hardware (based on C2ME OpenCL suggestion for 1200CPS+, so take it with a huge pinch of salt)

GPU:

  • Nvidia GTX 1060 or greater
  • AMD Radeon RX 6500 XT or greater
  • Intel Arc B570 or greater

IGPU:

  • Idk, sorry guys

Nice things to have

  • a working OpenCL 3.0 driver
  • cl_khr_device_uuid for stable device matching
  • CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE for optimal performance. Not present on AMD GPUs
  • cl_khr_priority_hints and cl_khr_throttle_hints for queue priority. Only known to be present on Intel GPUs
  • Non-uniform workgroups, not present on Nvidia GPUs and some AMD ones

Platform compatibility matrix

  • Supported: known to be fully working in general
  • Partial: known to be working with some big caveats
  • Unsupported: known to be not working at all
  • N/A: Not applicable because the combination doesn't exist.
Vendor Generation Driver Windows Linux MacOS
NVIDIA Maxwell and beyond Proprietary and Open Supported Partial¹ Unknown
NVIDIA Kepler Proprietary Unknown Supported Unknown
NVIDIA Older cards Any Unknown Unknown Unknown
NVIDIA nouveau supported GPUs Rusticl on nouveau N/A Unknown N/A
Intel Gen9, Gen9.5⁵ Official² Partial³ Partial⁴ Unknown
Intel Gen11, Gen12, Gen12.5⁶ Official² Unsupported¹² Unsupported¹² Unknown
Intel Gen12.7, Xe2, Xe3 and beyond⁷ Official² Partial³ Partial⁴ Unknown
Intel Older graphics Official² Unknown Unknown Unknown
Intel iris supported GPUs Rusticl on iris N/A Unknown N/A
AMD RDNA1 and beyond¹⁴ Official⁸ Supported⁹ Supported Unknown
AMD GCN Official¹⁰ Unsupported¹³ Unsupported¹³ Unknown
AMD radeonsi supported GPUs Rusticl on radeonsi N/A Partial¹¹ N/A
Qualcomm Any Official Unsupported¹² Unsupported¹² N/A
Apple Any MacOS drivers N/A N/A Unsupported¹²
Apple Any Rusticl on asahi N/A Unknown N/A
  • ¹ The driver is known to hang after a while. Driver branch 535 LTS seem to work fine.
  • ² The official driver package on Windows. Gen9 and Gen9.5 needs up-to-date drivers:
  • Gen9: https://www.intel.com/content/www/us/en/download/762755/intel-6th-gen-processor-graphics-windows.html
  • Gen9.5: https://www.intel.com/content/www/us/en/download/776137/intel-7th-10th-gen-processor-graphics-windows.html
  • For Linux: https://github.com/intel/compute-runtime
  • ³ GPU is known to crash on pretty much all non-vanilla worldgen. Your millage may vary.
  • ⁴ GPU is known to crash with some complex worldgen datapacks, such as Terralith. Your millage may vary.
  • ⁵ Gen9 and Gen9.5 are integrated graphics on 6th-9th gen core processors, and 10th gen non-G series core processors
  • ⁶ Gen11 and Gen12, Gen12.5 here are integrated graphics in 10th G-series core processors, 11th-14th gen core processors, plus Arc DG1, Arc A-series
  • ⁷ Gen12.7 refers to Meteor Lake and Arrow Lake integrated graphics.
  • At this point it is integrated graphics in Core Ultra 100 series and above, plus Battlemage dedicated graphic and above.
  • ⁸ The official driver package on Windows. The ROCm runtime on Linux.
  • ⁹ Driver versions 26.5.1 is known to always crash. Existing installations upgraded to 26.6.1+ may also crash as well.
  • If you are experiencing crashes on 26.6.1+, it is recommended to DDU then do a fresh installation.
  • ¹⁰ The official driver package on Windows. The AMDGPU-Pro runtime on Linux.
  • ¹¹ Mesa 26.1.x branch is known to work on RDNA3/4. Anything can happen with any hardware combination, including corrupted worldgen. Your millage may vary.
  • ¹² Missing FP64 support
  • ¹³ Driver crashes
  • ¹⁴ Integrated graphics for Ryzen 7000 series and 9000 series not included. They are too slow for this task.

(#thanks ishland)

Tested Hardware

Simplified:

  • OS: CachyOS
  • Motherboard: B550M Phantom Gaming 4
  • CPU: AMD Ryzen 5 5500
  • GPU: GTX 1060 6GB
  • Allocated RAM: 6GiB
  • Disk: SSD
  • Launcher: PrismLauncher
  • Java: Azul Zulu JRE 25

Advanced:

  • OS: CachyOS x86_64
  • Motherboard: B550M Phantom Gaming 4
  • Kernel: linux-cachyos-bore-lto
  • Sched-ext Scheduler: Lavd (Gaming mode)
  • Display: 2560x1440, 120 Hz
  • DE: KDE Plasma
  • WM: KWin (X11)
  • CPU: AMD Ryzen 5 5500 (12) @ 4.46 GHz
  • PBO: +200MHz
  • Core Undervolt: -6mV
  • GPU: NVIDIA GeForce GTX 1060 6GB
  • GPU Driver: nvidia-580xx-dkms nvidia-580xx-settings nvidia-580xx-utils opencl-nvidia-580xx
  • Memory: 31.21 GiB
  • Swap: 33.21 GiB
  • Minimum Allocated RAM: 1GiB
  • Maximum Allocated RAM: 6GiB
  • Disk (/): 110.00 GiB - btrfs
  • Compression: ZSTD level 3
  • Launcher: PrismLauncher
  • Java: azul_zulu_jre25.0.3

Mod parameter

Some mod config has been modified, so here i'm gonna say what has been changed and why it has been changed (globally).

Async

  • enableAsyncSpawn set from false to true

Why? For less laggy entity spawning

Async Particle

  • "gpuAcceleration" set from true false
  • "appendNewParticlesToRenderer" set from true false

Why? To fix a bug between Vulkan and Async Particle which cause huge lag with a high number of particle

Beryl

  • "shadersOn" set from true to false

Why? Not forcing shader for everyone

C2ME

  • threadPoolPriority set from "default" (4) to 3
  • maxConcurrentChunkLoads set from "default" (24) to 8
  • chunkSendingSpeedMultiplierPercentage set from "default" (200) to 0
  • gcFreeChunkSerializer set from "default" (false) to true

[openclAccel]

  • allowIncompatibilityFallback set from "default" (false) to true

Why? Faster yet less laggy chunk creation/loading, also an activated Fallback

Fast Noise

  • tree set from false to true

Why? avoid multiple calls to the thread when generating

Ixeris

  • aggressiveCaching set from false to true
  • keyboard set from false to true

Why? improve the event polling performance

Modernica

  • perfChunkMeshing set from true to false
  • perfDeduplicateClimateParameters set from false to true
  • perfDeduplicateLocation set from false to true
  • perfNetworkEnhancements set from true to false
  • perfNetworkOptimizations set from true to false
  • perfRemoveBiomeTemperatureCache set from true to false
  • perfResourcepacks set from true to false
  • perfWorldgenAllocation set from true to false

Why? For mod/datapack compatibility and less resource utilization

ServerCore

features:

  • prevent-moving-into-unloaded-chunks set from false to true
  • xp-merge-radius set from 0.5 to 1
  • item-merge-radius set from 0.5 to 1

lobotomize-villagers:

  • enabled set from false to true

Optimizations.yml

  • fast-biome-lookups: true

Why? For reducing the time to calculate the Tick

Structure Layout Optimizer

  • "deduplicateShuffledTemplatePoolElementList" set from false to true

Why? make structure layouts generate slightly faster

StateStream

  • update_culling_enabled set from true to false

Why? Because the json file doesn't work (or I'm dumb, the two is possible)

TwinSession

  • autoOp set from true to false
  • spawnNearPlayer set from true to false

Why? If you already played with friends you know, you know…

Modified Mod

For the Vulkan and Sodium version of the Modpack, I had to modify StateStream for it to work in SinglePlayer too, here is the modification made:

  • Suppressed quilt.mod.json (idk why)
  • Modified the file fabric.mod.json at "environment": from "server" to "*"

GPU Workloads and P-State (NVIDIA and Vulkan Version Only)

This part concern more the NVIDIA GPU side.

Normally in Minecraft, the GPU automatically switch from P8-P5 to the P0 (Maximum Performance), but on the Vulkan Version, instead of switching to the P0 as it should, it switch to the P2 (Workload mode).

This is due to the OpenCL implementation that the NVIDIA Driver detect and automatically switch to the P2 as intended.

This is normally not affecting the performance by a ton (you wont see any difference for Minecraft), but the VRAM clock is gonna be lower than in P0.

Mod List

The aTNO Team

profile avatar
  • 1
    Projects
  • 20
    Downloads

Hi :)