WhatsLaggin report (manual)  31.0 s recorded, ended 2026-10-23 05:16:00
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, 136 entities loaded

VERDICT
  988 fps average (1.01 ms per frame), 1% low 194 fps, 0.1% low 89 fps.
  BALANCED: 0.68 ms CPU plus 0.33 ms waiting on the GPU per frame. Cuts on either side help.
  4 stutters over 20 ms (7.8 per minute), worst 45 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.33 ms of each 1.01 ms frame waits on the GPU
       Both CPU and GPU cuts help here. CPU work: 0.68 ms per frame.
       Biggest GPU levers: render distance (12), resolution (3440x1440), graphics mode (fancy)
  2. [cpu] embeddium costs 0.066 ms per frame on the render thread
       10% of render-thread CPU time, mostly in world, 50% in its own code (rest is vanilla/library code it called)
       67%  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 (26%)
       8.8%  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 (26%)
       7.3%  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 (31%), executing FogRenderer$MobEffectFogFunction.isEnabled:350 (24%)
       removing this cost entirely: about 988 -> 1057 fps
  3. [cpu] immediatelyfast costs 0.045 ms per frame on the render thread
       7.1% of render-thread CPU time, mostly in world, 20% in its own code (rest is vanilla/library code it called)
       42%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (83%), executing RenderStateShard.clearRenderState:41 (13%)
       27%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105   <- LevelRenderer.renderLevel:1228
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (85%), executing RenderStateShard.setupRenderState:37 (12%)
       15%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125   <- LevelRenderer.renderLevel:1283
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (44%), executing RenderStateShard.setupRenderState:37 (15%)
       removing this cost entirely: about 988 -> 1034 fps
  4. [world] minecraft:enderman (entity render) costs 37 ms every second
       25,740 calls, 45 us each, worst 31 ms at 2501, 64, 808
  5. [cpu] collections_of_optimizations costs 0.036 ms per frame on the render thread
       5.6% of render-thread CPU time, mostly in world, 86% in its own code (rest is vanilla/library code it called)
       42%  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 (99%), executing Unsafe.unpark (99%)
       8.2%  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 Arrays.fill (5.6%)
       4.6%  LevelRenderer.coo$replayOutlineEdges:19601 [mixin wrapOperation from com.misanthropy.collections_of_optimizations.mixin.vanilla.MixinLevelRendererOutlineEdges]   <- LevelRenderer.renderShape:2283
               executing VertexConsumer.color:47 (50%)
       removing this cost entirely: about 988 -> 1025 fps
  6. [stutter] Stutter: GC pause (G1 Young Generation)
       3 frames over 20 ms, worst 45 ms, 175 ms of extra frame time per minute
       allocation 227 MB/s; 3 collections, worst 38 ms
       33 MB/s collections_of_optimizations (15%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
       25 MB/s minecraft (11%): Vec3.add:96 -> Vec3
       18 MB/s linggango_tweaks (7.8%): com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  7. [cpu] linggango_tweaks costs 0.029 ms per frame on the render thread
       4.6% of render-thread CPU time, mostly in world, 24% in its own code (rest is vanilla/library code it called)
       24%  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 (40%), executing Font$StringRenderOutput.accept:279 (21%)
       23%  com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91   <- GameRenderer.renderLevel:1128
               hot: com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 (41%), executing GL45C.glBlitNamedFramebuffer (22%)
       16%  com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205   <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
               executing VertexBuffer._drawWithShader:128 (21%)
       removing this cost entirely: about 988 -> 1017 fps
  8. [cpu] gnetum costs 0.025 ms per frame on the render thread
       3.9% of render-thread CPU time, mostly in hud, 30% 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] (43%), executing ASMEventHandler.invoke:55 (21%)
       removing this cost entirely: about 988 -> 1013 fps
  9. [cpu] oculus costs 0.024 ms per frame on the render thread
       3.7% of render-thread CPU time, mostly in world, 8.3% in its own code (rest is vanilla/library code it called)
       19%  LevelRenderer.iris$renderTranslucentAfterDeferred:18140 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1381
               hot: ParticleEngine.iris$changeParticleShader:6172 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinParticleEngine] (3.6%), executing ParticleEngine.render:3241 (14%)
       19%  GlStateManager.iris$modify:2835 [mixin redirect from net.irisshaders.iris.mixin.MixinGlStateManager_DepthColorOverride]   <- GlStateManager._drawElements:718
               executing GL11C.nglDrawElements (100%)
       17%  GameRenderer.iris$disableVanillaHandRendering:8534 [mixin redirect from net.irisshaders.iris.mixin.MixinGameRenderer]   <- GameRenderer.renderItemInHand:852
               hot: net.irisshaders.iris.gl.IrisRenderSystem$DSAARB.bindTextureToUnit:569 (4.0%), executing ASMEventHandler.invoke:55 (36%)
       removing this cost entirely: about 988 -> 1012 fps

FRAMES
  30,499 frames   p50 0.88 ms   p95 1.33 ms   p99 4.06 ms   worst 45 ms
  per frame:  tasks 0.006 ms  client tick 0.062 ms  render 0.58 ms  present 0.33 ms  other 0.035 ms
  inside those:  swap 0.33 ms  world 0.46 ms  hud 0.090 ms  screen 0.003 ms
  client tick: 3.01 ms per tick, 20.2 ticks per second
  GPU busy per frame (timer queries): p50 0.66 ms   p95 0.88 ms   p99 1.13 ms
  GPU time per pass (mean per frame, each pass also holds what mods drew at the stage before it):
    0.022 ms  3.1%  sky and frame setup   (p95 0.024 ms)
    0.22 ms  31%  solid terrain   (p95 0.37 ms)
    0.018 ms  2.6%  cutout mipped terrain   (p95 0.020 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.002 ms)
    0.019 ms  2.8%  entities   (p95 0.023 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    0.002 ms  0.3%  translucent terrain   (p95 0.010 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.002 ms)
    0.003 ms  0.5%  particles   (p95 0.004 ms)
    0.023 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.20 ms)
    0.12 ms  17%  hud   (p95 0.13 ms)
    0.089 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,164 samples: CPU work 63%, GPU wait 37%, limiter 0.0%, blocked on other threads 0.0%
  mods caused 76% of render-thread CPU work, vanilla/forge/driver the rest
  21% of CPU work is inside OpenGL calls (driver work or a GPU sync), mostly glQueryCounter; the mod that made the call is charged for it below
  ms/frame  share  own   mod                          mostly in
  0.089 ms  14%    83%   minecraft (vanilla)          world
  0.068 ms  11%    100%  forge (loader, events)       world
  0.066 ms  10%    50%   embeddium                    world
  0.045 ms  7.1%   20%   immediatelyfast              world
  0.036 ms  5.6%   86%   collections_of_optimizations world
  0.029 ms  4.6%   24%   linggango_tweaks             world
  0.025 ms  3.9%   30%   gnetum                       hud
  0.024 ms  3.7%   8.3%  oculus                       world
  0.023 ms  3.7%   71%   punchy                       world
  0.023 ms  3.5%   17%   asyncparticles               world
  0.015 ms  2.4%   3.3%  whatslaggin                  world
  0.010 ms  1.5%   1.7%  let_there_be_atmosphere      world
  0.010 ms  1.5%   39%   mahoutsukai                  world
  0.009 ms  1.4%   55%   brute_force_culling_revived  world
  0.007 ms  1.1%   82%   xaeroworldmap                no phase
  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.089 ms/frame, 14%, hottest vanilla methods:
    15%   EntityRenderDispatcher.getRenderer:530  <- me.decce.ixeris.RenderThreadStarter.run:39
    14%   Entity.shouldRender:1562  <- me.decce.ixeris.RenderThreadStarter.run:39
    9.3%  LevelRenderer.renderLevel:1198  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing Iterators$1.next:146 20%
  embeddium  0.066 ms/frame, 10%
    67%   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 26%
    8.8%  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 26%
    7.3%  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 31%
          executing FogRenderer$MobEffectFogFunction.isEnabled:350 24%
  immediatelyfast  0.045 ms/frame, 7.1%
    42%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 83%
          executing RenderStateShard.clearRenderState:41 13%
    27%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105  <- LevelRenderer.renderLevel:1228
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 85%
          executing RenderStateShard.setupRenderState:37 12%
    15%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125  <- LevelRenderer.renderLevel:1283
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 44%
          executing RenderStateShard.setupRenderState:37 15%
  collections_of_optimizations  0.036 ms/frame, 5.6%
    42%   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 99%
          executing Unsafe.unpark 99%
    8.2%  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 Arrays.fill 5.6%
    4.6%  LevelRenderer.coo$replayOutlineEdges:19601 [mixin wrapOperation from com.misanthropy.collections_of_optimizations.mixin.vanilla.MixinLevelRendererOutlineEdges]  <- LevelRenderer.renderShape:2283
          executing VertexConsumer.color:47 50%
  linggango_tweaks  0.029 ms/frame, 4.6%
    24%   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 40%
          executing Font$StringRenderOutput.accept:279 21%
    23%   com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91  <- GameRenderer.renderLevel:1128
          hot com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 41%
          executing GL45C.glBlitNamedFramebuffer 22%
    16%   com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          executing VertexBuffer._drawWithShader:128 21%
  gnetum  0.025 ms/frame, 3.9%
    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] 43%
          executing ASMEventHandler.invoke:55 21%
  oculus  0.024 ms/frame, 3.7%
    19%   LevelRenderer.iris$renderTranslucentAfterDeferred:18140 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1381
          hot ParticleEngine.iris$changeParticleShader:6172 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinParticleEngine] 3.6%
          executing ParticleEngine.render:3241 14%
    19%   GlStateManager.iris$modify:2835 [mixin redirect from net.irisshaders.iris.mixin.MixinGlStateManager_DepthColorOverride]  <- GlStateManager._drawElements:718
          executing GL11C.nglDrawElements 100%
    17%   GameRenderer.iris$disableVanillaHandRendering:8534 [mixin redirect from net.irisshaders.iris.mixin.MixinGameRenderer]  <- GameRenderer.renderItemInHand:852
          hot net.irisshaders.iris.gl.IrisRenderSystem$DSAARB.bindTextureToUnit:569 4.0%
          executing ASMEventHandler.invoke:55 36%
  punchy  0.023 ms/frame, 3.7%
    95%   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.7%
          executing HashMap.putVal 5.9%

STUTTERS (frames over 20 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  3       45 ms     175 ms      GC pause (G1 Young Generation)
  1       35 ms     66 ms       unexplained (render)

  worst frames:
  05:15:32.010  45 ms    client tick 43 ms     GC pause (G1 Young Generation)
                             38 ms of the frame was a stop-the-world collection
  05:15:34.905  35 ms    render 34 ms          unexplained (render)
                             7 samples, no single owner
  05:15:52.790  25 ms    render 22 ms          GC pause (G1 Young Generation)
                             20 ms of the frame was a stop-the-world collection
  05:15:38.355  23 ms    render 0.92 ms        GC pause (G1 Young Generation)
                             21 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 6.9 GB (227 MB/s, exact, all threads), max heap 10.0 GB
  3 GC pauses (0 old/full), 79 ms paused (0.3%), worst 38 ms, one every 10.3 s
  longest pauses:
    05:15:32.003  38 ms  G1 Young Generation, G1 Evacuation Pause
    05:15:38.353  21 ms  G1 Young Generation, G1 Evacuation Pause
    05:15:52.788  20 ms  G1 Young Generation, G1 Evacuation Pause
  heap after GC 5.0 GB (50% of max, old garbage stays until the next marking cycle), changed by 60 MB over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    33 MB/s   15%    collections_of_optimizations 1,146 samples
        19%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
        13%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
        11%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadList:191 -> Object;
    25 MB/s   11%    minecraft (vanilla)       452 samples
        3.7%  Vec3.add:96 -> Vec3
    18 MB/s   7.8%   linggango_tweaks          270 samples
        9.9%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
        6.1%  snownee.jade.overlay.DisplayHelper.drawText:429 -> CallbackInfo
        6.1%  snownee.jade.overlay.DisplayHelper.drawText:429 -> CallbackInfoReturnable
    16 MB/s   7.2%   immediatelyfast           120 samples
        29%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> [J
        12%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> Object;
        8.3%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 -> DirectByteBuffer
    16 MB/s   7.0%   lithoform                 366 samples
        19%  NoiseChunk.lithoform$sharedScan:3507 [mixin handler from com.misanthropy.lithoform.mixin.PreliminarySurfaceMixin] -> DensityFunction$SinglePointContext
        10%  com.misanthropy.lithoform.bowl.BowlOffset.mapAll:33 -> DensityFunctions$Marker
        9.9%  DensityFunctions$HolderHolder.lithoform$store:1036 [mixin handler from com.misanthropy.lithoform.mixin.HolderHolderMixin] -> Object;
    10 MB/s   4.4%   fastchunkgen              244 samples
        68%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
    9 MB/s    3.8%   punchy                    64 samples
        7.8%  punchy.client.render.PunchyArmRenderer.applyGeoArmToPlayer:1222 -> Matrix4f
    7 MB/s    2.9%   embeddium                 200 samples
        18%  BufferBuilder.onFormatChanged:5580 [mixin handler from me.jellysquid.mods.sodium.mixin.core.render.immediate.consumer.BufferBuilderMixin] -> SodiumBufferBuilder
        6.1%  GameRenderer.onRender:30142 [mixin handler from me.jellysquid.mods.sodium.mixin.features.gui.hooks.console.GameRendererMixin] -> Object;
        6.1%  VertexBuffer.setSamplersManually:1037 [mixin modifyExpressionValue from me.jellysquid.mods.sodium.mixin.features.render.immediate.buffer_builder.VertexBufferMixin] -> Integer
    7 MB/s    2.9%   structureessentials       101 samples
        23%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> HashMap
        14%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> BlockStateParser
        13%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> [B
    6 MB/s    2.5%   castle_dungeons           168 samples
        7.4%  net.puffish.castlemod.generator.CastleMetrics.lambda$streamPositionsInCustomBounds$1:46 -> IntPipeline$1
        7.1%  net.puffish.castlemod.generator.Castle.verifyPlacement:293 -> IntPipeline$1$1
        7.0%  net.puffish.castlemod.generator.CastleMetrics.lambda$streamPositionsInCustomBounds$1:45 -> IntPipeline$Head

INTEGRATED SERVER (single player; this is world lag, not FPS)
  624 ticks, mspt mean 7.55 ms, p50 6.55 ms, p95 13 ms, worst 52 ms, 1 over 50 ms
    1.29 ms/tick  17%    minecraft (vanilla)       
    0.90 ms/tick  12%    collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.66 ms/tick  8.8%   forge (loader, events)    
    0.36 ms/tick  4.8%   radium                    EntitySectionStorage.forEachInBox:555 [mixin handler from me.jellysquid.mods.lithium.mixin.entity.fast_retrieval.SectionedEntityCacheMixin]
    0.32 ms/tick  4.3%   ending_library            ServerEntity.tickCheckCapData:2581 [mixin handler from com.mega.endinglib.mixin.capability.ServerEntityMixin]
    0.22 ms/tick  2.9%   terramity                 net.mcreator.terramity.entity.GreenFairyEntity.aiStep:213
    0.22 ms/tick  2.9%   simplyswords              Mob.simplyswords$tryUseHeldWeaponAbility:17667 [mixin handler from net.sweenus.simplyswords.mixin.MobEntityMixin]
    0.17 ms/tick  2.2%   linggango_tweaks          SpreadingSnowyDirtBlock.linggango$survivesSnow:1019 [mixin handler from com.misanthropy.linggango.linggango_tweaks.mixin.snow.SpreadingSnowyDirtBlockMixin]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 1.58 of 16 cores, whole machine 27% busy
  cores  n    allocated   group                            runs
  0.67   1    3.0 GB      Render thread                    collections_of_optimizations 9.5%, punchy 8.2%, minecraft 7.7%
  0.29   15   2.4 GB      ForkJoinPool.commonPool-worker-# lithoform 59%, collections_of_optimizations 10%, integrated_api 6.5%
  0.22   10   44 MB       Flywheel Task Executor ##        flywheel 61%, collections_of_optimizations 39%
  0.15   1    328 MB      Linggango Streams                lithoform 57%, linggango_tweaks 39%
  0.14   1    845 MB      Server thread                    minecraft 26%, collections_of_optimizations 7.5%
  0.02   1    157 MB      JFR Event Stream #               no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    37 ms/s    831/s    45 us    minecraft:enderman                          worst 31 ms at 2501, 64, 808
  entity tick:
    13 ms/s    20/s     643 us   minecraft:player                            worst 40 ms at 2527, 68, 778
    1.39 ms/s  61/s     23 us    ars_nouveau:starbuncle                      worst 0.40 ms at 2513, 72, 678
    1.36 ms/s  61/s     22 us    terramity:green_fairy                       worst 0.28 ms at 2518, 76, 730
  server entity tick:
    17 ms/s    296/s    58 us    minecraft:skeleton                          worst 0.74 ms at 2515, 8, 810
    9.90 ms/s  335/s    30 us    minecraft:creeper                           worst 0.46 ms at 2578, 14, 729
    9.22 ms/s  198/s    47 us    terramity:green_fairy                       worst 0.67 ms at 2565, 53, 781
    5.84 ms/s  185/s    32 us    minecraft:zombie                            worst 0.82 ms at 2497, 10, 780
    3.75 ms/s  95/s     40 us    minecraft:enderman                          worst 0.63 ms at 2501, 64, 808
    2.16 ms/s  45/s     48 us    minecraft:salmon                            worst 1.13 ms at 2495, 56, 831
    2.14 ms/s  38/s     57 us    alexsmobs:terrapin                          worst 1.03 ms at 2538, 58, 836
    2.07 ms/s  41/s     51 us    minecraft:axolotl                           worst 0.95 ms at 2498, -26, 839
  screen:
    3.42 ms/s  36/s     95 us    net.minecraft.client.gui.screens.ChatScreen worst 0.41 ms

JVM AND I/O
  class loads over 1 ms: 8 (23 ms), on the render/server thread 4 (12 ms)
  non-GC safepoints: 26 ms total (last: ThreadDump)
  log output: 0.5 lines/s
  exceptions thrown: 17.5/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;  ;  

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