WhatsLaggin report (manual)  46.2 s recorded, ended 2026-10-23 05:18: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 32, simulation 7, graphics fancy, shaders off
World minecraft:overworld, 79 entities loaded

VERDICT
  682 fps average (1.47 ms per frame), 1% low 80 fps, 0.1% low 26 fps.
  BALANCED: 1.06 ms CPU plus 0.41 ms waiting on the GPU per frame. Cuts on either side help.
  35 stutters over 20 ms (45.5 per minute), worst 153 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.41 ms of each 1.47 ms frame waits on the GPU
       Both CPU and GPU cuts help here. CPU work: 1.06 ms per frame.
       Biggest GPU levers: render distance (32), resolution (3440x1440), graphics mode (fancy)
  2. [stutter] Stutter: GC pause (G1 Young Generation)
       21 frames over 20 ms, worst 72 ms, 1.0 s of extra frame time per minute
       allocation 963 MB/s; 21 collections, worst 71 ms
       209 MB/s collections_of_optimizations (22%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
       136 MB/s fastchunkgen (14%): NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
       106 MB/s minecraft (11%): BlockBehaviour$BlockStateBase.getLightBlock -> CallbackInfoReturnable
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [cpu] embeddium costs 0.17 ms per frame on the render thread
       16% of render-thread CPU time, mostly in world, 56% in its own code (rest is vanilla/library code it called)
       69%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (40%), executing GL32C.nglMultiDrawElementsBaseVertex (27%)
       14%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.render.chunk.RenderSectionManager.scheduleTranslucencyUpdates:181 (23%), executing Collection.removeIf (3.6%)
       removing this cost entirely: about 682 -> 769 fps
  4. [cpu] xaeroworldmap costs 0.063 ms per frame on the render thread
       6.2% of render-thread CPU time, mostly in no phase, 73% in its own code (rest is vanilla/library code it called)
       96%  xaero.map.events.ClientEventsForge.renderTick:32   <- Minecraft.runTick:1148
               hot: xaero.map.region.BranchLeveledRegion.get:316 (12%), executing LevelReader.getNoiseBiome:58 (9.4%)
       removing this cost entirely: about 682 -> 712 fps
  5. [cpu] immediatelyfast costs 0.054 ms per frame on the render thread
       5.2% of render-thread CPU time, mostly in world, 32% in its own code (rest is vanilla/library code it called)
       46%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (72%), executing RenderStateShard.setupRenderState:37 (8.8%)
       24%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125   <- LevelRenderer.renderLevel:1283
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (39%), executing RenderStateShard.clearRenderState:41 (14%)
       16%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105   <- LevelRenderer.renderLevel:1228
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (62%), executing GL15C.nglBufferSubData (26%)
       removing this cost entirely: about 682 -> 708 fps
  6. [cpu] collections_of_optimizations costs 0.052 ms per frame on the render thread
       5.1% of render-thread CPU time, mostly in world, 89% in its own code (rest is vanilla/library code it called)
       41%  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%)
       9.0%  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 (50%), executing Level.getGameTime:729 (14%)
       4.5%  com.github.alexthe666.citadel.client.model.AdvancedModelBox.coo$renderThroughWriter:552 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.citadel.MixinAdvancedModelBoxFastRender]   <- com.github.alexthe666.citadel.client.model.AdvancedModelBox.doRender
               hot: com.misanthropy.collections_of_optimizations.core.CitadelModelVertices.emit:69 (71%)
       removing this cost entirely: about 682 -> 707 fps
  7. [stutter] Stutter: flywheel: dev.engine_room.flywheel.impl.task.WaitGroup.await
       1 frames over 20 ms, worst 153 ms, 197 ms of extra frame time per minute
  8. [cpu] gnetum costs 0.039 ms per frame on the render thread
       3.8% 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] (47%), executing ASMEventHandler.invoke:55 (26%)
       removing this cost entirely: about 682 -> 700 fps
  9. [cpu] punchy costs 0.038 ms per frame on the render thread
       3.7% of render-thread CPU time, mostly in world, 71% in its own code (rest is vanilla/library code it called)
       81%  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.0%), executing ItemStack.is:225 (4.9%)
       15%  punchy.platform.ForgeClientPlatform.onClientTick:109   <- Minecraft.tick:1875
               hot: punchy.client.render.ToolTuning.getCustomAnimationInternal:1024 (5.9%), executing StringLatin1.toLowerCase (8.8%)
       removing this cost entirely: about 682 -> 700 fps
 10. [stutter] Stutter: GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
       3 frames over 20 ms, worst 41 ms, 148 ms of extra frame time per minute
       allocation 963 MB/s; 21 collections, worst 71 ms
       209 MB/s collections_of_optimizations (22%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
       136 MB/s fastchunkgen (14%): NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
       106 MB/s minecraft (11%): BlockBehaviour$BlockStateBase.getLightBlock -> CallbackInfoReturnable
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).

FRAMES
  31,439 frames   p50 1.15 ms   p95 3.18 ms   p99 6.68 ms   worst 153 ms
  per frame:  tasks 0.059 ms  client tick 0.10 ms  render 0.78 ms  present 0.41 ms  other 0.11 ms
  inside those:  swap 0.41 ms  world 0.64 ms  hud 0.100 ms  screen 0.002 ms
  client tick: 3.55 ms per tick, 20.0 ticks per second
  GPU busy per frame (timer queries): p50 0.84 ms   p95 1.61 ms   p99 2.23 ms
  GPU time per pass (mean per frame, each pass also holds what mods drew at the stage before it):
    0.021 ms  2.2%  sky and frame setup   (p95 0.029 ms)
    0.36 ms  37%  solid terrain   (p95 0.65 ms)
    0.021 ms  2.2%  cutout mipped terrain   (p95 0.029 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.003 ms)
    0.020 ms  2.1%  entities   (p95 0.044 ms)
    0.025 ms  2.5%  block entities   (p95 0.086 ms)
    0.043 ms  4.4%  translucent terrain   (p95 0.24 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.002 ms)
    0.000 ms  <0.1%  particles   (p95 0.003 ms)
    0.041 ms  4.2%  weather and clouds   (p95 0.072 ms)
    0.000 ms  <0.1%  end of level render   (p95 0.002 ms)
    0.18 ms  19%  hand and post effects   (p95 0.28 ms)
    0.13 ms  14%  hud   (p95 0.20 ms)
    0.12 ms  13%  screens and rest of frame   (p95 0.42 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  8,771 samples: CPU work 70%, GPU wait 30%, limiter 0.0%, blocked on other threads 0.2%
  mods caused 80% of render-thread CPU work, vanilla/forge/driver the rest
  18% 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.17 ms   16%    56%   embeddium                    world
  0.12 ms   12%    86%   minecraft (vanilla)          world
  0.081 ms  8.0%   100%  forge (loader, events)       world
  0.063 ms  6.2%   73%   xaeroworldmap                no phase
  0.054 ms  5.2%   32%   immediatelyfast              world
  0.052 ms  5.1%   89%   collections_of_optimizations world
  0.039 ms  3.8%   30%   gnetum                       hud
  0.038 ms  3.7%   71%   punchy                       world
  0.036 ms  3.5%   30%   linggango_tweaks             world
  0.025 ms  2.5%   59%   flywheel                     world
  0.021 ms  2.0%   8.1%  asyncparticles               world
  0.020 ms  1.9%   11%   oculus                       world
  0.019 ms  1.8%   45%   brute_force_culling_revived  world
  0.018 ms  1.8%   100%  cable_facades                tasks
  0.017 ms  1.6%   13%   whatslaggin                  world
  0.25 ms   142 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  embeddium  0.17 ms/frame, 16%
    69%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 40%
          executing GL32C.nglMultiDrawElementsBaseVertex 27%
    14%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.render.chunk.RenderSectionManager.scheduleTranslucencyUpdates:181 23%
          executing Collection.removeIf 3.6%
  minecraft (vanilla)  0.12 ms/frame, 12%, hottest vanilla methods:
    11%   BlockState.getLightBlock:631  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing ThreadLocal.set 15%
    11%   Entity.shouldRender:1562  <- me.decce.ixeris.RenderThreadStarter.run:39
    9.9%  EntityRenderDispatcher.getRenderer:530  <- me.decce.ixeris.RenderThreadStarter.run:39
  xaeroworldmap  0.063 ms/frame, 6.2%
    96%   xaero.map.events.ClientEventsForge.renderTick:32  <- Minecraft.runTick:1148
          hot xaero.map.region.BranchLeveledRegion.get:316 12%
          executing LevelReader.getNoiseBiome:58 9.4%
  immediatelyfast  0.054 ms/frame, 5.2%
    46%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96:327
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 72%
          executing RenderStateShard.setupRenderState:37 8.8%
    24%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125  <- LevelRenderer.renderLevel:1283
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 39%
          executing RenderStateShard.clearRenderState:41 14%
    16%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105  <- LevelRenderer.renderLevel:1228
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 62%
          executing GL15C.nglBufferSubData 26%
  collections_of_optimizations  0.052 ms/frame, 5.1%
    41%   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%
    9.0%  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 50%
          executing Level.getGameTime:729 14%
    4.5%  com.github.alexthe666.citadel.client.model.AdvancedModelBox.coo$renderThroughWriter:552 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.citadel.MixinAdvancedModelBoxFastRender]  <- com.github.alexthe666.citadel.client.model.AdvancedModelBox.doRender
          hot com.misanthropy.collections_of_optimizations.core.CitadelModelVertices.emit:69 71%
  gnetum  0.039 ms/frame, 3.8%
    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] 47%
          executing ASMEventHandler.invoke:55 26%
  punchy  0.038 ms/frame, 3.7%
    81%   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.0%
          executing ItemStack.is:225 4.9%
    15%   punchy.platform.ForgeClientPlatform.onClientTick:109  <- Minecraft.tick:1875
          hot punchy.client.render.ToolTuning.getCustomAnimationInternal:1024 5.9%
          executing StringLatin1.toLowerCase 8.8%
  linggango_tweaks  0.036 ms/frame, 3.5%
    30%   com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91  <- GameRenderer.renderLevel:1128
          hot com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 33%
          executing GL45C.glBlitNamedFramebuffer 9.4%
    20%   com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          executing GL20C.glUseProgram 12%
    18%   GameRenderer.linggango$lumaOutlineFirstPerson:18121 [mixin handler from com.misanthropy.linggango.linggango_tweaks.mixin.lumalight.FirstPersonRimMixin]  <- GameRenderer.renderLevel:1132
          hot com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.drawInPlace:166 34%
          executing GL30C.glBindFramebuffer 18%

STUTTERS (frames over 20 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  21      72 ms     1.0 s       GC pause (G1 Young Generation)
  1       153 ms    197 ms      flywheel: dev.engine_room.flywheel.impl.task.WaitGroup.await
  3       41 ms     148 ms      GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
  5       26 ms     138 ms      unexplained (present)
  2       24 ms     57 ms       cable_facades: com.portingdeadmods.cable_facades.utils.FacadeUtils.getFacadeData
  1       26 ms     33 ms       unexplained (tasks)
  1       25 ms     31 ms       flywheel: dev.engine_room.flywheel.backend.compile.core.Compilation.compile
  1       22 ms     27 ms       unexplained (client tick)

  worst frames:
  05:17:46.986  153 ms   render 152 ms         flywheel: dev.engine_room.flywheel.impl.task.WaitGroup.await
                             30 of 30 samples, hottest line dev.engine_room.flywheel.impl.task.WaitGroup.await:42
  05:17:52.423  72 ms    render 72 ms          GC pause (G1 Young Generation)
                             70 ms of the frame was a stop-the-world collection
  05:17:43.441  68 ms    render 68 ms          GC pause (G1 Young Generation)
                             65 ms of the frame was a stop-the-world collection
  05:17:40.334  66 ms    render 65 ms          GC pause (G1 Young Generation)
                             62 ms of the frame was a stop-the-world collection
  05:17:22.235  62 ms    render 62 ms          GC pause (G1 Young Generation)
                             59 ms of the frame was a stop-the-world collection
  05:17:36.987  54 ms    present 53 ms         GC pause (G1 Young Generation)
                             53 ms of the frame was a stop-the-world collection
  05:17:52.841  42 ms    present 41 ms         GC pause (G1 Young Generation)
                             41 ms of the frame was a stop-the-world collection
  05:17:19.373  41 ms    render 41 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             38 ms of the frame was a stop-the-world collection
  05:17:34.735  39 ms    render 37 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             35 ms of the frame was a stop-the-world collection
  05:17:48.878  39 ms    render 39 ms          GC pause (G1 Young Generation)
                             34 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 43.5 GB (963 MB/s, exact, all threads), max heap 10.0 GB
  21 GC pauses (0 old/full), 735 ms paused (1.6%), worst 71 ms, one every 2.2 s
  longest pauses:
    05:17:52.421  71 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:43.438  65 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:40.331  62 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:22.233  60 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:36.986  53 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:52.840  41 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:52.058  36 ms  G1 Young Generation, G1 Evacuation Pause
    05:17:48.873  34 ms  G1 Young Generation, G1 Evacuation Pause
  4 Remark/Cleanup pauses (concurrent mark cycles, not in the count above), 111 ms paused, worst 38 ms
  heap after GC 5.5 GB (55% of max, old garbage stays until the next marking cycle), changed by -1145625824 B over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 99% of bytes covered):
    209 MB/s  22%    collections_of_optimizations 1,348 samples
        11%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
        9.0%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
        6.5%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
    136 MB/s  14%    fastchunkgen              773 samples
        11%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
        6.6%  ChunkHolder.beforeTick:4520 [mixin handler from com.misanthropy.fastchunkgen.fixes.chunkio.threading_issues.mixin.MixinChunkHolder] -> [J
        5.5%  ChunkMap.lambda$scheduleChunkLoad$3:15032 [mixin merged from com.misanthropy.fastchunkgen.threading.chunkio.mixin.MixinThreadedAnvilChunkStorage] -> DataResult
    106 MB/s  11%    minecraft (vanilla)       3,208 samples
        15%  BlockBehaviour$BlockStateBase.getLightBlock -> CallbackInfoReturnable
        5.2%  LevelRenderer.getLightColor:2983 -> Integer
    63 MB/s   6.5%   lithoform                 315 samples
        18%  com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
        16%  com.misanthropy.lithoform.compat.LandProvinces.province:519 -> Climate$TargetPoint
        7.0%  com.misanthropy.lithoform.biome.SkyGuard.lambda$edges$1:160 -> CallbackInfoReturnable
    53 MB/s   5.5%   xaeroworldmap             165 samples
        26%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> DataResult
        11%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> Either$Left
        6.9%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> Optional
    52 MB/s   5.4%   radium                    291 samples
        68%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        11%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
        9.1%  LevelChunkSection.setBlockStateNoLocking:521 [mixin redirect from me.jellysquid.mods.lithium.mixin.chunk.no_locking.ChunkSectionMixin] -> CallbackInfoReturnable
    32 MB/s   3.3%   embeddium                 836 samples
        30%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 818591722
        13%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 1531254219
        9.5%  me.jellysquid.mods.sodium.client.model.light.smooth.SmoothLightPipeline.calculate:104 -> CallbackInfo
    30 MB/s   3.1%   modernfix                 158 samples
        41%  org.embeddedt.modernfix.world.gen.PrefetchingBlockColumn.setBlock:113 -> CallbackInfoReturnable
        13%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> Object;
        5.1%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> StructureTemplate$StructureBlockInfo
    27 MB/s   2.8%   linggango_tweaks          338 samples
        16%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
    22 MB/s   2.3%   structureessentials       132 samples
        14%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> String
        14%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> HashMap
        13%  StructureTemplate$StructureBlockInfo.onInit:854 [mixin handler from com.structureessentials.mixin.BlockInfoMixin] -> ResourceLocation

INTEGRATED SERVER (single player; this is world lag, not FPS)
  913 ticks, mspt mean 12 ms, p50 10 ms, p95 24 ms, worst 115 ms, 5 over 50 ms
    2.48 ms/tick  20%    minecraft (vanilla)       
    0.94 ms/tick  7.6%   collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.63 ms/tick  5.1%   forge (loader, events)    
    0.60 ms/tick  4.9%   radium                    EntitySectionStorage.forEachInBox:555 [mixin handler from me.jellysquid.mods.lithium.mixin.entity.fast_retrieval.SectionedEntityCacheMixin]
    0.52 ms/tick  4.2%   alexsmobs                 com.github.alexthe666.alexsmobs.entity.EntityLeafcutterAnt.tick:260
    0.50 ms/tick  4.0%   mowziesmobs               com.bobmowzie.mowziesmobs.server.entity.elokosa.EntityElokosaFollowerToHowler.tick:29
    0.35 ms/tick  2.8%   terramity                 net.mcreator.terramity.entity.GreenFairyEntity.aiStep:213
    0.33 ms/tick  2.7%   fastchunkgen              ServerChunkCache.beforeAwaitChunk:6611 [mixin redirect from com.misanthropy.fastchunkgen.base.mixin.priority.MixinServerChunkManager]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 6.43 of 16 cores, whole machine 68% busy
  cores  n    allocated   group                            runs
  3.45   17   20.5 GB     FastChunkGen worker ##           lithoform 50%, collections_of_optimizations 13%, fastchunkgen 13%
  0.68   1    4.7 GB      Render thread                    xaeroworldmap 15%, minecraft 15%, collections_of_optimizations 10%
  0.60   15   5.7 GB      ForkJoinPool.commonPool-worker-# lithoform 58%, collections_of_optimizations 8.8%, integrated_api 8.0%
  0.43   10   2.3 GB      Chunk Render Task Executor ##    embeddium 45%, minecraft 35%, linggango_tweaks 10.0%
  0.39   1    848 MB      Linggango Streams                lithoform 68%, linggango_tweaks 28%
  0.32   1    7.0 GB      Server thread                    minecraft 35%, xaeroworldmap 6.4%, collections_of_optimizations 6.2%
  0.15   10   87 MB       Flywheel Task Executor ##        collections_of_optimizations 55%, flywheel 45%
  0.11   6    184 MB      Lumenite light #                 lumenite 98%
  0.04   15   49 MB       Worker-Main-#                    minecraft 55%, jdk 45%
  0.04   21   161 MB      Thread-#                         xaeroworldmap 52%, minecraft 38%
  0.03   1    511 MB      minecraft_overworld - Light      lumenite 60%, minecraft 39%
  0.02   1    546 MB      JFR Event Stream #               no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    7.61 ms/s  165/s    46 us    alexsmobs:kangaroo                          worst 38 ms at -3314, 149, 760
    3.47 ms/s  122/s    28 us    alexsmobs:emu                               worst 0.93 ms at -3331, 157, 801
    2.86 ms/s  98/s     29 us    terramity:green_fairy                       worst 0.84 ms at -3531, 191, 755
    2.70 ms/s  70/s     39 us    hexerei:crow                                worst 2.65 ms at -3240, 191, 786
    2.28 ms/s  29/s     79 us    ars_nouveau:whirlisprig                     worst 9.38 ms at -3298, 178, 805
  block entity render:
    0.56 ms/s  4,448/s  0 us     minecraft:brushable_block                   worst 0.27 ms at -3518, 64, 888
  entity tick:
    15 ms/s    20/s     739 us   minecraft:player                            worst 4.80 ms at -3324, 200, 777
    1.52 ms/s  33/s     46 us    alexsmobs:capuchin_monkey                   worst 25 ms at -3341, 132, 666
    1.39 ms/s  20/s     71 us    alexsmobs:anteater                          worst 0.35 ms at -4007, 63, 708
  block entity tick:
    0.50 ms/s  405/s    1 us     minecraft:campfire                          worst 0.10 ms at 822, 3, 1023
  server entity tick:
    17 ms/s    263/s    65 us    terramity:green_fairy                       worst 3.74 ms at -3923, 218, 882
    8.03 ms/s  81/s     99 us    alexsmobs:leafcutter_ant                    worst 3.31 ms at -3223, 179, 747
    7.05 ms/s  62/s     114 us   eeeabsmobs:relic_observer                   worst 2.89 ms at -3320, 1, 685
    5.90 ms/s  354/s    17 us    minecraft:item                              worst 2.53 ms at -3121, 219, 736
    4.02 ms/s  36/s     113 us   eeeabsmobs:relic_ripper                     worst 1.30 ms at -3315, -16, 688
    3.61 ms/s  13/s     276 us   minecraft:player                            worst 5.35 ms at -3200, 200, 778
    3.08 ms/s  20/s     156 us   mowziesmobs:elokosa_follower_howler         worst 1.04 ms at -3713, 92, 772
    2.65 ms/s  21/s     124 us   alexsmobs:anteater                          worst 2.71 ms at -3931, 105, 807
  screen:
    1.04 ms/s  19/s     55 us    net.minecraft.client.gui.screens.ChatScreen worst 0.32 ms

JVM AND I/O
  class loads over 1 ms: 22 (60 ms), on the render/server thread 6 (15 ms)
  non-GC safepoints: 21 ms total (last: ThreadDump)
  log output: 0.7 lines/s
  exceptions thrown: 37.1/s, top: 2.1/s  UnionFileSystem$UncheckedIOException from modernfix at ModelManager.lambda$deferBlockStateLoad$3:568 [mixin merged from org.embeddedt.modernfix.common.mixin.perf.dynamic_resources.ModelManagerMixin]

MOD VERSIONS (mods named in the findings)
  embeddium 0.3.32-beta.114-dirty+mc1.20.1;  xaeroworldmap 1.46.0;  immediatelyfast 1.5.5+1.20.4;  
  collections_of_optimizations 5.6;  gnetum 2.5.1+1.20.1-forge;  punchy 2.8c;  fastchunkgen 0.39;  ;  
  flywheel 1.0.5;  cable_facades 2.1.3;  

RECORDING
  stack sampler every 5 ms: 8,771 render-thread, 1,973 server-thread samples (server only while ticking)
  JFR on (cpu, allocation, locks, file io, class loading, safepoints, exceptions): 14,927 CPU samples, 12,413 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
