WhatsLaggin report (manual)  41.2 s recorded, ended 2026-10-23 03:16:57
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, 66 entities loaded

VERDICT
  109 fps average (9.21 ms per frame), 1% low 49 fps, 0.1% low 17 fps.
  GPU-BOUND: 6.46 ms of each frame (70%) is the CPU waiting for the GPU. The CPU part is only 2.75 ms.
  Optimising mod code on the render thread will not raise FPS until the GPU load drops.
  11 stutters over 24 ms (16.0 per minute), worst 80 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.75 ms and then waits 6.46 ms in glfwSwapBuffers for the GPU.
       GPU time for the frame's draw calls: p50 8.52 ms, p95 9.83 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)
       8 frames over 24 ms, worst 80 ms, 414 ms of extra frame time per minute
       allocation 508 MB/s; 11 collections, worst 73 ms
       107 MB/s collections_of_optimizations (21%): com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
       71 MB/s minecraft (14%): BlockLightSectionStorage$BlockDataLayerStorageMap.copy:36 -> [J
       70 MB/s fastchunkgen (14%): com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [world] minecraft:player (entity render) costs 39 ms every second
       4,467 calls, 362 us each, worst 26 ms at 2527, 68, 778
  4. [stutter] Stutter: GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
       3 frames over 24 ms, worst 45 ms, 149 ms of extra frame time per minute
       allocation 508 MB/s; 11 collections, worst 73 ms
       107 MB/s collections_of_optimizations (21%): com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
       71 MB/s minecraft (14%): BlockLightSectionStorage$BlockDataLayerStorageMap.copy:36 -> [J
       70 MB/s fastchunkgen (14%): com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  5. [cpu] embeddium costs 0.60 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)
       79%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (39%), executing GL32C.nglMultiDrawElementsBaseVertex (23%)
       15%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:227   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.render.chunk.RenderSectionManager.scheduleTranslucencyUpdates:181 (29%), executing Collection.removeIf (6.5%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  6. [cpu] oculus costs 0.38 ms per frame on the render thread
       14% of render-thread CPU time, mostly in world, 40% in its own code (rest is vanilla/library code it called)
       39%  LevelRenderer.iris$renderTerrainShadows:16196 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1155
               hot: net.irisshaders.iris.shadows.ShadowRenderer.renderPlayerEntity:687 (20%), executing LivingEntityRenderer.render:131 (4.7%)
       14%  LevelRenderer.iris$beginLevelRender:16171 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1149
               hot: net.irisshaders.iris.uniforms.custom.cached.VectorCachedUniform.doUpdate:26 (8.9%), executing GL30C.glBindFramebuffer (11%)
       13%  LevelRenderer.iris$beginTranslucents:16334 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1370
               hot: net.irisshaders.iris.pathways.HandRenderer.renderSolid:96 (14%), executing GL20C.nglUniformMatrix4fv (6.8%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  7. [cpu] xaeroworldmap costs 0.21 ms per frame on the render thread
       7.7% of render-thread CPU time, mostly in no phase, 39% 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 (31%), executing Level.getBlockState:5043 (31%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  8. [cpu] entity_model_features costs 0.17 ms per frame on the render thread
       6.3% of render-thread CPU time, mostly in world, 80% in its own code (rest is vanilla/library code it called)
       95%  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 (55%), executing EMF_ASM_Parsed_156.eval (55%)
       4.7%  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 (57%), executing HashMap$Values.forEach (57%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  9. [cpu] gnetum costs 0.098 ms per frame on the render thread
       3.7% of render-thread CPU time, mostly in hud, 30% in its own code (rest is vanilla/library code it called)
       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] (47%), executing ASMEventHandler.invoke:55 (22%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
 10. [cpu] collections_of_optimizations costs 0.075 ms per frame on the render thread
       2.8% of render-thread CPU time, mostly in client tick, 61% in its own code (rest is vanilla/library code it called)
       44%  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 (28%), executing Level.getGameTime:729 (28%)
       6.1%  forge.fun.qu_an.minecraft.asyncparticles.client.core.particle.gpu_acceleration.opengl.GlTfParticleRenderer.coo$constantSamplerNames:617 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.asyncparticles.MixinGpuParticleShaderSetup]   <- forge.fun.qu_an.minecraft.asyncparticles.client.core.particle.gpu_acceleration.opengl.GlTfParticleRenderer.render:408
               hot: com.misanthropy.collections_of_optimizations.core.ParticleShaderSetup.prepare:21 (75%), executing HashMap.putVal (75%)
       6.1%  BiomeManager.coo$cacheQuartLookup:1065 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.vanilla.MixinBiomeManagerQuartCache]   <- BiomeManager.getNoiseBiomeAtQuart:97
               executing ChunkAccess.getHeight:392 (50%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes

FRAMES
  4,466 frames   p50 9.18 ms   p95 11 ms   p99 11 ms   worst 80 ms
  per frame:  tasks 0.065 ms  client tick 0.39 ms  render 2.01 ms  present 6.46 ms  other 0.28 ms
  inside those:  swap 6.46 ms  world 1.72 ms  hud 0.25 ms  screen 0.001 ms
  client tick: 2.13 ms per tick, 20.0 ticks per second
  GPU busy per frame (timer queries): p50 8.52 ms   p95 9.83 ms   p99 10 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.57 ms  66%  solid terrain   (p95 6.42 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.030 ms  0.4%  entities   (p95 0.082 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    1.17 ms  14%  translucent terrain   (p95 1.47 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.003 ms)
    0.013 ms  0.2%  particles   (p95 0.061 ms)
    0.000 ms  <0.1%  weather and clouds   (p95 0.002 ms)
    1.21 ms  14%  end of level render   (p95 1.69 ms)
    0.000 ms  <0.1%  hand and post effects   (p95 0.002 ms)
    0.079 ms  0.9%  hud   (p95 0.22 ms)
    0.24 ms  2.9%  screens and rest of frame   (p95 1.18 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  8,113 samples: CPU work 29%, GPU wait 71%, limiter 0.0%, blocked on other threads 0.0%
  mods caused 89% of render-thread CPU work, vanilla/forge/driver the rest
  15% 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.60 ms   23%    69%   embeddium                    world
  0.38 ms   14%    40%   oculus                       world
  0.21 ms   7.7%   39%   xaeroworldmap                no phase
  0.17 ms   6.3%   80%   entity_model_features        world
  0.16 ms   6.2%   89%   minecraft (vanilla)          client tick
  0.13 ms   4.8%   100%  forge (loader, events)       world
  0.098 ms  3.7%   30%   gnetum                       hud
  0.075 ms  2.8%   61%   collections_of_optimizations client tick
  0.049 ms  1.8%   40%   immediatelyfast              world
  0.045 ms  1.7%   20%   entity_texture_features      world
  0.042 ms  1.6%   22%   asyncparticles               world
  0.034 ms  1.3%   77%   punchy                       client tick
  0.033 ms  1.2%   59%   linggango_tweaks             client tick
  0.028 ms  1.1%   12%   whatslaggin                  world
  0.027 ms  1.0%   29%   brute_force_culling_revived  world
  0.59 ms   105 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  embeddium  0.60 ms/frame, 23%
    79%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 39%
          executing GL32C.nglMultiDrawElementsBaseVertex 23%
    15%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:227  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.render.chunk.RenderSectionManager.scheduleTranslucencyUpdates:181 29%
          executing Collection.removeIf 6.5%
  oculus  0.38 ms/frame, 14%
    39%   LevelRenderer.iris$renderTerrainShadows:16196 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1155
          hot net.irisshaders.iris.shadows.ShadowRenderer.renderPlayerEntity:687 20%
          executing LivingEntityRenderer.render:131 4.7%
    14%   LevelRenderer.iris$beginLevelRender:16171 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1149
          hot net.irisshaders.iris.uniforms.custom.cached.VectorCachedUniform.doUpdate:26 8.9%
          executing GL30C.glBindFramebuffer 11%
    13%   LevelRenderer.iris$beginTranslucents:16334 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1370
          hot net.irisshaders.iris.pathways.HandRenderer.renderSolid:96 14%
          executing GL20C.nglUniformMatrix4fv 6.8%
  xaeroworldmap  0.21 ms/frame, 7.7%
    100%  xaero.map.events.ClientEventsForge.renderTick:32  <- Minecraft.runTick:1148
          hot xaero.map.misc.CaveStartCalculator.getCaving:102 31%
          executing Level.getBlockState:5043 31%
  entity_model_features  0.17 ms/frame, 6.3%
    95%   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 55%
          executing EMF_ASM_Parsed_156.eval 55%
    4.7%  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 57%
          executing HashMap$Values.forEach 57%
  minecraft (vanilla)  0.16 ms/frame, 6.2%, hottest vanilla methods:
    17%   LevelChunk$BoundTickingBlockEntity.getPos:719  <- me.decce.ixeris.RenderThreadStarter.run:39
    9.0%  BlockState.getLightBlock:631  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing ThreadLocal$ThreadLocalMap.set 85%
    6.9%  LevelChunk$BoundTickingBlockEntity.tick:688  <- me.decce.ixeris.RenderThreadStarter.run:39
  gnetum  0.098 ms/frame, 3.7%
    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] 47%
          executing ASMEventHandler.invoke:55 22%
  collections_of_optimizations  0.075 ms/frame, 2.8%
    44%   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 28%
          executing Level.getGameTime:729 28%
    6.1%  forge.fun.qu_an.minecraft.asyncparticles.client.core.particle.gpu_acceleration.opengl.GlTfParticleRenderer.coo$constantSamplerNames:617 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.asyncparticles.MixinGpuParticleShaderSetup]  <- forge.fun.qu_an.minecraft.asyncparticles.client.core.particle.gpu_acceleration.opengl.GlTfParticleRenderer.render:408
          hot com.misanthropy.collections_of_optimizations.core.ParticleShaderSetup.prepare:21 75%
          executing HashMap.putVal 75%
    6.1%  BiomeManager.coo$cacheQuartLookup:1065 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.vanilla.MixinBiomeManagerQuartCache]  <- BiomeManager.getNoiseBiomeAtQuart:97
          executing ChunkAccess.getHeight:392 50%
  immediatelyfast  0.049 ms/frame, 1.8%
    67%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116  <- blusunrize.immersiveengineering.client.LevelStageRenders.finish:250
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 62%
          executing RenderStateShard.setupRenderState:37 10%
    14%   VertexBuffer.optimizeVertexDataUploading:546 [mixin redirect from net.raphimc.immediatelyfast.injection.mixins.fast_buffer_upload.MixinVertexBuffer]  <- VertexBuffer.uploadVertexBuffer:74
          executing GL15C.nglBufferSubData 100%
    4.7%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:138  <- LevelRenderer.simplyswords$renderFirstPersonImmolationField:35201 [mixin handler from net.sweenus.simplyswords.mixin.client.WorldRendererMixin]

STUTTERS (frames over 24 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  8       80 ms     414 ms      GC pause (G1 Young Generation)
  3       45 ms     149 ms      GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)

  worst frames:
  03:16:37.271  80 ms    client tick 76 ms     GC pause (G1 Young Generation)
                             72 ms of the frame was a stop-the-world collection
  03:16:20.577  65 ms    render 63 ms          GC pause (G1 Young Generation)
                             59 ms of the frame was a stop-the-world collection
  03:16:28.465  57 ms    present 55 ms         GC pause (G1 Young Generation)
                             54 ms of the frame was a stop-the-world collection
  03:16:28.169  46 ms    present 44 ms         GC pause (G1 Young Generation)
                             36 ms of the frame was a stop-the-world collection
  03:16:33.252  45 ms    render 44 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             40 ms of the frame was a stop-the-world collection
  03:16:18.234  44 ms    present 38 ms         GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             36 ms of the frame was a stop-the-world collection
  03:16:25.326  41 ms    present 38 ms         GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             37 ms of the frame was a stop-the-world collection
  03:16:20.352  30 ms    render 30 ms          GC pause (G1 Young Generation)
                             24 ms of the frame was a stop-the-world collection
  03:16:18.473  28 ms    render 24 ms          GC pause (G1 Young Generation)
                             19 ms of the frame was a stop-the-world collection
  03:16:26.090  27 ms    render 27 ms          GC pause (G1 Young Generation)
                             22 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 20.4 GB (508 MB/s, exact, all threads), max heap 10.0 GB
  11 GC pauses (0 old/full), 352 ms paused (0.9%), worst 73 ms, one every 3.7 s
  longest pauses:
    03:16:37.263  73 ms  G1 Young Generation, G1 Evacuation Pause
    03:16:20.572  59 ms  G1 Young Generation, G1 Evacuation Pause
    03:16:28.464  54 ms  G1 Young Generation, G1 Evacuation Pause
    03:16:28.169  36 ms  G1 Young Generation, G1 Evacuation Pause
    03:16:20.346  24 ms  G1 Young Generation, G1 Evacuation Pause
    03:16:26.085  23 ms  G1 Young Generation, G1 Evacuation Pause
  6 Remark/Cleanup pauses (concurrent mark cycles, not in the count above), 121 ms paused, worst 40 ms
  heap after GC 5.7 GB (57% of max, old garbage stays until the next marking cycle), changed by -431624168 B over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    107 MB/s  21%    collections_of_optimizations 834 samples
        13%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
        6.6%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> MultifaceSpreader$SpreadPos
        6.5%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> 259467857
    71 MB/s   14%    minecraft (vanilla)       1,886 samples
        20%  BlockLightSectionStorage$BlockDataLayerStorageMap.copy:36 -> [J
        10%  SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> [J
        8.8%  SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> Object;
    70 MB/s   14%    fastchunkgen              608 samples
        17%  com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
        7.4%  NoiseChunk.fcg$interpolatedState:4069 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.fill.MixinNoiseChunk] -> CallbackInfoReturnable
        6.5%  SurfaceRules$SequenceRule.onInit:526 [mixin handler from com.misanthropy.fastchunkgen.opts.allocs.mixin.surfacebuilder.MixinMaterialRulesSequenceBlockStateRule] -> SurfaceRules$SurfaceRule;
    48 MB/s   9.5%   lithoform                 337 samples
        18%  com.misanthropy.lithoform.compat.LandProvinces.province:519 -> Climate$TargetPoint
        17%  com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
        9.3%  com.misanthropy.lithoform.compat.LandProvinces.province:519 -> DensityFunction$SinglePointContext
    28 MB/s   5.6%   linggango_tweaks          297 samples
        19%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
    21 MB/s   4.0%   radium                    209 samples
        61%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        14%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
        9.2%  LevelChunkSection.setBlockStateNoLocking:521 [mixin redirect from me.jellysquid.mods.lithium.mixin.chunk.no_locking.ChunkSectionMixin] -> CallbackInfoReturnable
    20 MB/s   3.9%   biomeswevegone            124 samples
        18%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$StoneDepthCheck$1StoneDepthCondition
        18%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$TestRule
        9.1%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.BetweenRepeatingNoiseRange.apply:67 -> SurfaceRules$StoneDepthCheck$1StoneDepthCondition
    19 MB/s   3.8%   modernfix                 181 samples
        58%  org.embeddedt.modernfix.world.gen.PrefetchingBlockColumn.setBlock:113 -> CallbackInfoReturnable
        8.4%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> Object;
        7.5%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> BlockPos
    13 MB/s   2.5%   revelationfix             82 samples
        20%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> Long
        19%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> 2054943125
        10%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.collect:123 -> Long
    12 MB/s   2.4%   embeddium                 727 samples
        21%  me.jellysquid.mods.sodium.client.render.chunk.lists.ChunkRenderList.sectionsWithGeometryIterator:65 -> ReversibleByteArrayIterator
        12%  me.jellysquid.mods.sodium.client.render.chunk.lists.ChunkRenderList.<init>:20 -> [B
        11%  me.jellysquid.mods.sodium.client.render.chunk.lists.ChunkRenderList.<init>:14 -> [B

INTEGRATED SERVER (single player; this is world lag, not FPS)
  823 ticks, mspt mean 4.66 ms, p50 4.03 ms, p95 7.41 ms, worst 42 ms, 0 over 50 ms
    1.73 ms/tick  37%    minecraft (vanilla)       
    1.30 ms/tick  28%    collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.33 ms/tick  7.1%   forge (loader, events)    
    0.21 ms/tick  4.5%   radium                    ServerLevel.redirectBlockStateTick:4159 [mixin redirect from me.jellysquid.mods.lithium.mixin.alloc.chunk_random.ServerWorldMixin]
    0.14 ms/tick  2.9%   servercore                ServerChunkCache.servercore$updateCachedChunks:1641 [mixin modifyExpressionValue from me.wesley1808.servercore.mixin.optimizations.ticking.chunk.cache.ServerChunkCacheMixin]
    0.10 ms/tick  2.2%   despawnings               Mob.despawnings$redirectIsPersistenceRequired:21184 [mixin redirect from com.misanthropy.despawnings.mixin.MobMixin]
    0.099 ms/tick 2.1%   linggango_tweaks          SnowLayerBlock.linggango$melt:1045 [mixin handler from com.misanthropy.linggango.linggango_tweaks.mixin.snow.SnowLayerBlockMixin]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 3.71 of 16 cores, whole machine 39% busy
  cores  n    allocated   group                            runs
  2.65   25   12.3 GB     FastChunkGen worker ##           lithoform 57%, collections_of_optimizations 15%, fastchunkgen 11%
  0.29   1    2.0 GB      Render thread                    xaeroworldmap 18%, entity_model_features 13%, embeddium 11%
  0.22   1    711 MB      Linggango Streams                lithoform 59%, linggango_tweaks 35%
  0.11   1    1.3 GB      Server thread                    minecraft 46%, collections_of_optimizations 9.7%
  0.09   10   402 MB      Chunk Render Task Executor ##    embeddium 37%, minecraft 35%, oculus 11%
  0.08   1    197 MB      BFR-OcclusionCuller              embeddium 72%, brute_force_culling_revived 17%, oculus 11%
  0.07   15   1.3 GB      ForkJoinPool.commonPool-worker-# lithoform 45%, collections_of_optimizations 23%, integrated_api 10%
  0.04   6    114 MB      Lumenite light #                 lumenite 88%, minecraft 12%
  0.03   1    295 MB      JFR Event Stream #               no JFR samples (idle or native)
  0.02   1    512 KB      whatslaggin-threads              no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    39 ms/s    108/s    362 us   minecraft:player                            worst 26 ms at 2527, 68, 778
  entity tick:
    8.01 ms/s  20/s     400 us   minecraft:player                            worst 1.03 ms at 2527, 68, 778
    0.85 ms/s  19/s     45 us    hexerei:crow                                worst 0.27 ms at 2952, 71, 680
  server entity tick:
    1.85 ms/s  20/s     94 us    minecraft:player                            worst 1.93 ms at 2527, 68, 778

JVM AND I/O
  class loads over 1 ms: 2 (2.95 ms), on the render/server thread 0 (0 ms)
  log output: 0.0 lines/s
  exceptions thrown: 9.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.113-dirty+mc1.20.1;  oculus 1.8.5;  xaeroworldmap 1.46.0;  
  entity_model_features 3.3.11;  gnetum 2.5.1+1.20.1-forge;  collections_of_optimizations 5.5;  
  fastchunkgen 0.38;  ;  

RECORDING
  stack sampler every 5 ms: 8,113 render-thread, 848 server-thread samples (server only while ticking)
  JFR on (cpu, allocation, locks, file io, class loading, safepoints, exceptions): 7,019 CPU samples, 8,284 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
