WhatsLaggin report (manual)  1m11s recorded, ended 2026-10-23 05:31:36
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 32, simulation 7, graphics fancy, shaders Solas Shader V3.7b.zip
World minecraft:overworld, 65 entities loaded

VERDICT
  109 fps average (9.20 ms per frame), 1% low 53 fps, 0.1% low 17 fps.
  GPU-BOUND: 6.44 ms of each frame (70%) is the CPU waiting for the GPU. The CPU part is only 2.76 ms.
  Optimising mod code on the render thread will not raise FPS until the GPU load drops.
  14 stutters over 24 ms (11.8 per minute), worst 103 ms. Biggest cause: GC pause (G1 Young Generation).

WHAT TO FIX (ranked by time lost per second of play)
  1. [gpu] GPU-bound: 70% of every frame is spent waiting on the GPU
       The CPU finishes its part of a frame in 2.76 ms and then waits 6.44 ms in glfwSwapBuffers for the GPU.
       GPU time for the frame's draw calls: p50 8.52 ms, p95 9.57 ms (timer queries).
       Cutting CPU work (mods below) will NOT raise FPS until GPU load drops.
       Biggest GPU levers: shader pack 'Solas Shader V3.7b.zip' (lower its shadow/volumetric settings), render distance (32), resolution (3440x1440), graphics mode (fancy)
  2. [stutter] Stutter: GC pause (G1 Young Generation)
       12 frames over 24 ms, worst 103 ms, 392 ms of extra frame time per minute
       allocation 402 MB/s; 13 collections, worst 95 ms
       105 MB/s collections_of_optimizations (26%): com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
       51 MB/s fastchunkgen (13%): NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
       39 MB/s lithoform (9.6%): com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [world] minecraft:player (entity render) costs 41 ms every second
       7,733 calls, 377 us each, worst 1.68 ms at 2527, 68, 778
  4. [cpu] embeddium costs 0.62 ms per frame on the render thread
       23% of render-thread CPU time, mostly in world, 69% in its own code (rest is vanilla/library code it called)
       84%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:275   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (42%), executing GL32C.nglMultiDrawElementsBaseVertex (21%)
       11%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.render.chunk.region.RenderRegionManager.update:51 (25%), executing PriorityQueue.isEmpty:63 (1.9%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  5. [stutter] Stutter: GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
       2 frames over 24 ms, worst 44 ms, 59 ms of extra frame time per minute
       allocation 402 MB/s; 13 collections, worst 95 ms
       105 MB/s collections_of_optimizations (26%): com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
       51 MB/s fastchunkgen (13%): NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
       39 MB/s lithoform (9.6%): com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  6. [cpu] oculus costs 0.33 ms per frame on the render thread
       13% of render-thread CPU time, mostly in world, 39% in its own code (rest is vanilla/library code it called)
       40%  LevelRenderer.iris$renderTerrainShadows:16196 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1155
               hot: net.irisshaders.iris.shadows.ShadowRenderer.renderPlayerEntity:687 (17%), executing ASMEventHandler.invoke:55 (11%)
       13%  LevelRenderer.iris$beginLevelRender:16171 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1149
               hot: net.irisshaders.iris.uniforms.custom.cached.CachedUniform.evaluateTo:92 (21%), executing JNI.callPV (7.5%)
       13%  LevelRenderer.iris$beginTranslucents:16334 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1370
               hot: net.irisshaders.iris.pathways.HandRenderer.renderSolid:96 (18%), executing GL11C.nglDrawElements (6.2%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  7. [cpu] xaeroworldmap costs 0.20 ms per frame on the render thread
       7.4% of render-thread CPU time, mostly in no phase, 37% in its own code (rest is vanilla/library code it called)
       100%  xaero.map.events.ClientEventsForge.renderTick:32   <- Minecraft.runTick:1148
               hot: xaero.map.misc.CaveStartCalculator.getCaving:102 (29%), executing Level.getChunk:4551 (31%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  8. [cpu] entity_model_features costs 0.16 ms per frame on the render thread
       6.0% of render-thread CPU time, mostly in world, 82% in its own code (rest is vanilla/library code it called)
       91%  traben.entity_model_features.models.parts.EMFModelPartVanilla.render:116   <- AgeableListModel.lambda$renderToBuffer$2:62
               hot: traben.entity_model_features.models.animation.math.asm.ASMParser.lambda$compileOrNull$0:162 (60%), executing EMF_ASM_Parsed_156.eval (60%)
       4.5%  ItemInHandRenderer.wrapRenderHandsWithItems:4647 [mixin wrapMethod from traben.entity_model_features.mixin.mixins.rendering.Mixin_WrapFirstPersonHandRender]   <- ItemInHandRenderer.renderHandsWithItems
               hot: traben.entity_model_features.models.parts.EMFModelPartRoot.resetVanillaPartsToDefaults:425 (73%), executing HashMap$Values.forEach (73%)
       4.1%  traben.entity_model_features.models.animation.state.EMFEntityRenderState.activate:306   <- traben.entity_texture_features.features.state.ETFState.mount:51
               hot: traben.entity_model_features.models.parts.EMFModelPartRoot.resetVanillaPartsToDefaults:425 (50%), executing HashMap$Values.forEach (50%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  9. [cpu] gnetum costs 0.11 ms per frame on the render thread
       4.2% of render-thread CPU time, mostly in hud, 32% in its own code (rest is vanilla/library code it called)
       99%  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] (51%), executing ASMEventHandler.invoke:55 (26%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
 10. [cpu] collections_of_optimizations costs 0.11 ms per frame on the render thread
       4.0% of render-thread CPU time, mostly in client tick, 55% in its own code (rest is vanilla/library code it called)
       46%  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:144 (46%), executing Level.getGameTime:729 (46%)
       4.9%  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%)
       4.9%  top.theillusivec4.curios.common.CuriosHelper.coo$fastEquippedMiss:530 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.curios.MixinCuriosHelperFastMiss]   <- top.theillusivec4.curios.common.CuriosHelper.findEquippedCurio
               hot: com.misanthropy.collections_of_optimizations.core.CurioPresenceCache.mayHaveEquipped:66 (100%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes

FRAMES
  7,732 frames   p50 9.18 ms   p95 10 ms   p99 11 ms   worst 103 ms
  per frame:  tasks 0.076 ms  client tick 0.43 ms  render 1.96 ms  present 6.45 ms  other 0.29 ms
  inside those:  swap 6.44 ms  world 1.66 ms  hud 0.26 ms  screen 0.001 ms
  client tick: 2.36 ms per tick, 20.0 ticks per second
  GPU busy per frame (timer queries): p50 8.52 ms   p95 9.57 ms   p99 9.96 ms
  GPU time per pass (mean per frame, each pass also holds what mods drew at the stage before it):
    0.16 ms  1.8%  sky and frame setup   (p95 0.16 ms)
    5.52 ms  65%  solid terrain   (p95 6.36 ms)
    0.000 ms  <0.1%  cutout mipped terrain   (p95 0.002 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.002 ms)
    0.028 ms  0.3%  entities   (p95 0.072 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    1.20 ms  14%  translucent terrain   (p95 1.43 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.003 ms)
    0.013 ms  0.1%  particles   (p95 0.053 ms)
    0.000 ms  <0.1%  weather and clouds   (p95 0.002 ms)
    1.19 ms  14%  end of level render   (p95 1.65 ms)
    0.000 ms  <0.1%  hand and post effects   (p95 0.002 ms)
    0.075 ms  0.9%  hud   (p95 0.21 ms)
    0.28 ms  3.4%  screens and rest of frame   (p95 0.78 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  13,974 samples: CPU work 29%, GPU wait 71%, limiter 0.0%, blocked on other threads <0.1%
  mods caused 90% of render-thread CPU work, vanilla/forge/driver the rest
  14% of CPU work is inside OpenGL calls (driver work or a GPU sync), mostly glMultiDrawElementsBaseVertex; the mod that made the call is charged for it below
  ms/frame  share  own   mod                          mostly in
  0.62 ms   23%    69%   embeddium                    world
  0.33 ms   13%    39%   oculus                       world
  0.20 ms   7.4%   37%   xaeroworldmap                no phase
  0.16 ms   6.0%   82%   entity_model_features        world
  0.15 ms   5.7%   91%   minecraft (vanilla)          client tick
  0.12 ms   4.4%   100%  forge (loader, events)       world
  0.11 ms   4.2%   32%   gnetum                       hud
  0.11 ms   4.0%   55%   collections_of_optimizations client tick
  0.051 ms  1.9%   43%   linggango_tweaks             client tick
  0.050 ms  1.9%   74%   punchy                       world
  0.048 ms  1.8%   33%   asyncparticles               tasks
  0.047 ms  1.8%   15%   entity_texture_features      world
  0.037 ms  1.4%   46%   immediatelyfast              hud
  0.033 ms  1.2%   42%   brute_force_culling_revived  world
  0.028 ms  1.1%   14%   whatslaggin                  world
  0.57 ms   142 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  embeddium  0.62 ms/frame, 23%
    84%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:275  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 42%
          executing GL32C.nglMultiDrawElementsBaseVertex 21%
    11%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.render.chunk.region.RenderRegionManager.update:51 25%
          executing PriorityQueue.isEmpty:63 1.9%
  oculus  0.33 ms/frame, 13%
    40%   LevelRenderer.iris$renderTerrainShadows:16196 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1155
          hot net.irisshaders.iris.shadows.ShadowRenderer.renderPlayerEntity:687 17%
          executing ASMEventHandler.invoke:55 11%
    13%   LevelRenderer.iris$beginLevelRender:16171 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1149
          hot net.irisshaders.iris.uniforms.custom.cached.CachedUniform.evaluateTo:92 21%
          executing JNI.callPV 7.5%
    13%   LevelRenderer.iris$beginTranslucents:16334 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1370
          hot net.irisshaders.iris.pathways.HandRenderer.renderSolid:96 18%
          executing GL11C.nglDrawElements 6.2%
  xaeroworldmap  0.20 ms/frame, 7.4%
    100%  xaero.map.events.ClientEventsForge.renderTick:32  <- Minecraft.runTick:1148
          hot xaero.map.misc.CaveStartCalculator.getCaving:102 29%
          executing Level.getChunk:4551 31%
  entity_model_features  0.16 ms/frame, 6.0%
    91%   traben.entity_model_features.models.parts.EMFModelPartVanilla.render:116  <- AgeableListModel.lambda$renderToBuffer$2:62
          hot traben.entity_model_features.models.animation.math.asm.ASMParser.lambda$compileOrNull$0:162 60%
          executing EMF_ASM_Parsed_156.eval 60%
    4.5%  ItemInHandRenderer.wrapRenderHandsWithItems:4647 [mixin wrapMethod from traben.entity_model_features.mixin.mixins.rendering.Mixin_WrapFirstPersonHandRender]  <- ItemInHandRenderer.renderHandsWithItems
          hot traben.entity_model_features.models.parts.EMFModelPartRoot.resetVanillaPartsToDefaults:425 73%
          executing HashMap$Values.forEach 73%
    4.1%  traben.entity_model_features.models.animation.state.EMFEntityRenderState.activate:306  <- traben.entity_texture_features.features.state.ETFState.mount:51
          hot traben.entity_model_features.models.parts.EMFModelPartRoot.resetVanillaPartsToDefaults:425 50%
          executing HashMap$Values.forEach 50%
  minecraft (vanilla)  0.15 ms/frame, 5.7%, hottest vanilla methods:
    20%   LevelChunk$BoundTickingBlockEntity.getPos:719  <- me.decce.ixeris.RenderThreadStarter.run:39
    6.9%  LevelChunk$BoundTickingBlockEntity.tick:688  <- me.decce.ixeris.RenderThreadStarter.run:39
    6.5%  BlockState.getLightBlock:617  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing ThreadLocal$ThreadLocalMap.getEntryAfterMiss 53%
  gnetum  0.11 ms/frame, 4.2%
    99%   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] 51%
          executing ASMEventHandler.invoke:55 26%
  collections_of_optimizations  0.11 ms/frame, 4.0%
    46%   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:144 46%
          executing Level.getGameTime:729 46%
    4.9%  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%
    4.9%  top.theillusivec4.curios.common.CuriosHelper.coo$fastEquippedMiss:530 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.curios.MixinCuriosHelperFastMiss]  <- top.theillusivec4.curios.common.CuriosHelper.findEquippedCurio
          hot com.misanthropy.collections_of_optimizations.core.CurioPresenceCache.mayHaveEquipped:66 100%
  linggango_tweaks  0.051 ms/frame, 1.9%
    16%   com.misanthropy.linggango.linggango_tweaks.foliage.particle.FallingLeafParticle.render:158  <- ParticleEngine.render:3248
          hot com.misanthropy.linggango.linggango_tweaks.foliage.particle.Billboard.vertex:45 100%
          executing VertexConsumer.uv2:55 42%
    7.8%  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 33%
          executing BakedGlyph.render 17%
    7.8%  com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          executing GL30C.glBindVertexArray 33%

STUTTERS (frames over 24 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  12      103 ms    392 ms      GC pause (G1 Young Generation)
  2       44 ms     59 ms       GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)

  worst frames:
  05:30:37.421  103 ms   present 99 ms         GC pause (G1 Young Generation)
                             95 ms of the frame was a stop-the-world collection
  05:30:37.261  73 ms    present 70 ms         GC pause (G1 Young Generation)
                             68 ms of the frame was a stop-the-world collection
  05:30:49.494  72 ms    present 70 ms         GC pause (G1 Young Generation)
                             70 ms of the frame was a stop-the-world collection
  05:30:39.175  49 ms    present 46 ms         GC pause (G1 Young Generation)
                             45 ms of the frame was a stop-the-world collection
  05:30:44.937  44 ms    render 43 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             39 ms of the frame was a stop-the-world collection
  05:30:33.863  44 ms    present 42 ms         GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             39 ms of the frame was a stop-the-world collection
  05:30:43.040  41 ms    client tick 33 ms     GC pause (G1 Young Generation)
                             30 ms of the frame was a stop-the-world collection
  05:30:49.084  39 ms    client tick 34 ms     GC pause (G1 Young Generation)
                             29 ms of the frame was a stop-the-world collection
  05:30:31.570  38 ms    tasks 31 ms           GC pause (G1 Young Generation)
                             30 ms of the frame was a stop-the-world collection
  05:30:45.705  37 ms    present 34 ms         GC pause (G1 Young Generation)
                             28 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 28.0 GB (402 MB/s, exact, all threads), max heap 10.0 GB
  13 GC pauses (0 old/full), 512 ms paused (0.7%), worst 95 ms, one every 5.5 s
  longest pauses:
    05:30:37.421  95 ms  G1 Young Generation, GCLocker Initiated GC
    05:30:49.493  70 ms  G1 Young Generation, G1 Evacuation Pause
    05:30:37.261  68 ms  G1 Young Generation, G1 Evacuation Pause
    05:30:39.174  45 ms  G1 Young Generation, GCLocker Initiated GC
    05:30:31.563  30 ms  G1 Young Generation, G1 Evacuation Pause
    05:30:43.032  30 ms  G1 Young Generation, G1 Evacuation Pause
    05:30:49.074  30 ms  G1 Young Generation, G1 Evacuation Pause
    05:30:34.800  28 ms  G1 Young Generation, G1 Evacuation Pause
  3 Remark/Cleanup pauses (concurrent mark cycles, not in the count above), 80 ms paused, worst 39 ms
  heap after GC 5.9 GB (59% of max, old garbage stays until the next marking cycle), changed by 322 MB over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    105 MB/s  26%    collections_of_optimizations 1,353 samples
        13%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
        7.6%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> MultifaceSpreader$SpreadPos
        5.0%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> CallbackInfoReturnable
    51 MB/s   13%    fastchunkgen              606 samples
        14%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
        9.2%  com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
        5.0%  ChunkStatus.lambda$generate$0:3108 [mixin merged from com.misanthropy.fastchunkgen.threading.worldgen.mixin.MixinChunkStatus] -> 1477135618
    39 MB/s   9.6%   lithoform                 445 samples
        23%  com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
        18%  com.misanthropy.lithoform.compat.LandProvinces.province:519 -> Climate$TargetPoint
        9.5%  com.misanthropy.lithoform.compat.LandProvinces.province:519 -> DensityFunction$SinglePointContext
    25 MB/s   6.2%   minecraft (vanilla)       2,561 samples
        9.0%  SortedArraySet.iterator:192 -> SortedArraySet$ArrayIterator
        6.7%  ChunkSerializer.write:297 -> DataResult
    22 MB/s   5.5%   linggango_tweaks          485 samples
        15%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
    22 MB/s   5.5%   biomeswevegone            159 samples
        17%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$StoneDepthCheck$1StoneDepthCondition
        14%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$TestRule
        11%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> Optional
    18 MB/s   4.5%   radium                    389 samples
        61%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        16%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
        9.5%  LevelChunkSection.setBlockStateNoLocking:521 [mixin redirect from me.jellysquid.mods.lithium.mixin.chunk.no_locking.ChunkSectionMixin] -> CallbackInfoReturnable
    14 MB/s   3.5%   modernfix                 374 samples
        53%  org.embeddedt.modernfix.world.gen.PrefetchingBlockColumn.setBlock:113 -> CallbackInfoReturnable
        13%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> StructureTemplate$StructureBlockInfo
        6.9%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> Object;
    14 MB/s   3.5%   revelationfix             99 samples
        23%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> 857345066
        17%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> Long
        14%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> ImmutableCollections$ListItr
    10 MB/s   2.4%   embeddium                 1,136 samples
        26%  me.jellysquid.mods.sodium.client.render.chunk.lists.ChunkRenderList.sectionsWithGeometryIterator:65 -> ReversibleByteArrayIterator
        14%  me.jellysquid.mods.sodium.client.render.chunk.lists.ChunkRenderList.<init>:17 -> [B
        14%  me.jellysquid.mods.sodium.client.render.chunk.lists.ChunkRenderList.<init>:20 -> [B

INTEGRATED SERVER (single player; this is world lag, not FPS)
  1,424 ticks, mspt mean 4.69 ms, p50 4.03 ms, p95 7.80 ms, worst 51 ms, 1 over 50 ms
    1.39 ms/tick  30%    minecraft (vanilla)       
    0.74 ms/tick  16%    collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.40 ms/tick  8.5%   forge (loader, events)    
    0.28 ms/tick  6.0%   naturesaura               de.ellpeck.naturesaura.events.CommonEvents.onLevelTick:95
    0.19 ms/tick  4.1%   linggango_tweaks          ChunkMap.lt$endTick:17918 [mixin handler from com.misanthropy.linggango.linggango_tweaks.mixin.minecraft.ChunkSaveSmoothingMixin]
    0.13 ms/tick  2.8%   radium                    ServerLevel.redirectBlockStateTick:4159 [mixin redirect from me.jellysquid.mods.lithium.mixin.alloc.chunk_random.ServerWorldMixin]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 3.54 of 16 cores, whole machine 37% busy
  cores  n    allocated   group                            runs
  2.47   12   17.8 GB     FastChunkGen worker ##           lithoform 57%, collections_of_optimizations 15%, fastchunkgen 12%
  0.30   1    2.9 GB      Render thread                    entity_model_features 13%, xaeroworldmap 10%, embeddium 8.5%
  0.17   1    615 MB      Linggango Streams                lithoform 65%, linggango_tweaks 31%
  0.16   15   2.7 GB      ForkJoinPool.commonPool-worker-# lithoform 58%, collections_of_optimizations 16%, integrated_api 7.2%
  0.13   1    2.0 GB      Server thread                    minecraft 48%, collections_of_optimizations 9.2%
  0.08   10   510 MB      Chunk Render Task Executor ##    embeddium 42%, minecraft 37%, linggango_tweaks 7.7%
  0.07   1    334 MB      BFR-OcclusionCuller              embeddium 76%, brute_force_culling_revived 18%, oculus 6.5%
  0.04   6    174 MB      Lumenite light #                 lumenite 96%

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    41 ms/s    109/s    377 us   minecraft:player                            worst 1.68 ms at 2527, 68, 778
  entity tick:
    9.07 ms/s  20/s     453 us   minecraft:player                            worst 1.15 ms at 2527, 68, 778
    0.96 ms/s  22/s     44 us    hexerei:crow                                worst 0.19 ms at 2765, 76, 1030
  server entity tick:
    2.33 ms/s  20/s     118 us   minecraft:player                            worst 4.09 ms at 2527, 68, 778

JVM AND I/O
  class loads over 1 ms: 4 (21 ms), on the render/server thread 0 (0 ms)
  non-GC safepoints: 1.09 ms total (last: ThreadDump)
  log output: 0.2 lines/s
  exceptions thrown: 10.9/s, top: 2.0/s  NoDiscordClientException from optimized_rpc at dev.firstdark.rpc.exceptions.NoDiscordClientException.<init>:12

MOD VERSIONS (mods named in the findings)
  embeddium 0.3.32-beta.114-dirty+mc1.20.1;  oculus 1.8.6;  xaeroworldmap 1.46.0;  
  entity_model_features 3.3.11;  gnetum 2.5.1+1.20.1-forge;  collections_of_optimizations 5.6;  
  fastchunkgen 0.39;  lithoform 2.0.0-alpha13;  ;  

RECORDING
  stack sampler every 5 ms: 13,974 render-thread, 878 server-thread samples (server only while ticking)
  JFR on (cpu, allocation, locks, file io, class loading, safepoints, exceptions): 11,218 CPU samples, 14,693 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
