WhatsLaggin report (manual)  46.2 s recorded, ended 2026-10-23 03:25:13
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 64, simulation 7, graphics fancy, shaders Solas Shader V3.7b.zip
World minecraft:overworld, 121 entities loaded

VERDICT
  110 fps average (9.11 ms per frame), 1% low 34 fps, 0.1% low 20 fps.
  GPU-BOUND: 4.83 ms of each frame (53%) is the CPU waiting for the GPU. The CPU part is only 4.28 ms.
  Optimising mod code on the render thread will not raise FPS until the GPU load drops.
  31 stutters over 24 ms (40.3 per minute), worst 55 ms. Biggest cause: GC pause (G1 Young Generation).

WHAT TO FIX (ranked by time lost per second of play)
  1. [gpu] GPU-bound: 53% of every frame is spent waiting on the GPU
       The CPU finishes its part of a frame in 4.28 ms and then waits 4.83 ms in glfwSwapBuffers for the GPU.
       GPU time for the frame's draw calls: p50 8.39 ms, p95 9.70 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 (64), resolution (3440x1440), graphics mode (fancy)
  2. [stutter] Stutter: GC pause (G1 Young Generation)
       23 frames over 24 ms, worst 55 ms, 697 ms of extra frame time per minute
       allocation 1.2 GB/s; 35 collections, worst 45 ms
       306 MB/s minecraft (25%): SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> Object;
       272 MB/s collections_of_optimizations (23%): com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
       147 MB/s fastchunkgen (12%): NoiseChunk.fcg$interpolatedState:4069 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.fill.MixinNoiseChunk] -> CallbackInfoReturnable
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  3. [stutter] Stutter: GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
       8 frames over 24 ms, worst 49 ms, 382 ms of extra frame time per minute
       allocation 1.2 GB/s; 35 collections, worst 45 ms
       306 MB/s minecraft (25%): SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> Object;
       272 MB/s collections_of_optimizations (23%): com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
       147 MB/s fastchunkgen (12%): NoiseChunk.fcg$interpolatedState:4069 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.fill.MixinNoiseChunk] -> CallbackInfoReturnable
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).
  4. [world] minecraft:player (entity render) costs 49 ms every second
       5,066 calls, 447 us each, worst 33 ms at 2461, 68, 778
  5. [cpu] embeddium costs 1.06 ms per frame on the render thread
       26% of render-thread CPU time, mostly in world, 71% in its own code (rest is vanilla/library code it called)
       75%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:275   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (40%), executing GL32C.nglMultiDrawElementsBaseVertex (20%)
       19%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218   <- LevelRenderer.setupRender:40729
               hot: me.jellysquid.mods.sodium.client.render.chunk.region.RenderRegionManager.update:51 (27%), executing Collection.removeIf (3.1%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  6. [cpu] oculus costs 0.43 ms per frame on the render thread
       11% of render-thread CPU time, mostly in world, 45% in its own code (rest is vanilla/library code it called)
       36%  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 ASMEventHandler.invoke:55 (8.6%)
       15%  LevelRenderer.iris$beginLevelRender:16171 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1149
               hot: net.irisshaders.iris.uniforms.custom.cached.CachedUniform.evaluateTo:92 (17%), executing ReferencePipeline$2$1.accept (12%)
       14%  LevelRenderer.iris$beginTranslucents:16334 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]   <- LevelRenderer.renderLevel:1370
               hot: net.irisshaders.iris.pathways.HandRenderer.renderSolid:96 (17%), executing GL11C.nglDrawElements (8.6%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  7. [cpu] xaeroworldmap costs 0.26 ms per frame on the render thread
       6.3% of render-thread CPU time, mostly in no phase, 87% in its own code (rest is vanilla/library code it called)
       100%  xaero.map.events.ClientEventsForge.renderTick:32   <- Minecraft.runTick:1148
               hot: xaero.map.region.BranchLeveledRegion.get:316 (21%), executing Hashtable.get (8.3%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  8. [cpu] entity_model_features costs 0.21 ms per frame on the render thread
       5.2% of render-thread CPU time, mostly in world, 81% in its own code (rest is vanilla/library code it called)
       92%  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 (52%), executing EMF_ASM_Parsed_156.eval (52%)
       5.8%  traben.entity_model_features.models.animation.state.EMFEntityRenderState.activate:306   <- traben.entity_texture_features.features.state.ETFState.mount:51
               hot: traben.entity_model_features.models.parts.EMFModelPartRoot.resetVanillaPartsToDefaults:425 (75%), executing HashMap$Values.forEach (75%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
  9. [cpu] gnetum costs 0.13 ms per frame on the render thread
       3.1% of render-thread CPU time, mostly in hud, 31% 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] (44%), executing ASMEventHandler.invoke:55 (26%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes
 10. [cpu] collections_of_optimizations costs 0.12 ms per frame on the render thread
       2.9% of render-thread CPU time, mostly in client tick, 59% in its own code (rest is vanilla/library code it called)
       45%  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:142 (34%), executing Level.getGameTime:729 (34%)
       7.7%  me.decce.gnetum.ASMEventHandlerHelper.coo$singleModIdLookup:532 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.gnetum.MixinASMEventHandlerHelper]   <- me.decce.gnetum.ASMEventHandlerHelper.tryGetModId
               executing Reference2ObjectOpenHashMap.get:321 (100%)
       7.7%  BiomeManager.coo$cacheQuartLookup:1065 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.vanilla.MixinBiomeManagerQuartCache]   <- BiomeManager.getNoiseBiomeAtQuart:97
               executing LevelReader.getNoiseBiome:58 (78%)
       no FPS gain while GPU-bound, but it adds to frame-time spikes

FRAMES
  5,065 frames   p50 9.04 ms   p95 11 ms   p99 16 ms   worst 55 ms
  per frame:  tasks 0.24 ms  client tick 0.77 ms  render 2.95 ms  present 4.84 ms  other 0.32 ms
  inside those:  swap 4.83 ms  world 2.59 ms  hud 0.31 ms  screen 0.002 ms
  client tick: 4.20 ms per tick, 20.0 ticks per second
  GPU busy per frame (timer queries): p50 8.39 ms   p95 9.70 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.9%  sky and frame setup   (p95 0.17 ms)
    5.51 ms  66%  solid terrain   (p95 6.49 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.019 ms  0.2%  entities   (p95 0.023 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    1.21 ms  14%  translucent terrain   (p95 1.64 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.003 ms)
    0.003 ms  <0.1%  particles   (p95 0.013 ms)
    0.000 ms  <0.1%  weather and clouds   (p95 0.002 ms)
    1.15 ms  14%  end of level render   (p95 1.74 ms)
    0.000 ms  <0.1%  hand and post effects   (p95 0.002 ms)
    0.084 ms  1.0%  hud   (p95 0.24 ms)
    0.23 ms  2.8%  screens and rest of frame   (p95 0.89 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  8,958 samples: CPU work 45%, GPU wait 55%, limiter 0.0%, blocked on other threads 0.0%
  mods caused 83% of render-thread CPU work, vanilla/forge/driver the rest
  14% 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
  1.06 ms   26%    71%   embeddium                    world
  0.52 ms   13%    96%   minecraft (vanilla)          client tick
  0.43 ms   11%    45%   oculus                       world
  0.26 ms   6.3%   87%   xaeroworldmap                no phase
  0.21 ms   5.2%   81%   entity_model_features        world
  0.16 ms   3.8%   100%  forge (loader, events)       world
  0.13 ms   3.1%   31%   gnetum                       hud
  0.12 ms   2.9%   59%   collections_of_optimizations client tick
  0.081 ms  2.0%   99%   immersive_optimization       client tick
  0.061 ms  1.5%   22%   entity_texture_features      world
  0.057 ms  1.4%   66%   punchy                       world
  0.053 ms  1.3%   94%   l2hostility                  tasks
  0.050 ms  1.2%   22%   cheaplighting                client tick
  0.049 ms  1.2%   46%   brute_force_culling_revived  world
  0.048 ms  1.2%   51%   linggango_tweaks             world
  0.80 ms   126 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  embeddium  1.06 ms/frame, 26%
    75%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:275  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 40%
          executing GL32C.nglMultiDrawElementsBaseVertex 20%
    19%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.setupTerrain:218  <- LevelRenderer.setupRender:40729
          hot me.jellysquid.mods.sodium.client.render.chunk.region.RenderRegionManager.update:51 27%
          executing Collection.removeIf 3.1%
  minecraft (vanilla)  0.52 ms/frame, 13%, hottest vanilla methods:
    26%   LevelChunk$BoundTickingBlockEntity.getPos:719  <- me.decce.ixeris.RenderThreadStarter.run:39
    16%   BlockState.getLightBlock:617  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing ThreadLocal$ThreadLocalMap.getEntryAfterMiss 54%
    7.9%  LevelChunk$BoundTickingBlockEntity.tick:688  <- me.decce.ixeris.RenderThreadStarter.run:39
  oculus  0.43 ms/frame, 11%
    36%   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 ASMEventHandler.invoke:55 8.6%
    15%   LevelRenderer.iris$beginLevelRender:16171 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1149
          hot net.irisshaders.iris.uniforms.custom.cached.CachedUniform.evaluateTo:92 17%
          executing ReferencePipeline$2$1.accept 12%
    14%   LevelRenderer.iris$beginTranslucents:16334 [mixin handler from net.irisshaders.iris.mixin.MixinLevelRenderer]  <- LevelRenderer.renderLevel:1370
          hot net.irisshaders.iris.pathways.HandRenderer.renderSolid:96 17%
          executing GL11C.nglDrawElements 8.6%
  xaeroworldmap  0.26 ms/frame, 6.3%
    100%  xaero.map.events.ClientEventsForge.renderTick:32  <- Minecraft.runTick:1148
          hot xaero.map.region.BranchLeveledRegion.get:316 21%
          executing Hashtable.get 8.3%
  entity_model_features  0.21 ms/frame, 5.2%
    92%   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 52%
          executing EMF_ASM_Parsed_156.eval 52%
    5.8%  traben.entity_model_features.models.animation.state.EMFEntityRenderState.activate:306  <- traben.entity_texture_features.features.state.ETFState.mount:51
          hot traben.entity_model_features.models.parts.EMFModelPartRoot.resetVanillaPartsToDefaults:425 75%
          executing HashMap$Values.forEach 75%
  gnetum  0.13 ms/frame, 3.1%
    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] 44%
          executing ASMEventHandler.invoke:55 26%
  collections_of_optimizations  0.12 ms/frame, 2.9%
    45%   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:142 34%
          executing Level.getGameTime:729 34%
    7.7%  me.decce.gnetum.ASMEventHandlerHelper.coo$singleModIdLookup:532 [mixin handler from com.misanthropy.collections_of_optimizations.mixin.gnetum.MixinASMEventHandlerHelper]  <- me.decce.gnetum.ASMEventHandlerHelper.tryGetModId
          executing Reference2ObjectOpenHashMap.get:321 100%
    7.7%  BiomeManager.coo$cacheQuartLookup:1065 [mixin redirect from com.misanthropy.collections_of_optimizations.mixin.vanilla.MixinBiomeManagerQuartCache]  <- BiomeManager.getNoiseBiomeAtQuart:97
          executing LevelReader.getNoiseBiome:58 78%
  immersive_optimization  0.081 ms/frame, 2.0%
    100%  Level.immersiveOptimization$shouldTickBlocksAt:6526 [mixin handler from net.conczin.immersive_optimization.mixin.LevelMixin]  <- Level.shouldTickBlocksAt
          hot net.conczin.immersive_optimization.TickScheduler.shouldTick:288 61%
          executing ConcurrentHashMap.get 38%

STUTTERS (frames over 24 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  23      55 ms     697 ms      GC pause (G1 Young Generation)
  8       49 ms     382 ms      GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)

  worst frames:
  03:24:54.723  55 ms    present 53 ms         GC pause (G1 Young Generation)
                             45 ms of the frame was a stop-the-world collection
  03:25:11.905  50 ms    client tick 43 ms     GC pause (G1 Young Generation)
                             38 ms of the frame was a stop-the-world collection
  03:24:41.291  49 ms    render 45 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             39 ms of the frame was a stop-the-world collection
  03:24:58.653  48 ms    client tick 43 ms     GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             38 ms of the frame was a stop-the-world collection
  03:24:29.701  47 ms    present 45 ms         GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             39 ms of the frame was a stop-the-world collection
  03:24:52.206  47 ms    render 42 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             38 ms of the frame was a stop-the-world collection
  03:24:37.257  46 ms    client tick 40 ms     GC pause (G1 Young Generation)
                             33 ms of the frame was a stop-the-world collection
  03:24:46.739  45 ms    present 40 ms         GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             37 ms of the frame was a stop-the-world collection
  03:25:04.188  44 ms    present 42 ms         GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             37 ms of the frame was a stop-the-world collection
  03:25:08.925  43 ms    render 42 ms          GC pause (G1 Remark/Cleanup, end of a concurrent mark cycle)
                             38 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 54.3 GB (1.2 GB/s, exact, all threads), max heap 10.0 GB
  35 GC pauses (0 old/full), 733 ms paused (1.6%), worst 45 ms, one every 1.3 s
  longest pauses:
    03:24:54.722  45 ms  G1 Young Generation, G1 Evacuation Pause
    03:25:11.895  38 ms  G1 Young Generation, G1 Evacuation Pause
    03:24:42.791  36 ms  G1 Young Generation, GCLocker Initiated GC
    03:24:48.131  36 ms  G1 Young Generation, G1 Evacuation Pause
    03:24:37.243  34 ms  G1 Young Generation, G1 Evacuation Pause
    03:25:05.558  32 ms  G1 Young Generation, G1 Evacuation Pause
    03:24:31.920  31 ms  G1 Young Generation, G1 Evacuation Pause
    03:25:00.885  27 ms  G1 Young Generation, G1 Evacuation Pause
  13 Remark/Cleanup pauses (concurrent mark cycles, not in the count above), 310 ms paused, worst 39 ms
  heap after GC 7.2 GB (72% of max, old garbage stays until the next marking cycle), changed by 881 MB over the recording
  by mod (JFR samples scaled to each thread's exact allocation; 99% of bytes covered):
    306 MB/s  25%    minecraft (vanilla)       2,943 samples
        21%  SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> Object;
        21%  SkyLightSectionStorage$SkyDataLayerStorageMap.copy:164 -> [J
        17%  BlockLightSectionStorage$BlockDataLayerStorageMap.copy:36 -> [J
    272 MB/s  23%    collections_of_optimizations 1,688 samples
        17%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> BlockPos
        6.8%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> MultifaceSpreader$SpreadPos
        5.2%  com.misanthropy.collections_of_optimizations.core.FeaturePlacement.step:63 -> CallbackInfoReturnable
    147 MB/s  12%    fastchunkgen              1,049 samples
        7.6%  NoiseChunk.fcg$interpolatedState:4069 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.fill.MixinNoiseChunk] -> CallbackInfoReturnable
        6.8%  NoiseChunk.lambda$wrap$0:4484 [mixin merged from com.misanthropy.fastchunkgen.opts.worldgen.vanilla.mixin.noise_chunk_wrap.MixinNoiseChunk] -> [D
        6.8%  com.misanthropy.fastchunkgen.base.common.util.InvokingExecutorService.execute:88 -> Double
    89 MB/s   7.4%   lithoform                 477 samples
        20%  com.misanthropy.lithoform.compat.LandProvinces.province:520 -> [J
        16%  com.misanthropy.lithoform.compat.LandProvinces.province:519 -> Climate$TargetPoint
        9.3%  com.misanthropy.lithoform.biome.CaveProvinces.get:163 -> DensityFunction$SinglePointContext
    55 MB/s   4.5%   biomeswevegone            300 samples
        20%  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
        8.2%  net.potionstudios.biomeswevegone.world.level.levelgen.surfacerules.WeightedRuleSource.apply:31 -> SurfaceRules$WaterConditionSource$1WaterCondition
    34 MB/s   2.9%   modernfix                 328 samples
        67%  org.embeddedt.modernfix.world.gen.PrefetchingBlockColumn.setBlock:113 -> CallbackInfoReturnable
        8.3%  org.embeddedt.modernfix.structure.CachingStructureManager.readStructure:39 -> Object;
    30 MB/s   2.5%   radium                    334 samples
        40%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        17%  LevelChunkSection.setBlockStateNoLocking:521 [mixin redirect from me.jellysquid.mods.lithium.mixin.chunk.no_locking.ChunkSectionMixin] -> CallbackInfoReturnable
        16%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
    28 MB/s   2.3%   revelationfix             154 samples
        24%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> 2054943125
        18%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.contains:88 -> Long
        12%  com.mega.revelationfix.common.structures.FrostyardGenerationProtection$Context.collect:127 -> HashMap$EntryIterator
    27 MB/s   2.3%   linggango_tweaks          415 samples
        13%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.WaterSolver.levels:204 -> [J
        5.8%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.StreamPlanner.rasterize:1144 -> [J
        5.2%  com.misanthropy.linggango.linggango_tweaks.tweak.streams.StreamPlanner.rasterize:1146 -> [J
    27 MB/s   2.3%   embeddium                 915 samples
        14%  me.jellysquid.mods.sodium.client.render.chunk.compile.tasks.ChunkBuilderMeshingTask.execute:137 -> Iterators$9
        11%  me.jellysquid.mods.sodium.client.world.biome.BiomeColorCache.updateColorBuffers:100 -> 292185938
        7.9%  me.jellysquid.mods.sodium.client.render.chunk.RenderSectionManager.onSectionAdded:278 -> RenderSection

INTEGRATED SERVER (single player; this is world lag, not FPS)
  924 ticks, mspt mean 8.53 ms, p50 7.80 ms, p95 15 ms, worst 59 ms, 1 over 50 ms
    3.66 ms/tick  43%    minecraft (vanilla)       
    1.12 ms/tick  13%    collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.62 ms/tick  7.2%   forge (loader, events)    
    0.32 ms/tick  3.8%   despawnings               Mob.despawnings$redirectIsPersistenceRequired:21184 [mixin redirect from com.misanthropy.despawnings.mixin.MobMixin]
    0.29 ms/tick  3.4%   naturesaura               de.ellpeck.naturesaura.events.CommonEvents.onLevelTick:89
    0.29 ms/tick  3.4%   chunksending              ServerPlayer.chunksending$update:11916 [mixin handler from com.chunksending.mixin.ServerPlayerChunkSending]
    0.23 ms/tick  2.7%   radium                    ServerLevel.redirectBlockStateTick:4159 [mixin redirect from me.jellysquid.mods.lithium.mixin.alloc.chunk_random.ServerWorldMixin]
    0.19 ms/tick  2.2%   servercore                ServerChunkCache.servercore$updateCachedChunks:1641 [mixin modifyExpressionValue from me.wesley1808.servercore.mixin.optimizations.ticking.chunk.cache.ServerChunkCacheMixin]

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 8.35 of 16 cores, whole machine 75% busy
  cores  n    allocated   group                            runs
  6.47   25   32.0 GB     FastChunkGen worker ##           lithoform 53%, collections_of_optimizations 16%, fastchunkgen 12%
  0.46   1    6.2 GB      Render thread                    minecraft 16%, embeddium 16%, collections_of_optimizations 7.9%
  0.38   10   1.8 GB      Chunk Render Task Executor ##    embeddium 36%, minecraft 33%, oculus 8.8%
  0.22   1    823 MB      Linggango Streams                lithoform 61%, linggango_tweaks 35%
  0.21   1    2.2 GB      Server thread                    minecraft 40%, collections_of_optimizations 8.2%
  0.20   1    286 MB      BFR-OcclusionCuller              embeddium 74%, brute_force_culling_revived 22%
  0.11   6    330 MB      Lumenite light #                 lumenite 89%, minecraft 10%
  0.10   15   1.3 GB      ForkJoinPool.commonPool-worker-# lithoform 63%, integrated_api 10%, collections_of_optimizations 8.3%
  0.03   1    8.1 GB      minecraft_overworld - Light      minecraft 52%, lumenite 48%
  0.03   1    591 MB      JFR Event Stream #               no JFR samples (idle or native)
  0.02   1    526 KB      whatslaggin-threads              no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity render:
    49 ms/s    110/s    447 us   minecraft:player                            worst 33 ms at 2461, 68, 778
  entity tick:
    11 ms/s    20/s     546 us   minecraft:player                            worst 1.67 ms at 2461, 68, 778
    1.82 ms/s  35/s     52 us    hexerei:crow                                worst 4.29 ms at 2271, 68, 916
    1.38 ms/s  20/s     69 us    irons_spellbooks:archevoker                 worst 0.28 ms at 2724, 102, 1372
  block entity tick:
    1.21 ms/s  3,478/s  0 us     lootr:lootr_chest                           worst 0.10 ms at 2256, 3, 931
    0.98 ms/s  2,046/s  0 us     minecraft:mob_spawner                       worst 0.23 ms at 1813, 34, 1312
    0.90 ms/s  933/s    1 us     minecraft:campfire                          worst 0.13 ms at 2271, 3, 709
  server entity tick:
    8.92 ms/s  19/s     481 us   minecraft:player                            worst 4.66 ms at 2461, 68, 778

JVM AND I/O
  class loads over 1 ms: 0 (0 ms), on the render/server thread 0 (0 ms)
  log output: 0.2 lines/s
  exceptions thrown: 28.1/s, top: 3.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.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,958 render-thread, 1,428 server-thread samples (server only while ticking)
  JFR on (cpu, allocation, locks, file io, class loading, safepoints, exceptions): 17,034 CPU samples, 12,671 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
