WhatsLaggin report (manual)  30.4 s recorded, ended 2026-10-23 04:45:03
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, 75 entities loaded

VERDICT
  701 fps average (1.43 ms per frame), 1% low 71 fps, 0.1% low 29 fps.
  BALANCED: 1.01 ms CPU plus 0.41 ms waiting on the GPU per frame. Cuts on either side help.
  25 stutters over 20 ms (49.4 per minute), worst 91 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.43 ms frame waits on the GPU
       Both CPU and GPU cuts help here. CPU work: 1.01 ms per frame.
       Biggest GPU levers: render distance (12), resolution (3440x1440), graphics mode (fancy)
  2. [stutter] Stutter: GC pause (G1 Young Generation)
       8 frames over 20 ms, worst 36 ms, 445 ms of extra frame time per minute
       allocation 732 MB/s; 10 collections, worst 36 ms
       158 MB/s collections_of_optimizations (22%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
       107 MB/s minecraft (15%): SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> [J
       89 MB/s fastchunkgen (12%): ChunkMap.lambda$scheduleChunkLoad$3:15032 [mixin merged from com.misanthropy.fastchunkgen.threading.chunkio.mixin.MixinThreadedAnvilChunkStorage] -> DataResult
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [cpu] embeddium costs 0.077 ms per frame on the render thread
       7.9% of render-thread CPU time, mostly in world, 45% in its own code (rest is vanilla/library code it called)
       45%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (29%), executing GL32C.nglMultiDrawElementsBaseVertex (26%)
       16%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:222   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.util.NativeBuffer.deallocate:129 (13%), executing JNI.invokePV (11%)
       8.5%  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.render:188 (16%), executing GL20C.glUseProgram (16%)
       removing this cost entirely: about 701 -> 742 fps
  4. [stutter] Stutter: unexplained (present)
       6 frames over 20 ms, worst 32 ms, 308 ms of extra frame time per minute
  5. [tick] Each client tick takes 4.96 ms
       20 ticks a second run inline on the render thread, so 20 frames a second each take 4.96 ms longer than the rest (uneven frame pacing).
       punchy 0.23 ms per tick
       linggango_tweaks 0.32 ms per tick
       collections_of_optimizations 0.44 ms per tick
       xaerominimap 0.16 ms per tick
       pehkui 0.13 ms per tick
  6. [cpu] xaeroworldmap costs 0.068 ms per frame on the render thread
       7.0% of render-thread CPU time, mostly in no phase, 48% in its own code (rest is vanilla/library code it called)
       96%  xaero.map.events.ClientEventsForge.renderTick:32   <- Minecraft.runTick:1148
               hot: xaero.map.graphics.TextureUploader.uploadTextures:118 (28%), executing GL11C.glFinish (32%)
       removing this cost entirely: about 701 -> 736 fps
  7. [stutter] Stutter: lock wait (flywheel)
       4 frames over 20 ms, worst 59 ms, 266 ms of extra frame time per minute
  8. [cpu] immediatelyfast costs 0.049 ms per frame on the render thread
       5.0% of render-thread CPU time, mostly in world, 31% in its own code (rest is vanilla/library code it called)
       51%  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 RenderStateShard.clearRenderState:41 (11%)
       19%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125   <- LevelRenderer.renderLevel:1283
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (51%), executing RenderStateShard.setupRenderState:37 (17%)
       11%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105   <- LevelRenderer.renderLevel:1423
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (81%), executing GL11C.glBindTexture (14%)
       removing this cost entirely: about 701 -> 726 fps
  9. [cpu] punchy costs 0.044 ms per frame on the render thread
       4.6% of render-thread CPU time, mostly in world, 75% in its own code (rest is vanilla/library code it called)
       83%  ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
               hot: punchy.client.state.MovementStateMachine.endRenderSample:419 (4.3%), executing Matrix4f.mul:1141 (4.3%)
       15%  punchy.platform.ForgeClientPlatform.onClientTick:109   <- Minecraft.tick:1875
               hot: punchy.client.state.SpearStateMachine.isSpearChargeType:373 (12%), executing StringLatin1.replace (8.0%)
       removing this cost entirely: about 701 -> 724 fps
 10. [cpu] linggango_tweaks costs 0.044 ms per frame on the render thread
       4.5% of render-thread CPU time, mostly in world, 37% in its own code (rest is vanilla/library code it called)
       16%  com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91   <- GameRenderer.renderLevel:1128
               hot: com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 (22%), executing GL45C.glBlitNamedFramebuffer (22%)
       16%  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 (50%), executing EffectInstance.apply:265 (19%)
       15%  com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205   <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
               hot: com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.coneGap:150 (4.0%), executing GL20C.glUseProgram (16%)
       removing this cost entirely: about 701 -> 724 fps

FRAMES
  21,270 frames   p50 1.00 ms   p95 3.60 ms   p99 8.91 ms   worst 91 ms
  per frame:  tasks 0.047 ms  client tick 0.14 ms  render 0.70 ms  present 0.42 ms  other 0.13 ms
  inside those:  swap 0.41 ms  world 0.53 ms  hud 0.12 ms  screen 0.008 ms
  client tick: 4.96 ms per tick, 20.0 ticks per second
  GPU busy per frame (timer queries): p50 0.69 ms   p95 1.80 ms   p99 2.46 ms
  GPU time per pass (mean per frame, each pass also holds what mods drew at the stage before it):
    0.024 ms  2.9%  sky and frame setup   (p95 0.030 ms)
    0.14 ms  16%  solid terrain   (p95 0.29 ms)
    0.027 ms  3.2%  cutout mipped terrain   (p95 0.036 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.002 ms)
    0.020 ms  2.4%  entities   (p95 0.034 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    0.052 ms  6.4%  translucent terrain   (p95 0.30 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.002 ms)
    0.001 ms  0.1%  particles   (p95 0.005 ms)
    0.046 ms  5.5%  weather and clouds   (p95 0.096 ms)
    0.000 ms  <0.1%  end of level render   (p95 0.002 ms)
    0.22 ms  27%  hand and post effects   (p95 0.35 ms)
    0.16 ms  19%  hud   (p95 0.27 ms)
    0.14 ms  17%  screens and rest of frame   (p95 0.52 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  5,439 samples: CPU work 68%, GPU wait 32%, limiter 0.0%, blocked on other threads 0.2%
  mods caused 77% of render-thread CPU work, vanilla/forge/driver the rest
  17% of CPU work is inside OpenGL calls (driver work or a GPU sync), mostly glFinish; the mod that made the call is charged for it below
  ms/frame  share  own   mod                          mostly in
  0.14 ms   14%    88%   minecraft (vanilla)          world
  0.092 ms  9.5%   100%  forge (loader, events)       world
  0.077 ms  7.9%   45%   embeddium                    world
  0.068 ms  7.0%   48%   xaeroworldmap                no phase
  0.049 ms  5.0%   31%   immediatelyfast              world
  0.044 ms  4.6%   75%   punchy                       world
  0.044 ms  4.5%   37%   linggango_tweaks             world
  0.037 ms  3.8%   40%   gnetum                       hud
  0.035 ms  3.6%   75%   collections_of_optimizations client tick
  0.023 ms  2.4%   16%   oculus                       world
  0.019 ms  2.0%   58%   xaerolib                     no phase
  0.017 ms  1.7%   83%   flywheel                     world
  0.017 ms  1.7%   14%   let_there_be_atmosphere      world
  0.017 ms  1.7%   7.9%  whatslaggin                  world
  0.016 ms  1.6%   30%   asyncparticles               world
  0.28 ms   130 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  minecraft (vanilla)  0.14 ms/frame, 14%, hottest vanilla methods:
    8.7%  EntityRenderDispatcher.getRenderer:530  <- me.decce.ixeris.RenderThreadStarter.run:39
    8.7%  LevelRenderer.renderLevel:1198  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing Iterators$1.next:146 24%
    8.5%  BlockState.getLightBlock:617  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing ThreadLocal$ThreadLocalMap.set 55%
  embeddium  0.077 ms/frame, 7.9%
    45%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 29%
          executing GL32C.nglMultiDrawElementsBaseVertex 26%
    16%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:222  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.util.NativeBuffer.deallocate:129 13%
          executing JNI.invokePV 11%
    8.5%  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.render:188 16%
          executing GL20C.glUseProgram 16%
  xaeroworldmap  0.068 ms/frame, 7.0%
    96%   xaero.map.events.ClientEventsForge.renderTick:32  <- Minecraft.runTick:1148
          hot xaero.map.graphics.TextureUploader.uploadTextures:118 28%
          executing GL11C.glFinish 32%
  immediatelyfast  0.049 ms/frame, 5.0%
    51%   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 RenderStateShard.clearRenderState:41 11%
    19%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125  <- LevelRenderer.renderLevel:1283
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 51%
          executing RenderStateShard.setupRenderState:37 17%
    11%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105  <- LevelRenderer.renderLevel:1423
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 81%
          executing GL11C.glBindTexture 14%
  punchy  0.044 ms/frame, 4.6%
    83%   ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
          hot punchy.client.state.MovementStateMachine.endRenderSample:419 4.3%
          executing Matrix4f.mul:1141 4.3%
    15%   punchy.platform.ForgeClientPlatform.onClientTick:109  <- Minecraft.tick:1875
          hot punchy.client.state.SpearStateMachine.isSpearChargeType:373 12%
          executing StringLatin1.replace 8.0%
  linggango_tweaks  0.044 ms/frame, 4.5%
    16%   com.misanthropy.linggango.linggango_tweaks.lumalight.LumalightClient.onRenderLevel:91  <- GameRenderer.renderLevel:1128
          hot com.misanthropy.linggango.linggango_tweaks.lumalight.PostEffectRenderer.draw:210 22%
          executing GL45C.glBlitNamedFramebuffer 22%
    16%   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 50%
          executing EffectInstance.apply:265 19%
    15%   com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          hot com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.coneGap:150 4.0%
          executing GL20C.glUseProgram 16%
  gnetum  0.037 ms/frame, 3.8%
    97%   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] 36%
          executing ASMEventHandler.invoke:55 22%
  collections_of_optimizations  0.035 ms/frame, 3.6%
    23%   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 45%
          executing Level.getGameTime:729 26%
    7.6%  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 20%
    5.3%  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 43%
          executing MethodHandleNatives.resolve 14%

  blocked (render thread parked, waiting for another thread):
    0.003 ms/frame minecraft (vanilla)     Minecraft.runTick:1177

STUTTERS (frames over 20 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  8       36 ms     445 ms      GC pause (G1 Young Generation)
  6       32 ms     308 ms      unexplained (present)
  4       59 ms     266 ms      lock wait (flywheel)
  1       91 ms     178 ms      whole-process stall
  1       62 ms     120 ms      unexplained (render)
  1       39 ms     75 ms       subtle_effects: einstein.subtle_effects.particle.SplashRippleParticle$Provider.createParticle
  1       28 ms     54 ms       unexplained (tasks)
  1       27 ms     51 ms       JVM safepoint for a stack sample (profiler overhead, not your mods)
  1       24 ms     45 ms       vanilla minecraft: ClientPacketListener.sendDeferredPackets
  1       20 ms     38 ms       vanilla minecraft: BlockState.getLightBlock
  1       20 ms     38 ms       saintsdragons: com.leon.saintsdragons.server.entity.base.RideableFlyingDragon.tickDivePose

  worst frames:
  04:44:42.053  91 ms    client tick 87 ms     whole-process stall
                             every thread was stopped (OS scheduling, paging, or a JVM pause JFR did not see)
  04:44:38.320  62 ms    render 50 ms          unexplained (render)
                             13 samples, no single owner
  04:44:49.561  59 ms    render 58 ms          lock wait (flywheel)
                             56 ms blocked on a monitor held by another thread
  04:44:39.401  39 ms    client tick 7.78 ms   subtle_effects: einstein.subtle_effects.particle.SplashRippleParticle$Provider.createParticle
                             4 of 8 samples, hottest line einstein.subtle_effects.particle.SplashRippleParticle$Provider.createParticle:90
  04:44:54.901  36 ms    tasks 31 ms           GC pause (G1 Young Generation)
                             22 ms of the frame was a stop-the-world collection
  04:44:43.734  32 ms    present 31 ms         unexplained (present)
                             0 stack samples landed inside this frame, too few to name a cause
  04:44:38.214  32 ms    present 32 ms         GC pause (G1 Young Generation)
                             30 ms of the frame was a stop-the-world collection
  04:44:44.933  32 ms    render 32 ms          GC pause (G1 Young Generation)
                             30 ms of the frame was a stop-the-world collection
  04:44:51.166  30 ms    present 29 ms         GC pause (G1 Young Generation)
                             28 ms of the frame was a stop-the-world collection
  04:44:47.618  29 ms    render 29 ms          GC pause (G1 Young Generation)
                             25 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 21.7 GB (732 MB/s, exact, all threads), max heap 10.0 GB
  10 GC pauses (0 old/full), 258 ms paused (0.8%), worst 36 ms, one every 3.0 s
  longest pauses:
    04:44:42.043  36 ms  G1 Young Generation, G1 Evacuation Pause
    04:44:44.931  31 ms  G1 Young Generation, G1 Evacuation Pause
    04:44:38.213  30 ms  G1 Young Generation, G1 Evacuation Pause
    04:44:51.165  28 ms  G1 Young Generation, G1 Evacuation Pause
    04:44:49.304  26 ms  G1 Young Generation, GCLocker Initiated GC
    04:44:47.615  25 ms  G1 Young Generation, GCLocker Initiated GC
    04:44:53.122  23 ms  G1 Young Generation, GCLocker Initiated GC
    04:44:54.892  22 ms  G1 Young Generation, G1 Evacuation Pause
  heap after GC 5.9 GB (59% of max, old garbage stays until the next marking cycle), changed by 600 MB over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    158 MB/s  22%    collections_of_optimizations 867 samples
        9.5%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
        9.4%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.readValue:168 -> [B
        9.0%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
    107 MB/s  15%    minecraft (vanilla)       1,664 samples
        9.6%  SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> [J
        8.2%  BlockLightSectionStorage$BlockDataLayerStorageMap.copy:36 -> [J
        8.0%  SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> Object;
    89 MB/s   12%    fastchunkgen              447 samples
        8.8%  ChunkMap.lambda$scheduleChunkLoad$3:15032 [mixin merged from com.misanthropy.fastchunkgen.threading.chunkio.mixin.MixinThreadedAnvilChunkStorage] -> DataResult
        8.8%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
        7.9%  com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
    58 MB/s   7.9%   lithoform                 387 samples
        13%  com.misanthropy.lithoform.bowl.Special3D.fillArray:23 -> DensityFunctions$Spline$Point
        10%  com.misanthropy.lithoform.bowl.Special3D.fillArray:23 -> [D
        10%  com.misanthropy.lithoform.bowl.Special3D.compute:18 -> DensityFunctions$Spline$Point
    32 MB/s   4.3%   xaeroworldmap             100 samples
        26%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> DataResult
        14%  xaero.map.misc.ConsistentBitArray.<init>:30 -> [J
        12%  xaero.map.file.worldsave.WorldDataReader.lambda$buildRegion$1:150 -> [J
    30 MB/s   4.0%   radium                    156 samples
        55%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        22%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
        5.9%  LevelChunkSection.setBlockStateNoLocking:521 [mixin redirect from me.jellysquid.mods.lithium.mixin.chunk.no_locking.ChunkSectionMixin] -> CallbackInfoReturnable
    27 MB/s   3.7%   linggango_tweaks          305 samples
        6.9%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
    26 MB/s   3.5%   biomeswevegone            120 samples
        14%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$StoneDepthCheck$1StoneDepthCondition
        12%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$TestRule
        11%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> Object;
    19 MB/s   2.5%   modernfix                 185 samples
        43%  org.embeddedt.modernfix.world.gen.PrefetchingBlockColumn.setBlock:113 -> CallbackInfoReturnable
        5.5%  ModelManager.lambda$deferBlockStateLoad$3:568 [mixin merged from org.embeddedt.modernfix.common.mixin.perf.dynamic_resources.ModelManagerMixin] -> [B
        5.3%  ModelBakery.getOrLoadModelDynamic:5292 [mixin handler from org.embeddedt.modernfix.common.mixin.perf.dynamic_resources.ModelBakeryMixin] -> [C
    13 MB/s   1.8%   embeddium                 459 samples
        17%  me.jellysquid.mods.sodium.client.render.chunk.compile.tasks.ChunkBuilderMeshingTask.execute:137 -> Iterators$9
        16%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 1603315304
        15%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 1575375610

INTEGRATED SERVER (single player; this is world lag, not FPS)
  607 ticks, mspt mean 15 ms, p50 13 ms, p95 31 ms, worst 107 ms, 7 over 50 ms
    3.25 ms/tick  22%    minecraft (vanilla)       
    1.07 ms/tick  7.1%   collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.97 ms/tick  6.5%   forge (loader, events)    
    0.69 ms/tick  4.6%   radium                    EntitySectionStorage.forEachInBox:555 [mixin handler from me.jellysquid.mods.lithium.mixin.entity.fast_retrieval.SectionedEntityCacheMixin]
    0.61 ms/tick  4.1%   alexsmobs                 com.github.alexthe666.alexsmobs.entity.EntityLeafcutterAnt.tick:260
    0.39 ms/tick  2.6%   pehkui                    Entity.pehkui$tick:38737 [mixin handler from virtuoel.pehkui.mixin.EntityMixin]
    0.31 ms/tick  2.0%   ending_library            Level.guardEntityTick:14052 [mixin handler from com.mega.endinglib.mixin.time.time.LevelMixin]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 4.69 of 16 cores, whole machine 68% busy
  cores  n    allocated   group                            runs
  2.21   12   9.6 GB      FastChunkGen worker ##           lithoform 37%, collections_of_optimizations 18%, biomeswevegone 15%
  0.64   1    2.6 GB      Render thread                    xaeroworldmap 15%, minecraft 14%, punchy 8.2%
  0.40   1    877 MB      Linggango Streams                lithoform 60%, linggango_tweaks 36%
  0.38   15   2.4 GB      ForkJoinPool.commonPool-worker-# lithoform 67%, mowziesmobs 8.6%, integrated_api 7.1%
  0.33   1    3.0 GB      Server thread                    minecraft 27%, radium 7.3%
  0.21   10   706 MB      Chunk Render Task Executor ##    embeddium 52%, minecraft 26%, linggango_tweaks 7.0%
  0.10   10   17 MB       Flywheel Task Executor ##        flywheel 100%
  0.09   21   265 MB      Thread-#                         xaeroworldmap 55%, minecraft 34%
  0.08   6    75 MB       Lumenite light #                 lumenite 94%, minecraft 5.0%
  0.03   1    339 MB      JFR Event Stream #               no JFR samples (idle or native)
  0.03   15   26 MB       Worker-Main-#                    minecraft 53%, jdk 41%, forge 5.9%
  0.02   75   352 MB      FastChunkGen Storage ##          too few samples

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    8.85 ms/s  106/s    84 us    alexsmobs:leafcutter_ant                    worst 4.09 ms at 1490, 190, 787
    5.02 ms/s  416/s    12 us    minecraft:item                              worst 3.49 ms at 1474, 199, 792
    2.80 ms/s  38/s     73 us    alexsmobs:komodo_dragon                     worst 3.55 ms at 1195, 161, 750
    2.62 ms/s  14/s     187 us   primitive_mobs:chameleon                    worst 7.69 ms at 1390, 197, 764
    2.45 ms/s  6/s      438 us   alexsmobs:emu                               worst 28 ms at 1489, 188, 785
  entity tick:
    24 ms/s    20/s     1201 us  minecraft:player                            worst 83 ms at 1426, 200, 778
    3.06 ms/s  103/s    30 us    minecraft:item                              worst 6.33 ms at 1474, 199, 792
    2.08 ms/s  42/s     50 us    alexsmobs:leafcutter_ant                    worst 0.74 ms at 1360, 214, 778
  server entity tick:
    18 ms/s    211/s    84 us    terramity:green_fairy                       worst 14 ms at 1230, 196, 817
    15 ms/s    567/s    26 us    minecraft:item                              worst 2.87 ms at 1272, 193, 811
    11 ms/s    87/s     127 us   alexsmobs:leafcutter_ant                    worst 3.58 ms at 1389, 194, 750
    5.51 ms/s  44/s     124 us   hexerei:crow                                worst 3.44 ms at 1296, 177, 700
    5.42 ms/s  49/s     110 us   minecraft:zombie                            worst 2.36 ms at 1096, -21, 781
    3.89 ms/s  18/s     219 us   minecraft:player                            worst 4.37 ms at 1119, 200, 775
    3.11 ms/s  33/s     94 us    minecraft:skeleton                          worst 8.38 ms at 1351, 135, 719
    2.94 ms/s  31/s     94 us    alexsmobs:toucan                            worst 2.05 ms at 1365, 266, 822
  server block entity tick:
    1.48 ms/s  3,229/s  0 us     minecraft:sculk_sensor                      worst 2.73 ms at 1517, -47, 799
  screen:
    5.35 ms/s  78/s     69 us    net.minecraft.client.gui.screens.ChatScreen worst 1.19 ms

JVM AND I/O
  class loads over 1 ms: 247 (623 ms), on the render/server thread 71 (183 ms)
    by owner: minecraft 91 classes, 232 ms; saintsdragons 26 classes, 57 ms; byepregen 7 classes, 47 ms; linggango_fixes 19 classes, 31 ms; library 11 classes, 26 ms
  render thread lock: 233 ms in 34 events, flywheel at dev.engine_room.flywheel.impl.task.ThreadGroupNotifier.postNotification:16 (ThreadGroupNotifier)
  non-GC safepoints: 41 ms total (last: ThreadDump)
  log output: 3.9 lines/s, top: 3.5/s  net.minecraft.world.level.chunk.storage.ChunkSerializer
  exceptions thrown: 81.3/s, top: 3.9/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.113-dirty+mc1.20.1;  xaeroworldmap 1.46.0;  immediatelyfast 1.5.5+1.20.4;  punchy 2.8c;  
  linggango_tweaks 7.38;  gnetum 2.5.1+1.20.1-forge;  collections_of_optimizations 5.5;  xaerominimap 26.5.0;  
  pehkui 3.8.2+1.20.1-forge;  fastchunkgen 0.38;  ;  flywheel 1.0.5;  

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