WhatsLaggin report (manual)  30.9 s recorded, ended 2026-10-23 04:11:25
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, 134 entities loaded

VERDICT
  997 fps average (1.00 ms per frame), 1% low 226 fps, 0.1% low 129 fps.
  BALANCED: 0.62 ms CPU plus 0.38 ms waiting on the GPU per frame. Cuts on either side help.
  3 stutters over 20 ms (5.8 per minute), worst 30 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.38 ms of each 1.00 ms frame waits on the GPU
       Both CPU and GPU cuts help here. CPU work: 0.62 ms per frame.
       Biggest GPU levers: render distance (12), resolution (3440x1440), graphics mode (fancy)
  2. [cpu] embeddium costs 0.060 ms per frame on the render thread
       10% of render-thread CPU time, mostly in world, 45% in its own code (rest is vanilla/library code it called)
       74%  me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284   <- LevelRenderer.renderChunkLayer:40702
               hot: me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 (36%), executing GL32C.nglMultiDrawElementsBaseVertex (31%)
       6.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 (29%), executing VertexBuffer._drawWithShader:128 (21%)
       6.2%  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] (22%), executing GL20C.nglUniform1fv (17%)
       removing this cost entirely: about 997 -> 1061 fps
  3. [cpu] immediatelyfast costs 0.046 ms per frame on the render thread
       7.7% of render-thread CPU time, mostly in world, 28% in its own code (rest is vanilla/library code it called)
       50%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116   <- GuiGraphics.flush:125
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (76%), executing RenderStateShard.setupRenderState:37 (11%)
       17%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125   <- LevelRenderer.renderLevel:1283
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (40%), executing RenderStateShard.clearRenderState:41 (17%)
       16%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105   <- LevelRenderer.renderLevel:1338
               hot: net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 (80%), executing RenderStateShard.setupRenderState:37 (16%)
       removing this cost entirely: about 997 -> 1045 fps
  4. [cpu] collections_of_optimizations costs 0.035 ms per frame on the render thread
       5.8% of render-thread CPU time, mostly in world, 79% in its own code (rest is vanilla/library code it called)
       40%  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.3%  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:187 (35%), executing LevelChunkSection.getFluidState (35%)
       8.8%  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 (11%)
       removing this cost entirely: about 997 -> 1033 fps
  5. [cpu] linggango_tweaks costs 0.030 ms per frame on the render thread
       5.0% of render-thread CPU time, mostly in world, 33% in its own code (rest is vanilla/library code it called)
       23%  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 (24%)
       19%  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 (31%), executing VertexConsumer.color:47 (26%)
       12%  com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205   <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
               executing GL15C.glBindBuffer (18%)
       removing this cost entirely: about 997 -> 1028 fps
  6. [cpu] punchy costs 0.028 ms per frame on the render thread
       4.7% of render-thread CPU time, mostly in world, 71% in its own code (rest is vanilla/library code it called)
       79%  ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]   <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
               hot: punchy.util.ResourceLocationCompat.fromNamespaceAndPath:10 (4.4%), executing PoseStack.mulPose:50 (6.6%)
       17%  punchy.platform.ForgeClientPlatform.onClientTick:109   <- Minecraft.tick:1875
               hot: punchy.client.state.SpearStateMachine.isSpearChargeType:372 (10%), executing StringLatin1.toLowerCase (17%)
       removing this cost entirely: about 997 -> 1026 fps
  7. [cpu] gnetum costs 0.026 ms per frame on the render thread
       4.2% of render-thread CPU time, mostly in hud, 26% 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] (50%), executing ASMEventHandler.invoke:55 (20%)
       removing this cost entirely: about 997 -> 1023 fps
  8. [stutter] Stutter: GC pause (G1 Young Generation)
       2 frames over 20 ms, worst 30 ms, 104 ms of extra frame time per minute
       allocation 165 MB/s; 2 collections, worst 24 ms
       25 MB/s minecraft (15%): RenderSystem.applyModelViewMatrix:1307 -> Matrix4f
       15 MB/s collections_of_optimizations (9.2%): com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
       12 MB/s immediatelyfast (7.4%): net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> [J
       Fix: cut allocation at the sites above (reuse objects, avoid streams/boxing in per-tick code).

FRAMES
  30,754 frames   p50 0.88 ms   p95 1.34 ms   p99 3.74 ms   worst 30 ms
  per frame:  tasks 0.006 ms  client tick 0.058 ms  render 0.52 ms  present 0.38 ms  other 0.034 ms
  inside those:  swap 0.38 ms  world 0.40 ms  hud 0.091 ms  screen 0.003 ms
  client tick: 2.85 ms per tick, 20.2 ticks per second
  GPU busy per frame (timer queries): p50 0.66 ms   p95 0.88 ms   p99 1.16 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.023 ms)
    0.22 ms  32%  solid terrain   (p95 0.38 ms)
    0.018 ms  2.5%  cutout mipped terrain   (p95 0.020 ms)
    0.000 ms  <0.1%  cutout terrain   (p95 0.002 ms)
    0.018 ms  2.5%  entities   (p95 0.020 ms)
    0.000 ms  <0.1%  block entities   (p95 0.002 ms)
    0.002 ms  0.3%  translucent terrain   (p95 0.011 ms)
    0.000 ms  <0.1%  tripwire   (p95 0.002 ms)
    0.004 ms  0.5%  particles   (p95 0.005 ms)
    0.023 ms  3.2%  weather and clouds   (p95 0.023 ms)
    0.000 ms  <0.1%  end of level render   (p95 0.003 ms)
    0.19 ms  27%  hand and post effects   (p95 0.19 ms)
    0.12 ms  17%  hud   (p95 0.13 ms)
    0.089 ms  13%  screens and rest of frame   (p95 0.16 ms)

RENDER THREAD CPU BY MOD (sampled; excludes GPU wait, fps limiter and blocked time)
  6,171 samples: CPU work 60%, GPU wait 40%, limiter 0.0%, blocked on other threads <0.1%
  mods caused 77% of render-thread CPU work, vanilla/forge/driver the rest
  19% 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.079 ms  13%    87%   minecraft (vanilla)          world
  0.060 ms  10%    45%   embeddium                    world
  0.060 ms  10%    100%  forge (loader, events)       world
  0.046 ms  7.7%   28%   immediatelyfast              world
  0.035 ms  5.8%   79%   collections_of_optimizations world
  0.030 ms  5.0%   33%   linggango_tweaks             world
  0.028 ms  4.7%   71%   punchy                       world
  0.026 ms  4.2%   26%   gnetum                       hud
  0.018 ms  3.0%   34%   asyncparticles               world
  0.017 ms  2.9%   9.3%  oculus                       world
  0.015 ms  2.5%   13%   whatslaggin                  world
  0.010 ms  1.7%   18%   let_there_be_atmosphere      world
  0.008 ms  1.4%   27%   mahoutsukai                  world
  0.007 ms  1.2%   95%   xaerominimap                 render
  0.007 ms  1.1%   27%   xaerolib                     hud
  0.15 ms   124 more below 0.5% each

HOT PATHS (where each mod's render-thread time goes; SRG names translated; <- = called from)
  minecraft (vanilla)  0.079 ms/frame, 13%, hottest vanilla methods:
    18%   Entity.shouldRender:1562  <- me.decce.ixeris.RenderThreadStarter.run:39
    12%   EntityRenderDispatcher.getRenderer:530  <- me.decce.ixeris.RenderThreadStarter.run:39
    8.0%  LevelRenderer.renderLevel:1198  <- me.decce.ixeris.RenderThreadStarter.run:39
          executing Iterators$1.next:146 10%
  embeddium  0.060 ms/frame, 10%
    74%   me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer.drawChunkLayer:284  <- LevelRenderer.renderChunkLayer:40702
          hot me.jellysquid.mods.sodium.client.render.chunk.DefaultChunkRenderer.fillCommandBuffer:165 36%
          executing GL32C.nglMultiDrawElementsBaseVertex 31%
    6.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 29%
          executing VertexBuffer._drawWithShader:128 21%
    6.2%  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] 22%
          executing GL20C.nglUniform1fv 17%
  immediatelyfast  0.046 ms/frame, 7.7%
    50%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:116  <- GuiGraphics.flush:125
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 76%
          executing RenderStateShard.setupRenderState:37 11%
    17%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:125  <- LevelRenderer.renderLevel:1283
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 40%
          executing RenderStateShard.clearRenderState:41 17%
    16%   net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endLastBatch:105  <- LevelRenderer.renderLevel:1338
          hot net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:135 80%
          executing RenderStateShard.setupRenderState:37 16%
  collections_of_optimizations  0.035 ms/frame, 5.8%
    40%   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.3%  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:187 35%
          executing LevelChunkSection.getFluidState 35%
    8.8%  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 11%
  linggango_tweaks  0.030 ms/frame, 5.0%
    23%   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 24%
    19%   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 31%
          executing VertexConsumer.color:47 26%
    12%   com.misanthropy.linggango.linggango_tweaks.client.DynamicCrosshairHandler.onRenderCrosshair:205  <- ForgeGui.gnetum$postEvent:3130 [mixin merged from me.decce.gnetum.mixins.ForgeGuiMixin]
          executing GL15C.glBindBuffer 18%
  punchy  0.028 ms/frame, 4.7%
    79%   ItemInHandRenderer.punchy$renderFirstPersonModel:1160 [mixin handler from punchy.mixin.client.ItemInHandRendererMixin]  <- ItemInHandRenderer.m_109314_$mixinextras$wrapped$96
          hot punchy.util.ResourceLocationCompat.fromNamespaceAndPath:10 4.4%
          executing PoseStack.mulPose:50 6.6%
    17%   punchy.platform.ForgeClientPlatform.onClientTick:109  <- Minecraft.tick:1875
          hot punchy.client.state.SpearStateMachine.isSpearChargeType:372 10%
          executing StringLatin1.toLowerCase 17%
  gnetum  0.026 ms/frame, 4.2%
    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] 50%
          executing ASMEventHandler.invoke:55 20%
  asyncparticles  0.018 ms/frame, 3.0%
    43%   LevelRenderer.onRenderLevelHead:4601 [mixin handler from forge.fun.qu_an.minecraft.asyncparticles.client.mixin.core.particle.gpu_acceleration.MixinLevelRenderer]  <- LevelRenderer.renderLevel
          hot forge.fun.qu_an.minecraft.asyncparticles.client.core.backend.GlCommands$GL.glMultiDrawArrays:125 26%
          executing JNI.callPPV 26%
    23%   forge.fun.qu_an.minecraft.asyncparticles.client.core.particle.gpu_acceleration.opengl.GlTfParticleRenderer.render:410  <- ParticleEngine.render:3222
          hot forge.fun.qu_an.minecraft.asyncparticles.client.core.particle.gpu_acceleration.opengl.ParticleVertexBuffer.bind:42 8.0%
          executing GL20C.glUseProgram 20%
    20%   LevelChunkSection.onGetNoiseBiome:2059 [mixin wrapMethod from forge.fun.qu_an.minecraft.asyncparticles.client.mixin.off_thread_access.MixinLevelChunkSection]  <- LevelChunkSection.getNoiseBiome

STUTTERS (frames over 20 ms, grouped by what was happening during them)
  frames  worst     extra/min   cause
  2       30 ms     104 ms      GC pause (G1 Young Generation)

  worst frames:
  04:11:10.884  30 ms    client tick 28 ms     GC pause (G1 Young Generation)
                             24 ms of the frame was a stop-the-world collection
  04:10:57.035  26 ms    render 25 ms          GC pause (G1 Young Generation)
                             23 ms of the frame was a stop-the-world collection

MEMORY AND GC
  allocated 5.0 GB (165 MB/s, exact, all threads), max heap 10.0 GB
  2 GC pauses (0 old/full), 48 ms paused (0.2%), worst 24 ms, one every 15.5 s
  longest pauses:
    04:10:57.033  24 ms  G1 Young Generation, G1 Evacuation Pause
    04:11:10.882  24 ms  G1 Young Generation, G1 Evacuation Pause
  heap after GC 5.4 GB (54% of max, old garbage stays until the next marking cycle)
  by mod (JFR samples scaled to each thread's exact allocation; 98% of bytes covered):
    25 MB/s   15%    minecraft (vanilla)       573 samples
        3.0%  RenderSystem.applyModelViewMatrix:1307 -> Matrix4f
    15 MB/s   9.2%   collections_of_optimizations 1,153 samples
        33%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object;
        11%  com.misanthropy.collections_of_optimizations.core.NbtFastLoad.loadCompound:131 -> Object2ObjectOpenHashMap
        5.0%  com.misanthropy.collections_of_optimizations.core.FancyMenuGuiPoseStack.pushPose:26 -> Matrix4f
    12 MB/s   7.4%   immediatelyfast           112 samples
        24%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> [J
        19%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.lambda$addNewFallbackBuffer$1:188 -> Object;
        7.1%  net.raphimc.immediatelyfast.feature.core.BatchableBufferSource.endBatch:133 -> Collections$1
    12 MB/s   7.3%   linggango_tweaks          190 samples
        14%  snownee.jade.overlay.DisplayHelper.drawText:429 -> CallbackInfoReturnable
        12%  snownee.jade.overlay.DisplayHelper.drawText:429 -> CallbackInfo
        9.0%  snownee.jade.overlay.DisplayHelper.drawText:429 -> 1046786126
    10 MB/s   5.9%   lithoform                 109 samples
        20%  NoiseChunk.lithoform$sharedScan:3507 [mixin handler from com.misanthropy.lithoform.mixin.PreliminarySurfaceMixin] -> DensityFunctions$Spline$Point
        13%  com.misanthropy.lithoform.bowl.Special3D.fillArray:23 -> DensityFunctions$Spline$Point
        9.4%  NoiseChunk.lithoform$sharedScan:3507 [mixin handler from com.misanthropy.lithoform.mixin.PreliminarySurfaceMixin] -> DensityFunction$SinglePointContext
    8 MB/s    5.1%   punchy                    78 samples
        6.4%  punchy.client.render.PunchyArmRenderer.getLocalMatrix:1489 -> Matrix4f
    7 MB/s    4.5%   embeddium                 283 samples
        19%  me.jellysquid.mods.sodium.client.render.chunk.ChunkRenderMatrices.from:11 -> Matrix4f
        12%  BufferBuilder.onFormatChanged:5580 [mixin handler from me.jellysquid.mods.sodium.mixin.core.render.immediate.consumer.BufferBuilderMixin] -> SodiumBufferBuilder
        8.8%  me.jellysquid.mods.sodium.client.render.vertex.buffer.SodiumBufferBuilder.<init>:41 -> SodiumBufferBuilderPolygonView
    5 MB/s    3.3%   gnetum                    50 samples
        36%  me.decce.gnetum.PassManager.cachingDisabled -> 372501797
        34%  me.decce.gnetum.PassManager.cachingDisabled -> 1293409888
        6.0%  me.decce.gnetum.FramebufferManager.blit:95 -> Matrix4f
    3 MB/s    1.9%   radium                    41 samples
        48%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object;
        10%  CompoundTag.useFasterCollection:1129 [mixin modify from me.jellysquid.mods.lithium.mixin.alloc.nbt.NbtCompoundMixin] -> Object2ObjectOpenHashMap
        6.9%  me.jellysquid.mods.lithium.common.entity.movement.ChunkAwareBlockCollisionSweeper.computeNext:219 -> CallbackInfoReturnable
    3 MB/s    1.6%   oculus                    25 samples
        12%  LevelRenderer.iris$renderTranslucentAfterDeferred:18140 [mixin redirect from net.irisshaders.iris.mixin.fantastic.MixinLevelRenderer] -> Matrix4f
        12%  net.irisshaders.iris.layer.OuterWrappedRenderType.run -> Matrix4f
        8.0%  LevelRenderer.iris$renderOpaqueParticles:18128 [mixin handler from net.irisshaders.iris.mixin.fantastic.MixinLevelRenderer] -> Matrix4f

INTEGRATED SERVER (single player; this is world lag, not FPS)
  623 ticks, mspt mean 6.80 ms, p50 6.42 ms, p95 9.70 ms, worst 23 ms, 0 over 50 ms
    1.07 ms/tick  16%    minecraft (vanilla)       
    0.59 ms/tick  8.7%   forge (loader, events)    
    0.32 ms/tick  4.7%   collections_of_optimizations ServerLevel.coo$growthTick:10142 [mixin modifyExpressionValue from com.misanthropy.collections_of_optimizations.mixin.immersiveweathering.MixinServerLevelGrowthTick]
    0.31 ms/tick  4.6%   ending_library            Level.guardEntityTick:14052 [mixin handler from com.mega.endinglib.mixin.time.time.LevelMixin]
    0.30 ms/tick  4.3%   radium                    EntitySectionStorage.forEachInBox:555 [mixin handler from me.jellysquid.mods.lithium.mixin.entity.fast_retrieval.SectionedEntityCacheMixin]
    0.28 ms/tick  4.1%   terramity                 net.mcreator.terramity.entity.GreenFairyEntity.baseTick:180
    0.22 ms/tick  3.3%   simplyswords              Mob.simplyswords$tryUseHeldWeaponAbility:17667 [mixin handler from net.sweenus.simplyswords.mixin.MobEntityMixin]
    0.17 ms/tick  2.5%   linggango_tweaks          com.misanthropy.linggango.linggango_tweaks.tweak.summonity.SummonBridge.onServantTick:146

THREADS (exact CPU per thread group; 'runs' = what JFR saw executing on it)
  the game used 1.31 of 16 cores, whole machine 25% busy
  cores  n    allocated   group                            runs
  0.66   1    2.8 GB      Render thread                    collections_of_optimizations 11%, minecraft 11%, punchy 9.2%
  0.29   10   44 MB       Flywheel Task Executor ##        collections_of_optimizations 63%, flywheel 37%
  0.14   1    775 MB      Server thread                    minecraft 35%, collections_of_optimizations 5.6%
  0.08   15   1.0 GB      ForkJoinPool.commonPool-worker-# lithoform 71%, mowziesmobs 6.1%, minecraft 5.4%
  0.03   1    117 MB      Linggango Streams                lithoform 61%, linggango_tweaks 38%
  0.02   1    102 MB      JFR Event Stream #               no JFR samples (idle or native)

ENTITIES, BLOCK ENTITIES, SCREENS (exact timings; per second of recording)
  entity tick:
    12 ms/s    20/s     576 us   minecraft:player                            worst 1.51 ms at 2527, 68, 778
    1.83 ms/s  76/s     24 us    terramity:green_fairy                       worst 0.16 ms at 2524, 72, 765
    1.69 ms/s  40/s     42 us    crittersandcompanions:ferret                worst 0.20 ms at 2517, 69, 733
  server entity tick:
    11 ms/s    178/s    59 us    minecraft:skeleton                          worst 0.73 ms at 2518, -23, 741
    10 ms/s    237/s    43 us    terramity:green_fairy                       worst 0.75 ms at 2531, 71, 705
    6.74 ms/s  158/s    43 us    minecraft:zombie                            worst 0.59 ms at 2516, 34, 836
    6.09 ms/s  294/s    21 us    minecraft:creeper                           worst 0.61 ms at 2557, -36, 846
    3.03 ms/s  37/s     82 us    opposing_force:hanging_spider               worst 0.32 ms at 2494, -41, 825
    2.47 ms/s  72/s     34 us    minecraft:salmon                            worst 0.33 ms at 2525, 61, 818
  screen:
    3.09 ms/s  34/s     90 us    net.minecraft.client.gui.screens.ChatScreen worst 0.32 ms

JVM AND I/O
  class loads over 1 ms: 2 (2.86 ms), on the render/server thread 1 (1.14 ms)
  non-GC safepoints: 13 ms total (last: ThreadDump)
  log output: 0.3 lines/s
  exceptions thrown: 7.2/s, top: 2.0/s  NoDiscordClientException from optimized_rpc at dev.firstdark.rpc.exceptions.NoDiscordClientException.<init>:12

MOD VERSIONS (mods named in the findings)
  embeddium 0.3.32-beta.113-dirty+mc1.20.1;  immediatelyfast 1.5.5+1.20.4;  collections_of_optimizations 5.6;  
  linggango_tweaks 7.39;  punchy 2.8c;  gnetum 2.5.1+1.20.1-forge;  ;  

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