WhatsLaggin report (manual)  30.9 s recorded, ended 2026-10-23 04:33:09
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, 131 entities loaded

VERDICT
  978 fps average (1.02 ms per frame), 1% low 197 fps, 0.1% low 93 fps.
  GPU-BOUND: 0.34 ms of each frame (33%) is the CPU waiting for the GPU. The CPU part is only 0.69 ms.
  Optimising mod code on the render thread will not raise FPS until the GPU load drops.
  4 stutters over 20 ms (7.8 per minute), worst 46 ms. Biggest cause: GC pause (G1 Young Generation).

WHAT TO FIX (ranked by time lost per second of play)
  1. [gpu] GPU-bound: 33% of every frame is spent waiting on the GPU
       The CPU finishes its part of a frame in 0.69 ms and then waits 0.34 ms in glfwSwapBuffers for the GPU.
       GPU time for the frame's draw calls: p50 0.66 ms, p95 0.90 ms (timer queries).
       Cutting CPU work (mods below) will NOT raise FPS until GPU load drops.
       Biggest GPU levers: render distance (12), resolution (3440x1440), graphics mode (fancy)
  2. [stutter] Stutter: GC pause (G1 Young Generation)
       3 frames over 20 ms, worst 46 ms, 195 ms of extra frame time per minute
       allocation 250 MB/s; 4 collections, worst 43 ms
       33 MB/s collections_of_optimizations (13%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
       25 MB/s lithoform (10%): NoiseChunk.lithoform$sharedScan:3507 [mixin handler from com.misanthropy.lithoform.mixin.PreliminarySurfaceMixin] -> DensityFunctions$Spline$Point
       24 MB/s minecraft (9.5%): RenderSystem.setProjectionMatrix:1262 -> Matrix4f
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [world] terramity:green_fairy (entity render) costs 22 ms every second
       30,914 calls, 22 us each, worst 1.49 ms at 2515, 69, 789
  4. [cpu] embeddium costs 0.073 ms per frame on the render thread
       11% of render-thread CPU time, mostly in world, 46% in its own code (rest is vanilla/library code it called)
       65%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (37%), executing GL32C.nglMultiDrawElementsBaseVertex (28%)
       6.9%  ShaderInstance.uploadUniforms:4132 [mixin redirect from me.jellysquid.mods.sodium.mixin.features.shader.uniform.ShaderProgramMixin]   <- ShaderInstance.apply:369
               hot: Uniform.sodium$matchesLastUpload:2184 [mixin merged from me.jellysquid.mods.sodium.mixin.features.shader.uniform.UniformMixin] (20%), executing GL20C.nglUniformMatrix4fv (30%)
       6.6%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.render.texture.SpriteUtil.markSpriteActive:22 (45%), executing ConcurrentLinkedDeque.pollFirst (3.4%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  5. [cpu] immediatelyfast costs 0.047 ms per frame on the render thread
       7.2% of render-thread CPU time, mostly in world, 29% in its own code (rest is vanilla/library code it called)
       37%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (74%), executing GL11C.glBindTexture (11%)
       25%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105   <- LevelRenderer.renderLevel:1228
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (73%), executing RenderStateShard.clearRenderState:41 (14%)
       15%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125   <- LevelRenderer.renderLevel:1283
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (45%), executing GL11C.glDisable (11%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  6. [cpu] collections_of_optimizations costs 0.046 ms per frame on the render thread
       6.9% of render-thread CPU time, mostly in world, 83% in its own code (rest is vanilla/library code it called)
       38%  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%)
       13%  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 (36%), executing Level.getGameTime:729 (31%)
       7.7%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.coo$onlyBusyLayers:1065 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.immediatelyfast.MixinBatchableBufferSource]   <- net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:117
               executing ObjectLinkedOpenHashSet.contains:543 (4.8%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  7. [cpu] linggango_tweaks costs 0.031 ms per frame on the render thread
       4.7% of render-thread CPU time, mostly in hud, 28% in its own code (rest is vanilla/library code it called)
       28%  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 (25%), executing BufferBuilder.endVertex:263 (33%)
       17%  com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91   <- GameRenderer.renderLevel:1128
               hot: com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 (34%), executing GL45C.glBlitNamedFramebuffer (25%)
       14%  com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205   <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
               executing GL20C.glUseProgram (22%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  8. [cpu] gnetum costs 0.027 ms per frame on the render thread
       4.1% of render-thread CPU time, mostly in hud, 31% 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] (40%), executing ASMEventHandler.invoke:55 (22%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  9. [cpu] oculus costs 0.026 ms per frame on the render thread
       3.9% of render-thread CPU time, mostly in world, 20% in its own code (rest is vanilla/library code it called)
       22%  LevelRenderer.iris$renderTranslucentAfterDeferred:18140 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1381
               hot: ParticleEngine.lambda$iris$selectParticlesToRender$0:6181 [mixin merged from net.irisshaders.iris.mixin.fantastic.MixinParticleEngine] (8.6%), executing ParticleEngine.render:3227 (20%)
       17%  GameRenderer.iris$disableVanillaHandRendering:8534 [mixin redirect from net.irisshaders.iris.mixin.MixinGameRenderer]   <- GameRenderer.renderItemInHand:852
               hot: RenderSystem._setShaderTexture:2984 [mixin handler from net.irisshaders.iris.mixin.MixinRenderSystem] (7.4%), executing ASMEventHandler.invoke:55 (44%)
       16%  RenderSystem._setShaderTexture:2979 [mixin handler from net.irisshaders.iris.mixin.MixinRenderSystem]   <- RenderSystem._setShaderTexture:1233
               hot: net.irisshaders.iris.gl.IrisRenderSystem$DSAARB.bindTextureToUnit:569 (76%), executing GL45C.glBindTextureUnit (76%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes

FRAMES
  30,162 frames   p50 0.88 ms   p95 1.47 ms   p99 4.10 ms   worst 46 ms
  per frame:  tasks 0.006 ms  client tick 0.064 ms  render 0.58 ms  present 0.34 ms  other 0.036 ms
  inside those:  swap 0.34 ms  world 0.45 ms  hud 0.094 ms  screen 0.003 ms
  client tick: 3.09 ms per tick, 20.2 ticks per second
  GPU busy per frame (timer queries): p50 0.66 ms   p95 0.90 ms   p99 1.28 ms
  GPU time per pass (mean per frame, each pass also holds what mods drew at the stage before it):
    0.022 ms  3.2%  sky and frame setup   (p95 0.025 ms)
    0.22 ms  31%  solid terrain   (p95 0.31 ms)
    0.018 ms  2.5%  cutout mipped terrain   (p95 0.020 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.002 ms)
    0.023 ms  3.3%  entities   (p95 0.026 ms)
    0.000 ms  <0.1%  block entities   (p95 0.001 ms)
    0.004 ms  0.6%  translucent terrain   (p95 0.007 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.001 ms)
    0.002 ms  0.3%  particles   (p95 0.004 ms)
    0.022 ms  3.2%  weather and clouds   (p95 0.024 ms)
    0.000 ms  <0.1%  end of level render   (p95 0.001 ms)
    0.19 ms  27%  hand and post effects   (p95 0.22 ms)
    0.12 ms  17%  hud   (p95 0.14 ms)
    0.090 ms  13%  screens and rest of frame   (p95 0.15 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  6,152 samples: CPU work 64%, GPU wait 35%, limiter 0.0%, blocked on other threads <0.1%
  mods caused 78% of render-thread CPU work, vanilla/forge/driver the rest
  19% 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.076 ms  11%    82%   minecraft (vanilla)          world
  0.073 ms  11%    46%   embeddium                    world
  0.068 ms  10%    100%  forge (loader, events)       world
  0.047 ms  7.2%   29%   immediatelyfast              world
  0.046 ms  6.9%   83%   collections_of_optimizations world
  0.031 ms  4.7%   28%   linggango_tweaks             hud
  0.027 ms  4.1%   31%   gnetum                       hud
  0.026 ms  3.9%   20%   oculus                       world
  0.024 ms  3.6%   72%   punchy                       world
  0.019 ms  2.8%   64%   geckolib                     world
  0.018 ms  2.7%   14%   asyncparticles               world
  0.015 ms  2.2%   6.8%  whatslaggin                  world
  0.013 ms  1.9%   13%   let_there_be_atmosphere      world
  0.009 ms  1.4%   60%   brute_force_culling_revived  world
  0.008 ms  1.2%   68%   mahoutsukai                  world
  0.16 ms   128 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  minecraft (vanilla)  0.076 ms/frame, 11%, hottest vanilla methods:
    17%   Entity.shouldRender:1562  <- me.decce.ixeris.RenderThreadStarter.run:39
    13%   EntityRenderDispatcher.getRenderer:530  <- me.decce.ixeris.RenderThreadStarter.run:39
    7.9%  LevelRenderer.renderLevel:1198  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing Iterators$1.next:146 14%
  embeddium  0.073 ms/frame, 11%
    65%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 37%
          executing GL32C.nglMultiDrawElementsBaseVertex 28%
    6.9%  ShaderInstance.uploadUniforms:4132 [mixin redirect from me.jellysquid.mods.sodium.mixin.features.shader.uniform.ShaderProgramMixin]  <- ShaderInstance.apply:369
          hot Uniform.sodium$matchesLastUpload:2184 [mixin merged from me.jellysquid.mods.sodium.mixin.features.shader.uniform.UniformMixin] 20%
          executing GL20C.nglUniformMatrix4fv 30%
    6.6%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.render.texture.SpriteUtil.markSpriteActive:22 45%
          executing ConcurrentLinkedDeque.pollFirst 3.4%
  immediatelyfast  0.047 ms/frame, 7.2%
    37%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 74%
          executing GL11C.glBindTexture 11%
    25%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105  <- LevelRenderer.renderLevel:1228
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 73%
          executing RenderStateShard.clearRenderState:41 14%
    15%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125  <- LevelRenderer.renderLevel:1283
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 45%
          executing GL11C.glDisable 11%
  collections_of_optimizations  0.046 ms/frame, 6.9%
    38%   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%
    13%   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 36%
          executing Level.getGameTime:729 31%
    7.7%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.coo$onlyBusyLayers:1065 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.immediatelyfast.MixinBatchableBufferSource]  <- net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:117
          executing ObjectLinkedOpenHashSet.contains:543 4.8%
  linggango_tweaks  0.031 ms/frame, 4.7%
    28%   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 25%
          executing BufferBuilder.endVertex:263 33%
    17%   com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91  <- GameRenderer.renderLevel:1128
          hot com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 34%
          executing GL45C.glBlitNamedFramebuffer 25%
    14%   com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          executing GL20C.glUseProgram 22%
  gnetum  0.027 ms/frame, 4.1%
    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] 40%
          executing ASMEventHandler.invoke:55 22%
  oculus  0.026 ms/frame, 3.9%
    22%   LevelRenderer.iris$renderTranslucentAfterDeferred:18140 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1381
          hot ParticleEngine.lambda$iris$selectParticlesToRender$0:6181 [mixin merged from net.irisshaders.iris.mixin.fantastic.MixinParticleEngine] 8.6%
          executing ParticleEngine.render:3227 20%
    17%   GameRenderer.iris$disableVanillaHandRendering:8534 [mixin redirect from net.irisshaders.iris.mixin.MixinGameRenderer]  <- GameRenderer.renderItemInHand:852
          hot RenderSystem._setShaderTexture:2984 [mixin handler from net.irisshaders.iris.mixin.MixinRenderSystem] 7.4%
          executing ASMEventHandler.invoke:55 44%
    16%   RenderSystem._setShaderTexture:2979 [mixin handler from net.irisshaders.iris.mixin.MixinRenderSystem]  <- RenderSystem._setShaderTexture:1233
          hot net.irisshaders.iris.gl.IrisRenderSystem$DSAARB.bindTextureToUnit:569 76%
          executing GL45C.glBindTextureUnit 76%
  punchy  0.024 ms/frame, 3.6%
    82%   ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
          hot punchy.client.state.MovementStateMachine.endRenderSample:419 6.9%
          executing Entity.fireImmune:1142 6.0%
    15%   punchy.platform.ForgeClientPlatform.onClientTick:109  <- Minecraft.tick:1875
          hot punchy.config.PunchyTuningConfig.resolveMixSlotForStack:988 9.5%
          executing String.replace 9.5%

STUTTERS (frames over 20 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  3       46 ms     195 ms      GC pause (G1 Young Generation)

  worst frames:
  04:32:39.086  46 ms    render 46 ms          GC pause (G1 Young Generation)
                             42 ms of the frame was a stop-the-world collection
  04:32:48.734  33 ms    client tick 31 ms     GC pause (G1 Young Generation)
                             26 ms of the frame was a stop-the-world collection
  04:32:43.509  25 ms    render 24 ms          GC pause (G1 Young Generation)
                             22 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 7.5 GB (250 MB/s, exact, all threads), max heap 10.0 GB
  4 GC pauses (0 old/full), 108 ms paused (0.3%), worst 43 ms, one every 7.7 s
  longest pauses:
    04:32:39.082  43 ms  G1 Young Generation, G1 Evacuation Pause
    04:32:48.730  26 ms  G1 Young Generation, G1 Evacuation Pause
    04:32:43.506  22 ms  G1 Young Generation, G1 Evacuation Pause
  heap after GC 5.4 GB (54% of max, old garbage stays until the next marking cycle), changed by 118 MB over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    33 MB/s   13%    collections_of_optimizations 1,281 samples
        20%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
        19%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
        9.6%  com.misanthropy.collections_of_optimizations.mixin.nbtload.ListTagInvoker.coo$create -> ListTag
    25 MB/s   10%    lithoform                 359 samples
        17%  NoiseChunk.lithoform$sharedScan:3507 [mixin handler from com.misanthropy.lithoform.mixin.PreliminarySurfaceMixin] -> DensityFunctions$Spline$Point
        14%  com.misanthropy.lithoform.bowl.Special3D.fillArray:23 -> DensityFunctions$Spline$Point
        12%  com.misanthropy.lithoform.bowl.Special3D.compute:18 -> DensityFunctions$Spline$Point
    24 MB/s   9.5%   minecraft (vanilla)       512 samples
        2.8%  RenderSystem.setProjectionMatrix:1262 -> Matrix4f
    18 MB/s   7.2%   linggango_tweaks          235 samples
        9.8%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
        9.6%  snownee.jade.overlay.DisplayHelper.drawText:429 -> CallbackInfoReturnable
        8.0%  com.misanthropy.linggango.linggango_tweaks.worldgen.TemplateCache.load:98 -> [B
    16 MB/s   6.3%   immediatelyfast           118 samples
        25%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> [J
        11%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> Object;
        6.8%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> ReferenceLinkedOpenHashSet
    10 MB/s   3.9%   embeddium                 300 samples
        19%  BufferBuilder.onFormatChanged:5580 [mixin handler from me.jellysquid.mods.sodium.mixin.core.render.immediate.consumer.BufferBuilderMixin] -> SodiumBufferBuilder
        8.2%  me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderMatrices.from:11 -> Matrix4f
        6.9%  me.jellysquid.mods.sodium.client.render.vertex.buffer.SodiumBufferBuilder.<init>:41 -> SodiumBufferBuilderPolygonView
    9 MB/s    3.7%   modernfix                 69 samples
        34%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> StructureTemplate$StructureBlockInfo
        34%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> BlockPos
        12%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> Object;
    9 MB/s    3.6%   punchy                    68 samples
        5.9%  punchy.client.render.PunchyArmRenderer.getArmBaseMatrix:1506 -> Matrix4f
    8 MB/s    3.1%   structureessentials       53 samples
        24%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> HashMap
        23%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> String
        15%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> BlockStateParser
    7 MB/s    2.9%   fastchunkgen              111 samples
        66%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
        5.1%  com.misanthropy.fastchunkgen.base.common.structs.LongHashSet.contains:91 -> Long

INTEGRATED SERVER (single player; this is world lag, not FPS)
  624 ticks, mspt mean 7.40 ms, p50 6.49 ms, p95 12 ms, worst 55 ms, 1 over 50 ms
    1.23 ms/tick  17%    minecraft (vanilla)       
    0.66 ms/tick  8.9%   forge (loader, events)    
    0.56 ms/tick  7.6%   collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.26 ms/tick  3.5%   radium                    EntitySectionStorage.forEachInBox:555 [mixin handler from me.jellysquid.mods.lithium.mixin.entity.fast_retrieval.SectionedEntityCacheMixin]
    0.24 ms/tick  3.2%   pehkui                    Entity.pehkui$tick:38738 [mixin handler from virtuoel.pehkui.mixin.EntityMixin]
    0.24 ms/tick  3.2%   simplyswords              Mob.simplyswords$tryUseHeldWeaponAbility:17667 [mixin handler from net.sweenus.simplyswords.mixin.MobEntityMixin]
    0.22 ms/tick  3.0%   ending_library            Level.guardEntityTick:14052 [mixin handler from com.mega.endinglib.mixin.time.time.LevelMixin]
    0.20 ms/tick  2.7%   linggango_tweaks          com.misanthropy.linggango.linggango_tweaks.echelon.EchelonEvents.onPlayerTick:300

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 1.65 of 16 cores, whole machine 27% busy
  cores  n    allocated   group                            runs
  0.69   1    3.2 GB      Render thread                    collections_of_optimizations 9.1%, punchy 9.1%, minecraft 8.9%
  0.29   10   43 MB       Flywheel Task Executor ##        collections_of_optimizations 61%, flywheel 39%
  0.27   15   2.8 GB      ForkJoinPool.commonPool-worker-# lithoform 64%, collections_of_optimizations 12%, integrated_api 6.1%
  0.16   1    495 MB      Linggango Streams                lithoform 57%, linggango_tweaks 39%
  0.14   1    822 MB      Server thread                    minecraft 25%, collections_of_optimizations 15%, forge 5.3%
  0.02   1    144 MB      JFR Event Stream #               no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    22 ms/s    999/s    22 us    terramity:green_fairy                       worst 1.49 ms at 2515, 69, 789
  entity tick:
    11 ms/s    20/s     565 us   minecraft:player                            worst 1.53 ms at 2527, 68, 778
    2.08 ms/s  84/s     25 us    terramity:green_fairy                       worst 0.26 ms at 2521, 69, 803
    1.49 ms/s  61/s     25 us    ars_nouveau:starbuncle                      worst 0.20 ms at 2507, 72, 697
  server entity tick:
    11 ms/s    243/s    47 us    minecraft:skeleton                          worst 1.09 ms at 2497, -27, 829
    9.30 ms/s  213/s    44 us    terramity:green_fairy                       worst 0.58 ms at 2522, 67, 803
    7.31 ms/s  163/s    45 us    minecraft:zombie                            worst 0.48 ms at 2464, 8, 785
    4.29 ms/s  172/s    25 us    minecraft:creeper                           worst 0.54 ms at 2496, -38, 832
    3.77 ms/s  131/s    29 us    alexsmobs:terrapin                          worst 0.53 ms at 2531, 60, 820
    2.19 ms/s  79/s     28 us    opposing_force:hanging_spider               worst 0.25 ms at 2573, 16, 730
    2.14 ms/s  119/s    18 us    minecraft:squid                             worst 0.32 ms at 2486, 58, 826
    2.03 ms/s  61/s     33 us    alexsmobs:catfish                           worst 0.93 ms at 2568, 60, 811
  screen:
    3.36 ms/s  35/s     97 us    net.minecraft.client.gui.screens.ChatScreen worst 0.28 ms

JVM AND I/O
  class loads over 1 ms: 2 (11 ms), on the render/server thread 1 (8.38 ms)
  non-GC safepoints: 22 ms total (last: ThreadDump)
  log output: 0.5 lines/s
  exceptions thrown: 8.0/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;  immediatelyfast 1.5.5+1.20.4;  collections_of_optimizations 5.6;  
  linggango_tweaks 7.39;  gnetum 2.5.1+1.20.1-forge;  oculus 1.8.6;  lithoform 2.0.0-alpha13;  ;  
  terramity 0.9.8;  

RECORDING
  stack sampler every 5 ms: 6,152 render-thread, 773 server-thread samples (server only while ticking)
  JFR on (cpu, allocation, locks, file io, class loading, safepoints, exceptions): 1,666 CPU samples, 7,103 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
