WhatsLaggin report (manual)  30.4 s recorded, ended 2026-10-23 04:33:44
Minecraft 1.20.1, Forge 47.4.20, 462 mods, Java 17.0.8 OpenJDK 64-Bit Server VM, max heap 10.0 GB
GPU AMD Radeon RX 9070 XT (ATI Technologies Inc.), OpenGL 4.6.0 Core Profile Context 26.10.1.261008
CPU 16x AMD Ryzen 7 7800X3D 8-Core Processor, 16 threads, 31.4 GB RAM
Video 3440x1440 fullscreen @180 Hz, vsync off, fps limit unlimited, render distance 12, simulation 7, graphics fancy, shaders off
World minecraft:overworld, 73 entities loaded

VERDICT
  721 fps average (1.39 ms per frame), 1% low 82 fps, 0.1% low 34 fps.
  BALANCED: 1.02 ms CPU plus 0.36 ms waiting on the GPU per frame. Cuts on either side help.
  21 stutters over 20 ms (41.4 per minute), worst 48 ms. Biggest cause: GC pause (G1 Young Generation).

WHAT TO FIX (ranked by time lost per second of play)
  1. [gpu] Partly GPU-bound: 0.36 ms of each 1.39 ms frame waits on the GPU
       Both CPU and GPU cuts help here. CPU work: 1.02 ms per frame.
       Biggest GPU levers: render distance (12), resolution (3440x1440), graphics mode (fancy)
  2. [stutter] Stutter: GC pause (G1 Young Generation)
       11 frames over 20 ms, worst 41 ms, 613 ms of extra frame time per minute
       allocation 685 MB/s; 11 collections, worst 38 ms
       162 MB/s collections_of_optimizations (24%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
       93 MB/s fastchunkgen (14%): NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
       78 MB/s minecraft (11%): PalettedContainer.get -> CallbackInfoReturnable
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [cpu] embeddium costs 0.084 ms per frame on the render thread
       8.4% of render-thread CPU time, mostly in world, 47% in its own code (rest is vanilla/library code it called)
       47%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (30%), executing GL32C.nglMultiDrawElementsBaseVertex (23%)
       17%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:222   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.render.texture.SpriteUtil.markSpriteActive:22 (17%), executing GL32C.glFenceSync (5.2%)
       8.9%  LevelRenderer.renderCloudsFast:7112 [mixin handler from me.jellysquid.mods.sodium.mixin.features.render.world.clouds.WorldRendererMixin]   <- LevelRenderer.renderClouds:1900
               hot: me.jellysquid.mods.sodium.client.render.immediate.CloudRenderer.applyFogModifiers:253 (13%), executing GL30C.glBindVertexArray (10%)
       removing this cost entirely: about 721 -> 767 fps
  4. [cpu] xaeroworldmap costs 0.069 ms per frame on the render thread
       6.9% of render-thread CPU time, mostly in no phase, 54% in its own code (rest is vanilla/library code it called)
       94%  xaero.map.events.ClientEventsForge.renderTick:32   <- Minecraft.runTick:1148
               hot: xaero.map.graphics.TextureUploader.uploadTextures:118 (24%), executing GL11C.glFinish (30%)
       5.8%  Minecraft.onRunTickStart:36455 [mixin handler from xaero.map.mixin.MixinForgeMinecraftClient]   <- Minecraft.runTick
               hot: xaero.map.region.texture.RegionTexture.setBiome:685 (94%)
       removing this cost entirely: about 721 -> 758 fps
  5. [tick] Each client tick takes 4.59 ms
       20 ticks a second run inline on the render thread, so 20 frames a second each take 4.59 ms longer than the rest (uneven frame pacing).
       collections_of_optimizations 0.54 ms per tick
       punchy 0.20 ms per tick
       linggango_tweaks 0.28 ms per tick
       xaerominimap 0.13 ms per tick
       pehkui 0.12 ms per tick
  6. [cpu] immediatelyfast costs 0.058 ms per frame on the render thread
       5.8% of render-thread CPU time, mostly in world, 30% in its own code (rest is vanilla/library code it called)
       45%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (80%), executing RenderStateShard.clearRenderState:41 (10%)
       18%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125   <- LevelRenderer.renderLevel:1283
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (36%), executing RenderStateShard.setupRenderState:37 (17%)
       17%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105   <- LevelRenderer.renderLevel:1228
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (64%), executing GL15C.nglBufferSubData (13%)
       removing this cost entirely: about 721 -> 752 fps
  7. [cpu] collections_of_optimizations costs 0.058 ms per frame on the render thread
       5.7% of render-thread CPU time, mostly in world, 87% in its own code (rest is vanilla/library code it called)
       31%  dev.engine_room.flywheel.impl.task.ParallelTaskExecutor.coo$unparkWorkers:517 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.flywheel.MixinParallelTaskExecutor]   <- dev.engine_room.flywheel.impl.task.ParallelTaskExecutor.execute:106
               hot: com.misanthropy.collections_of_optimizations.core.ParkingNotifier.post:28 (100%), executing Unsafe.unpark (100%)
       14%  ClientLevel.coo$planDisplayTick:25091 [mixin wrapMethod from com.misanthropy.collections_of_optimizations.mixin.subtleeffects.MixinClientLevelDisplayTick]   <- ClientLevel.animateTick [mixin handler from einstein.subtle_effects.mixin.client.ClientLevelMixin]
               hot: com.misanthropy.collections_of_optimizations.core.SubtleEffectsDisplayTick.run:161 (56%), executing Level.getGameTime:729 (13%)
       6.1%  me.decce.gnetum.ASMEventHandlerHelper.coo$singleModIdLookup:532 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.gnetum.MixinASMEventHandlerHelper]   <- me.decce.gnetum.ASMEventHandlerHelper.tryGetModId
               executing Reference2ObjectOpenHashMap.get:321 (100%)
       removing this cost entirely: about 721 -> 752 fps
  8. [stutter] Stutter: unexplained (present)
       3 frames over 20 ms, worst 48 ms, 176 ms of extra frame time per minute
  9. [cpu] punchy costs 0.040 ms per frame on the render thread
       3.9% of render-thread CPU time, mostly in world, 75% in its own code (rest is vanilla/library code it called)
       84%  ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
               hot: punchy.client.state.MovementStateMachine.beginRenderSample:413 (4.5%), executing Reference.clear0 (5.3%)
       14%  punchy.platform.ForgeClientPlatform.onClientTick:109   <- Minecraft.tick:1875
               hot: punchy.client.animation.PunchyAnimationManager.normalizeOptionId:357 (9.1%), executing String.replace (14%)
       removing this cost entirely: about 721 -> 742 fps
 10. [cpu] linggango_tweaks costs 0.039 ms per frame on the render thread
       3.9% of render-thread CPU time, mostly in world, 31% in its own code (rest is vanilla/library code it called)
       18%  GameRenderer.linggango$lumaOutlineFirstPerson:18121 [mixin handler from com.misanthropy.linggango.linggango_tweaks.mixin.lumalight.FirstPersonRimMixin]   <- GameRenderer.renderLevel:1132
               hot: com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.drawInPlace:166 (57%), executing GL11C.glViewport (14%)
       16%  snownee.jade.util.ClientProxy.lambda$init$0:113   <- ForgeGui.gnetum$postEvent:3138 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
               hot: snownee.jade.overlay.DisplayHelper.drawText:429 (12%), executing BufferBuilder.endVertex:263 (32%)
       13%  com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205   <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
               executing GL20C.glUseProgram (29%)
       removing this cost entirely: about 721 -> 741 fps

FRAMES
  21,875 frames   p50 1.00 ms   p95 3.47 ms   p99 8.06 ms   worst 48 ms
  per frame:  tasks 0.038 ms  client tick 0.13 ms  render 0.73 ms  present 0.37 ms  other 0.12 ms
  inside those:  swap 0.36 ms  world 0.57 ms  hud 0.12 ms  screen 0.008 ms
  client tick: 4.59 ms per tick, 20.0 ticks per second
  GPU busy per frame (timer queries): p50 0.70 ms   p95 1.52 ms   p99 2.36 ms
  GPU time per pass (mean per frame, each pass also holds what mods drew at the stage before it):
    0.023 ms  2.9%  sky and frame setup   (p95 0.029 ms)
    0.13 ms  17%  solid terrain   (p95 0.27 ms)
    0.026 ms  3.3%  cutout mipped terrain   (p95 0.035 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.002 ms)
    0.022 ms  2.8%  entities   (p95 0.052 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    0.034 ms  4.3%  translucent terrain   (p95 0.28 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.002 ms)
    0.000 ms  <0.1%  particles   (p95 0.005 ms)
    0.045 ms  5.7%  weather and clouds   (p95 0.089 ms)
    0.000 ms  <0.1%  end of level render   (p95 0.002 ms)
    0.22 ms  28%  hand and post effects   (p95 0.33 ms)
    0.16 ms  20%  hud   (p95 0.25 ms)
    0.12 ms  16%  screens and rest of frame   (p95 0.39 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  5,560 samples: CPU work 72%, GPU wait 27%, limiter 0.0%, blocked on other threads 0.5%
  mods caused 78% of render-thread CPU work, vanilla/forge/driver the rest
  17% of CPU work is inside OpenGL calls (driver work or a GPU sync), mostly glFinish; the mod that made the call is charged for it below
  ms/frame  share  own   mod                          mostly in
  0.12 ms   12%    86%   minecraft (vanilla)          world
  0.098 ms  9.7%   100%  forge (loader, events)       world
  0.084 ms  8.4%   47%   embeddium                    world
  0.069 ms  6.9%   54%   xaeroworldmap                no phase
  0.058 ms  5.8%   30%   immediatelyfast              world
  0.058 ms  5.7%   87%   collections_of_optimizations world
  0.040 ms  3.9%   75%   punchy                       world
  0.039 ms  3.9%   31%   linggango_tweaks             world
  0.036 ms  3.6%   25%   gnetum                       hud
  0.020 ms  2.0%   15%   oculus                       world
  0.019 ms  1.8%   2.7%  whatslaggin                  world
  0.018 ms  1.8%   11%   let_there_be_atmosphere      world
  0.017 ms  1.7%   50%   xaerolib                     hud
  0.015 ms  1.4%   29%   asyncparticles               world
  0.015 ms  1.4%   67%   mahoutsukai                  world
  0.29 ms   145 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  minecraft (vanilla)  0.12 ms/frame, 12%, hottest vanilla methods:
    10%   Entity.shouldRender:1562  <- me.decce.ixeris.RenderThreadStarter.run:39
    7.7%  EntityRenderDispatcher.getRenderer:530  <- me.decce.ixeris.RenderThreadStarter.run:39
    5.7%  LevelRenderer.renderLevel:1198  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing Iterators$1.next:146 3.6%
  embeddium  0.084 ms/frame, 8.4%
    47%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 30%
          executing GL32C.nglMultiDrawElementsBaseVertex 23%
    17%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:222  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.render.texture.SpriteUtil.markSpriteActive:22 17%
          executing GL32C.glFenceSync 5.2%
    8.9%  LevelRenderer.renderCloudsFast:7112 [mixin handler from me.jellysquid.mods.sodium.mixin.features.render.world.clouds.WorldRendererMixin]  <- LevelRenderer.renderClouds:1900
          hot me.jellysquid.mods.sodium.client.render.immediate.CloudRenderer.applyFogModifiers:253 13%
          executing GL30C.glBindVertexArray 10%
  xaeroworldmap  0.069 ms/frame, 6.9%
    94%   xaero.map.events.ClientEventsForge.renderTick:32  <- Minecraft.runTick:1148
          hot xaero.map.graphics.TextureUploader.uploadTextures:118 24%
          executing GL11C.glFinish 30%
    5.8%  Minecraft.onRunTickStart:36455 [mixin handler from xaero.map.mixin.MixinForgeMinecraftClient]  <- Minecraft.runTick
          hot xaero.map.region.texture.RegionTexture.setBiome:685 94%
  immediatelyfast  0.058 ms/frame, 5.8%
    45%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 80%
          executing RenderStateShard.clearRenderState:41 10%
    18%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125  <- LevelRenderer.renderLevel:1283
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 36%
          executing RenderStateShard.setupRenderState:37 17%
    17%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105  <- LevelRenderer.renderLevel:1228
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 64%
          executing GL15C.nglBufferSubData 13%
  collections_of_optimizations  0.058 ms/frame, 5.7%
    31%   dev.engine_room.flywheel.impl.task.ParallelTaskExecutor.coo$unparkWorkers:517 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.flywheel.MixinParallelTaskExecutor]  <- dev.engine_room.flywheel.impl.task.ParallelTaskExecutor.execute:106
          hot com.misanthropy.collections_of_optimizations.core.ParkingNotifier.post:28 100%
          executing Unsafe.unpark 100%
    14%   ClientLevel.coo$planDisplayTick:25091 [mixin wrapMethod from com.misanthropy.collections_of_optimizations.mixin.subtleeffects.MixinClientLevelDisplayTick]  <- ClientLevel.animateTick [mixin handler from einstein.subtle_effects.mixin.client.ClientLevelMixin]
          hot com.misanthropy.collections_of_optimizations.core.SubtleEffectsDisplayTick.run:161 56%
          executing Level.getGameTime:729 13%
    6.1%  me.decce.gnetum.ASMEventHandlerHelper.coo$singleModIdLookup:532 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.gnetum.MixinASMEventHandlerHelper]  <- me.decce.gnetum.ASMEventHandlerHelper.tryGetModId
          executing Reference2ObjectOpenHashMap.get:321 100%
  punchy  0.040 ms/frame, 3.9%
    84%   ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
          hot punchy.client.state.MovementStateMachine.beginRenderSample:413 4.5%
          executing Reference.clear0 5.3%
    14%   punchy.platform.ForgeClientPlatform.onClientTick:109  <- Minecraft.tick:1875
          hot punchy.client.animation.PunchyAnimationManager.normalizeOptionId:357 9.1%
          executing String.replace 14%
  linggango_tweaks  0.039 ms/frame, 3.9%
    18%   GameRenderer.linggango$lumaOutlineFirstPerson:18121 [mixin handler from com.misanthropy.linggango.linggango_tweaks.mixin.lumalight.FirstPersonRimMixin]  <- GameRenderer.renderLevel:1132
          hot com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.drawInPlace:166 57%
          executing GL11C.glViewport 14%
    16%   snownee.jade.util.ClientProxy.lambda$init$0:113  <- ForgeGui.gnetum$postEvent:3138 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          hot snownee.jade.overlay.DisplayHelper.drawText:429 12%
          executing BufferBuilder.endVertex:263 32%
    13%   com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          executing GL20C.glUseProgram 29%
  gnetum  0.036 ms/frame, 3.6%
    100%  ForgeGui.gnetum$render$mixinextras$bridge$64 [mixin wrapOperation from me.decce.gnetum.mixins.ForgeGuiMixin]  <- GameRenderer.render:945
          hot ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin] 50%
          executing ASMEventHandler.invoke:55 23%

  blocked (render thread parked, waiting for another thread):
    0.008 ms/frame minecraft (vanilla)     Minecraft.runTick:1177

STUTTERS (frames over 20 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  11      41 ms     613 ms      GC pause (G1 Young Generation)
  3       48 ms     176 ms      unexplained (present)
  2       37 ms     142 ms      unexplained (render)
  1       32 ms     62 ms       flywheel: dev.engine_room.flywheel.impl.task.WaitGroup.await
  1       32 ms     61 ms       JVM safepoint for a stack sample (profiler overhead, not your mods)
  1       31 ms     58 ms       subtle_effects: einstein.subtle_effects.particle.SplashRippleParticle$Provider.createParticle
  1       29 ms     55 ms       vanilla minecraft: Entity.shouldRender
  1       21 ms     39 ms       unexplained (client tick)

  worst frames:
  04:33:24.708  48 ms    present 42 ms         unexplained (present)
                             1 stack samples landed inside this frame, too few to name a cause
  04:33:23.984  41 ms    render 40 ms          GC pause (G1 Young Generation)
                             38 ms of the frame was a stop-the-world collection
  04:33:22.900  37 ms    render 37 ms          unexplained (render)
                             1 stack samples landed inside this frame, too few to name a cause
  04:33:18.335  37 ms    render 37 ms          unexplained (render)
                             8 samples, no single owner
  04:33:20.043  34 ms    render 34 ms          GC pause (G1 Young Generation)
                             31 ms of the frame was a stop-the-world collection
  04:33:32.335  34 ms    client tick 31 ms     GC pause (G1 Young Generation)
                             22 ms of the frame was a stop-the-world collection
  04:33:24.474  32 ms    render 32 ms          flywheel: dev.engine_room.flywheel.impl.task.WaitGroup.await
                             1 of 2 samples, hottest line org.violetmoon.quark.content.tools.item.PathfindersQuillItem.getActiveQuill:109
  04:33:33.040  32 ms    present 32 ms         JVM safepoint for a stack sample (profiler overhead, not your mods)
                             31 ms with every thread stopped for a stack sample (this profiler or spark); a thread was slow to reach the safepoint
  04:33:26.411  32 ms    render 32 ms          GC pause (G1 Young Generation)
                             29 ms of the frame was a stop-the-world collection
  04:33:29.682  31 ms    client tick 4.79 ms   subtle_effects: einstein.subtle_effects.particle.SplashRippleParticle$Provider.createParticle
                             5 of 6 samples, hottest line einstein.subtle_effects.particle.SplashRippleParticle$Provider.createParticle:90

MEMORY AND GC
  allocated 20.4 GB (685 MB/s, exact, all threads), max heap 10.0 GB
  11 GC pauses (0 old/full), 277 ms paused (0.9%), worst 38 ms, one every 2.8 s
  longest pauses:
    04:33:23.981  38 ms  G1 Young Generation, G1 Evacuation Pause
    04:33:20.040  32 ms  G1 Young Generation, G1 Evacuation Pause
    04:33:26.408  29 ms  G1 Young Generation, GCLocker Initiated GC
    04:33:28.440  26 ms  G1 Young Generation, G1 Evacuation Pause
    04:33:34.321  26 ms  G1 Young Generation, G1 Evacuation Pause
    04:33:30.564  23 ms  G1 Young Generation, GCLocker Initiated GC
    04:33:32.329  22 ms  G1 Young Generation, G1 Evacuation Pause
    04:33:36.664  22 ms  G1 Young Generation, G1 Evacuation Pause
  heap after GC 6.1 GB (61% of max, old garbage stays until the next marking cycle), changed by 691 MB over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    162 MB/s  24%    collections_of_optimizations 1,347 samples
        10%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
        8.1%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
        7.2%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
    93 MB/s   14%    fastchunkgen              466 samples
        9.9%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
        8.8%  ChunkMap.lambda$scheduleChunkLoad$3:15032 [mixin merged from com.misanthropy.fastchunkgen.threading.chunkio.mixin.MixinThreadedAnvilChunkStorage] -> DataResult
        6.6%  com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
    78 MB/s   11%    minecraft (vanilla)       1,652 samples
        12%  PalettedContainer.get -> CallbackInfoReturnable
        7.1%  RegionFile.getChunkDataInputStream:180 -> [B
        5.7%  FastBufferedInputStream.<init>:26 -> [B
    50 MB/s   7.3%   lithoform                 285 samples
        14%  com.misanthropy.lithoform.bowl.Special3D.fillArray:23 -> DensityFunctions$Spline$Point
        10%  com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
        8.6%  com.misanthropy.lithoform.bowl.Special3D.compute:18 -> DensityFunctions$Spline$Point
    31 MB/s   4.6%   linggango_tweaks          321 samples
        6.2%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
    24 MB/s   3.6%   biomeswevegone            114 samples
        15%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$StoneDepthCheck$1StoneDepthCondition
        9.6%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$TestRule
        8.0%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> Object;
    23 MB/s   3.3%   radium                    148 samples
        63%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        7.5%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
        6.6%  LevelChunkSection.setBlockStateNoLocking:521 [mixin redirect from me.jellysquid.mods.lithium.mixin.chunk.no_locking.ChunkSectionMixin] -> CallbackInfoReturnable
    19 MB/s   2.8%   modernfix                 235 samples
        41%  org.embeddedt.modernfix.world.gen.PrefetchingBlockColumn.setBlock:113 -> CallbackInfoReturnable
        9.5%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> Object;
        6.0%  ModelManager.lambda$deferBlockStateLoad$3:568 [mixin merged from org.embeddedt.modernfix.common.mixin.perf.dynamic_resources.ModelManagerMixin] -> [B
    18 MB/s   2.6%   xaeroworldmap             87 samples
        26%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> DataResult
        19%  xaero.map.misc.ConsistentBitArray.<init>:30 -> [J
        13%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> Either$Left
    14 MB/s   2.0%   embeddium                 589 samples
        16%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 627869579
        12%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 961614138
        9.4%  me.jellysquid.mods.sodium.client.model.light.smooth.SmoothLightPipeline.calculate:104 -> CallbackInfo

INTEGRATED SERVER (single player; this is world lag, not FPS)
  608 ticks, mspt mean 16 ms, p50 14 ms, p95 33 ms, worst 118 ms, 7 over 50 ms
    3.70 ms/tick  23%    minecraft (vanilla)       
    1.18 ms/tick  7.5%   collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    1.10 ms/tick  7.0%   forge (loader, events)    
    0.76 ms/tick  4.8%   alexsmobs                 com.github.alexthe666.alexsmobs.entity.EntityLeafcutterAnt.tick:260
    0.62 ms/tick  3.9%   radium                    EntitySectionStorage.forEachInBox:555 [mixin handler from me.jellysquid.mods.lithium.mixin.entity.fast_retrieval.SectionedEntityCacheMixin]
    0.60 ms/tick  3.8%   mowziesmobs               com.bobmowzie.mowziesmobs.server.entity.elokosa.EntityElokosaFollowerToHowler.tick:29
    0.36 ms/tick  2.3%   pehkui                    Entity.pehkui$tick:38738 [mixin handler from virtuoel.pehkui.mixin.EntityMixin]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 4.81 of 16 cores, whole machine 66% busy
  cores  n    allocated   group                            runs
  2.23   12   10.1 GB     FastChunkGen worker ##           lithoform 36%, collections_of_optimizations 18%, fastchunkgen 15%
  0.67   1    2.7 GB      Render thread                    xaeroworldmap 14%, minecraft 13%, punchy 9.7%
  0.41   1    861 MB      Linggango Streams                lithoform 64%, linggango_tweaks 31%
  0.37   15   1.9 GB      ForkJoinPool.commonPool-worker-# lithoform 65%, collections_of_optimizations 12%, integrated_api 8.1%
  0.34   1    2.8 GB      Server thread                    minecraft 30%, collections_of_optimizations 7.4%
  0.21   10   461 MB      Chunk Render Task Executor ##    embeddium 46%, minecraft 30%, linggango_tweaks 8.8%
  0.16   10   31 MB       Flywheel Task Executor ##        collections_of_optimizations 75%, flywheel 25%
  0.11   21   276 MB      Thread-#                         xaeroworldmap 63%, minecraft 30%
  0.07   6    75 MB       Lumenite light #                 lumenite 98%
  0.03   15   25 MB       Worker-Main-#                    jdk 53%, minecraft 47%
  0.03   1    337 MB      JFR Event Stream #               no JFR samples (idle or native)
  0.02   1    361 KB      whatslaggin-threads              no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    15 ms/s    226/s    65 us    alexsmobs:leafcutter_ant                    worst 11 ms at 1387, 197, 747
    7.26 ms/s  403/s    18 us    minecraft:item                              worst 29 ms at 1347, 200, 760
    5.23 ms/s  35/s     148 us   alexsmobs:emu                               worst 26 ms at 1489, 188, 785
    3.77 ms/s  21/s     176 us   primitive_mobs:chameleon                    worst 35 ms at 1390, 197, 764
    3.04 ms/s  42/s     73 us    alexsmobs:komodo_dragon                     worst 3.01 ms at 1195, 161, 750
    2.29 ms/s  101/s    23 us    terramity:green_fairy                       worst 0.22 ms at 2506, 79, 764
  entity tick:
    17 ms/s    20/s     862 us   minecraft:player                            worst 7.50 ms at 1336, 200, 778
    2.67 ms/s  106/s    25 us    minecraft:item                              worst 1.75 ms at 1276, 203, 821
    2.00 ms/s  41/s     49 us    alexsmobs:leafcutter_ant                    worst 0.98 ms at 1361, 211, 775
  server entity tick:
    19 ms/s    221/s    86 us    terramity:green_fairy                       worst 3.63 ms at 1359, 121, 856
    14 ms/s    555/s    25 us    minecraft:item                              worst 2.64 ms at 1382, 220, 807
    11 ms/s    89/s     126 us   alexsmobs:leafcutter_ant                    worst 3.27 ms at 1281, 204, 809
    5.64 ms/s  43/s     130 us   hexerei:crow                                worst 3.54 ms at 1300, 175, 691
    3.44 ms/s  30/s     114 us   alexsmobs:toucan                            worst 7.24 ms at 1365, 266, 822
    3.00 ms/s  42/s     71 us    ars_nouveau:starbuncle                      worst 0.68 ms at 1043, 119, 854
    2.78 ms/s  42/s     67 us    ars_nouveau:whirlisprig                     worst 0.74 ms at 1139, 159, 785
    2.66 ms/s  7/s      407 us   mowziesmobs:elokosa_follower_howler         worst 26 ms at 1331, 212, 783
  server block entity tick:
    1.53 ms/s  3,258/s  0 us     minecraft:sculk_sensor                      worst 0.79 ms at 1257, 7, 840
    0.52 ms/s  848/s    1 us     minecraft:campfire                          worst 2.31 ms at 1357, 273, 758
  screen:
    5.41 ms/s  75/s     72 us    net.minecraft.client.gui.screens.ChatScreen worst 0.72 ms

JVM AND I/O
  class loads over 1 ms: 315 (770 ms), on the render/server thread 73 (212 ms)
    by owner: minecraft 137 classes, 358 ms; saintsdragons 27 classes, 50 ms; byepregen 8 classes, 49 ms; linggango_tweaks 11 classes, 46 ms; linggango_fixes 16 classes, 39 ms
  render thread file I/O: 2.55 ms in 1 events, forge at UnionFileSystem.byteChannel:348 (1.20.1-20230612.114412/client-1.20.1-20230612.114412-srg.jar)
  render thread lock: 1.64 ms in 1 events, mahoutsukai at stepsword.mahoutsukai.client.ClientHandler.renderLivingPre:88 (ArrayList)
  non-GC safepoints: 40 ms total (last: ThreadDump)
  log output: 3.8 lines/s, top: 3.5/s  net.minecraft.world.level.chunk.storage.ChunkSerializer
  exceptions thrown: 83.0/s, top: 3.9/s  UnionFileSystem$NoSuchFileException from modernfix at ModelManager.lambda$deferBlockStateLoad$3:568 [mixin merged from org.embeddedt.modernfix.common.mixin.perf.dynamic_resources.ModelManagerMixin]

MOD VERSIONS (mods named in the findings)
  embeddium 0.3.32-beta.114-dirty+mc1.20.1;  xaeroworldmap 1.46.0;  immediatelyfast 1.5.5+1.20.4;  
  collections_of_optimizations 5.6;  punchy 2.8c;  linggango_tweaks 7.39;  xaerominimap 26.5.0;  
  pehkui 3.8.2+1.20.1-forge;  fastchunkgen 0.39;  ;  

RECORDING
  stack sampler every 5 ms: 5,560 render-thread, 1,610 server-thread samples (server only while ticking)
  JFR on (cpu, allocation, locks, file io, class loading, safepoints, exceptions): 6,854 CPU samples, 7,988 allocation samples
  method names: SRG ids translated to Mojang names; mixin handlers are charged to the mod whose mixin injected them
  'own' = share of a mod's time spent in its own classes; the rest is vanilla or library code it called
