Spark Resource Analyzer›Profile analysis

Paper 1.21.11 · 2026-11-08 18:00 UTC

CPU profile (sampler) · CPU · async-profiler 4.1 · spark · started 2026-11-08 18:00 UTC · 75 plugin/mod

Show usage as
51

Health 51/100 (Poor) · TPS 19.6 · MSPT 36.8 ms · 2 lag spikes in 2 windows

Main cause: Synchronous chunk loading on the main thread (1.43%)

First step: No plugin appears on the stack of this category: the work comes from the server itself (see “Typical stack” above), so the fix is in the configuration or the world, not in a plugin

TPS (1m)
19.6 / 20
Average MSPT
36.8 ms
Max MSPT
364 ms
Main thread work
37.0 ms/tick
Serious problems
3
Lag spikes
2 / 2 windows
Players
32
Profile duration
2m 01s

DiagnosisDownload the 5 settings to change (.txt)

INFOThe server is laggingOverview
  • TPS last minute: 19.6
  • Average MSPT last minute: 36.8 ms (budget 50 ms)
  • MSPT 95th percentile 58.3 ms, max 364 ms
  • Average main thread work measured by the profile: 37.0 ms/tick over 2372 ticks
  • Main thread busy for 78.7% of the sampled time

The sections below show where the main thread spends its time. Each tick must stay under 50 ms: anything over budget lowers the TPS.

CRITICALSynchronous chunk loading on the main threadMain thread1.43%→ No plugin appears on the stack of this category: the work comes from the server itself (see “Typical stack” above), so the fix is in the configuration or the world, not in a plugin
  • Chunk loading on the main thread: 1.43% of main thread active time
  • Heaviest methods: ConcurrentLong2ReferenceChainedHashTable.getNode (0.46%), VarHandleReferences$FieldInstanceReadOnly.getVolatile (0.37%)
  • Typical stack: BiomeManager.getBiome → Level.getNoiseBiome → Level.getChunk → ServerChunkCache.getChunk → ServerChunkCache.getChunkFallback → ChunkHolderManager.getChunkHolder → ConcurrentLong2ReferenceChainedHashTable.get → ConcurrentLong2ReferenceChainedHashTable$TableEntry.getValueVolatile → VarHandleGuards.guard_L_L → VarHandleReferences$FieldInstanceReadOnly.getVolatile

The main thread stops and waits for a chunk to load from disk or be generated. It is one of the main causes of lag spikes: often caused by plugins calling getChunkAt/getBlockAt on unloaded chunks, teleports or players flying fast.

What to do

  1. No plugin appears on the stack of this category: the work comes from the server itself (see “Typical stack” above), so the fix is in the configuration or the world, not in a plugin
  2. Pregenerate the world with Chunky and set a world border, so chunks don't have to be generated on the fly
  3. Set chunks.prevent-moving-into-unloaded-chunks: true in paper-world-defaults.yml (fast elytra flyers are stopped at the edge of unloaded chunks)
  4. Use SSD/NVMe drives: slow disk loading makes every wait longer
HIGH2 of 2 windows with lag spikesLag spikes→ Compare the growing categories with the dedicated sections below: they are the most likely cause of the spike
  • window #2 (18:01 UTC): slowest tick 364 ms — growth: Bukkit events +0.63 ms/tick, Player ticking +0.13 ms/tick, Scheduled tasks (sync) +0.12 ms/tick; plugins: SKEnderchest +0.16, SKSell +0.15
  • window #1 (18:00 UTC): slowest tick 265 ms — growth: Collisions / entity lookups +0.24 ms/tick, Entity ticking +0.22 ms/tick, Chunk management (tickets, load/unload) +0.18 ms/tick; plugins: ItemsAdder +0.14, Essentials +0.02

Each window is about one minute of profile. Comparing it with normal windows shows what grew during the spike.

What to do

  1. Compare the growing categories with the dedicated sections below: they are the most likely cause of the spike
  2. To better isolate the spikes record a profile with /spark profiler start --only-ticks-over 100 --timeout 600
HIGH2 chunks with too many entitiesWorld→ Visit the listed chunks and reduce the entities (farms, animal pens, dropped items, armor stands)
  • Total entities: 16832
  • By type: item 15423, armor_stand 543, chicken 113, sheep 97, pig 96, cow 59, creeper 55, enderman 47
  • Crowded chunk in world at x=-13272 z=14440 (blocks): 13450 entities — item 13450 → /execute in minecraft:overworld run tp -13272 100 14440
  • Crowded chunk in world at x=-13288 z=14440 (blocks): 1878 entities — item 1877, hopper_minecart 1 → /execute in minecraft:overworld run tp -13288 100 14440
  • Non-builtin datapacks: bukkit, minecart_improvements, paper, redstone_experiments, trade_rebalance, Default

Counts taken by spark at the time of the profile. A single chunk with hundreds of entities can cause lag on its own.

What to do

  1. Visit the listed chunks and reduce the entities (farms, animal pens, dropped items, armor stands)
  2. Set chunks.entity-per-chunk-save-limit in paper-world-defaults.yml (e.g. experience_orb: 16, arrow: 16, snowball: 8) to prevent build-up
MEDIUMExpensive entity trackingMain thread14.3%→ Lower entity-tracking-range in spigot.yml (e.g. players 48, animals 32, monsters 32, misc 16; range players 48-64): entities and players become visible only within this distance, which matters for bow PvP
  • Entity tracking (packet sending): 14.3% of main thread active time
  • Heaviest methods: ChunkMap$TrackedEntity.moonrise$clearPlayers (3.92%), ChunkMap$TrackedEntity.moonrise$tick (3.52%), Entity.moonrise$getChunkData (3.43%), ChunkMap.newTrackerTick (0.55%)
  • Typical stack: ServerLevel.tick → ServerChunkCache.tick → ChunkMap.tick → ChunkMap.newTrackerTick → ChunkMap$TrackedEntity.moonrise$tick → ChunkMap$TrackedEntity.moonrise$clearPlayers

Responsible: code not mapped to a plugin: native (native.vtable stub)

For every entity the server computes which players can see it and sends movement packets. Many entities and many nearby players multiply the cost.

What to do

  1. Lower entity-tracking-range in spigot.yml (e.g. players 48, animals 32, monsters 32, misc 16; range players 48-64): entities and players become visible only within this distance, which matters for bow PvP
  2. Lower entity-broadcast-range-percentage in server.properties (75, range 50-100): entities appear later as you approach
  3. Reduce the number of entities in crowded areas
  4. Configuration to review:
    • spigot.yml › world-settings.default.entity-tracking-range.players = 96 → recommended 48 (range 48-64; players see each other only within this distance, matters for bow PvP)
    • spigot.yml › world-settings.default.entity-tracking-range.animals = 48 → recommended 32
    • spigot.yml › world-settings.default.entity-tracking-range.monsters = 48 → recommended 32
    • spigot.yml › world-settings.default.entity-tracking-range.misc = 32 → recommended 16
MEDIUMExpensive collisions and entity lookupsMain thread10.8%→ Reduce the max collisions per tick (collisions.max-entity-collisions in paper-world-defaults.yml, 2, range 2-4): mobs push each other less, farms relying on mob pushing slow down
  • Collisions / entity lookups: 10.8% of main thread active time
  • Heaviest methods: AABB.intersects (2.30%), ChunkEntitySlices$EntityCollectionBySection.getEntities (1.10%), ChunkEntitySlices.getEntities (0.63%), CollisionUtil.getCollisionsForBlocksOrWorldBorder (0.47%)
  • Typical stack: 0x000000009ba9fbe8.tick → PistonMovingBlockEntity.tick → PistonMovingBlockEntity.moveCollidedEntities → EntityGetter.getEntities → Level.getEntities → EntityLookup.getEntities → ChunkEntitySlices.getEntities → ChunkEntitySlices$EntityCollectionBySection.getEntities → AABB.intersects → AABB.intersects

Responsible: code not mapped to a plugin: native (native.vtable stub)

When many entities share the same block, each one checks collisions against all the others: the cost grows quadratically.

What to do

  1. Reduce the max collisions per tick (collisions.max-entity-collisions in paper-world-defaults.yml, 2, range 2-4): mobs push each other less, farms relying on mob pushing slow down
  2. Lower the maxEntityCramming gamerule (e.g. /gamerule maxEntityCramming 16, vanilla 24). Warning: mobs beyond the limit in one block die (crowded pens, cramming farms)
  3. Look for mob farms or pens with piled-up entities: see the chunks with the most entities in the World section
MEDIUMExpensive event listenersMain thread8.47%→ Look at the “Events” table to see which event and which plugin cost the most
  • Bukkit events: 8.47% of main thread active time
  • Heaviest methods: native.itable stub (1.03%), String.equals (0.70%)
  • Typical stack: ServerboundContainerClickPacket.handle → ServerboundContainerClickPacket.handle → ServerGamePacketListenerImpl.handleContainerClick → SimplePluginManager.callEvent → PaperPluginManagerImpl.callEvent → PaperEventManager.callEvent → RegisteredListener.callEvent → TimedEventExecutor.execute

Responsible: ItemsAdder → mq.t (1.37% of the main thread in this category), WorldGuard → ChunkHashTable.get (1.00% of the main thread in this category)

Bukkit events are called on the main thread. Frequent events (movement, block physics, item transfers) with heavy listeners slow down every tick.

What to do

  1. Look at the “Events” table to see which event and which plugin cost the most
  2. In listeners return early when the event is irrelevant (check the cheapest conditions first)
  3. Avoid database access, files or heavy calculations inside listeners
MEDIUMJVM, memory and CPU to reviewJVM / Machine→ Set -Xms equal to -Xmx: it prevents the JVM from resizing the heap during gameplay
  • Java 25.0.5 (Temurin-25.0.5+8)
  • Max heap (-Xmx): 12.0 GB
  • CPU: 4 threads (Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz), process 70.1%, system 70.1%
  • G1 Concurrent GC: 2 collections, avg 20.5 ms, every 28811 s
  • G1 Young Generation: 9 collections, avg 139 ms, every 6402 s
  • Heap in use: 5.7 GB of 12.0 GB (47.1%)

JVM settings and machine state at the time of the profile.

What to do

  1. Set -Xms equal to -Xmx: it prevents the JVM from resizing the heap during gameplay
  2. Use Aikar's flags for G1 (docs.papermc.io → Aikar's flags; with a heap above 12 GB use the large-heap variant: G1NewSizePercent=40, G1MaxNewSizePercent=50, G1HeapRegionSize=16M, G1ReservePercent=15, InitiatingHeapOccupancyPercent=20). Alternatively ZGC (-XX:+UseZGC) has near-zero pauses but uses more CPU and RAM: only worth it with Java 21+, heap ≥ 12 GB and spare cores
  3. Long “G1 Young Generation” pauses (139 ms on average): apply Aikar's flags or switch to ZGC
LOWAlways busy thread: GC Thread (x4) (garbage collector)Secondary threads407%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “GC Thread (x4)” busy for 407% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 99.0%, so.G1ParScanThreadState::trim_queue_to_threshold 0.64%, so.void OopOopIterateBackwardsDispatch<G1ScanEvacuatedObjClosure>::Table::oop_oop_iterate_backwards<InstanceKlass, narrowOop> 0.17%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: G1 Refine (x2) (garbage collector)Secondary threads203%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “G1 Refine (x2)” busy for 203% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%, so.G1CodeRootSet::length 0.01%, so.void G1ConcurrentRefineOopClosure::do_oop_work<narrowOop> 0.01%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: DestroyJavaVM (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “DestroyJavaVM” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: Notification Thread (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “Notification Thread” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: Signal Dispatcher (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “Signal Dispatcher” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: VoiceChatServerThread (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “VoiceChatServerThread” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
  • Code from: voicechat 2.6.24

Responsible: voicechat 2.6.24

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: java (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “java” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: G1 Main Marker (garbage collector)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “G1 Main Marker” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: VM Periodic Tas (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “VM Periodic Tas” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%, 6.pthread_mutex_unlock 0.01%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: VM Thread (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “VM Thread” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: VirtualThread-unblocker (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “VirtualThread-unblocker” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%, so.JavaThread::threadObj 0.00%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: C1 CompilerThre (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “C1 CompilerThre” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%, so.GrowableArrayResourceAllocator::allocate 0.00%, so.LIR_OpVisitState::append 0.00%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: G1 Conc (x1) (garbage collector)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “G1 Conc (x1)” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 95.3%, so.void OopOopIterateDispatch<G1CMOopClosure>::Table::oop_oop_iterate<InstanceKlass, narrowOop> 1.63%, so.void OopOopIterateDispatch<G1CMOopClosure>::Table::oop_oop_iterate<ObjArrayKlass, narrowOop> 0.46%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: Service Thread (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “Service Thread” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: Monitor Deflati (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “Monitor Deflati” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: Async-profiler Timer (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “Async-profiler Timer” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: G1 Service (garbage collector)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “G1 Service” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: C2 CompilerThre (secondary thread)Secondary threads102%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “C2 CompilerThre” busy for 102% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 98.9%, 6.syscall 0.11%, so.IndexSetIterator::advance_and_next 0.03%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: SKEnderchest-Save (secondary thread)Secondary threads101%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “SKEnderchest-Save” busy for 101% of the profile duration
  • Main work: native.itable stub 16.7%, Pattern$BmpCharProperty.match 14.9%, Pattern$Branch.match 9.18%
  • Code from: SKEnderchest

Responsible: SKEnderchest

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: FileSystemWatchService (secondary thread)Secondary threads100%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “FileSystemWatchService” busy for 100% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 99.7%, 6.syscall 0.16%, so.Dictionary::find_class 0.01%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWAlways busy thread: bStats-Metrics (secondary thread)Secondary threads93.3%→ Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  • Thread “bStats-Metrics” busy for 93.3% of the profile duration
  • Main work: native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%, ML_KEM.generateK_PkeKeyPair 0.00%

A secondary thread that is always working doesn't block the tick directly, but it uses a core: if CPU is limited it steals time from the main thread.

What to do

  1. Check that the work is necessary (looping async tasks, continuous chunk generation, network)
  2. If the CPU is saturated, reduce this load or add more cores
LOWNatural mob spawning is expensiveMain thread6.39%→ Increase ticks-per.monster-spawns in bukkit.yml (10, range 4-10) and reduce spawn-limits (e.g. monsters 50): fewer spawn attempts and fewer mobs, so mob farms produce less
  • Natural mob spawning: 6.39% of main thread active time
  • Heaviest methods: NaturalSpawner.createState (2.46%), Entity.getType (1.25%), PalettedContainer.get (0.46%)
  • Typical stack: ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → NaturalSpawner.createState

The server looks for valid spawn positions in all chunks near players, every tick, for every mob category.

What to do

  1. Increase ticks-per.monster-spawns in bukkit.yml (10, range 4-10) and reduce spawn-limits (e.g. monsters 50): fewer spawn attempts and fewer mobs, so mob farms produce less
  2. Set entities.spawning.per-player-mob-spawns: true in paper-world-defaults.yml
  3. Lower mob-spawn-range in spigot.yml (6 chunks, not above simulation-distance) and the simulation-distance: mobs spawn closer to players
  4. Configuration to review:
    • spigot.yml › world-settings.default.mob-spawn-range = 8 → recommended 6 (in chunks, not above simulation-distance; mobs spawn closer to players)
LOWRecommended command for the next profileProfile→ The lag comes in spikes (2 of 2 windows) while the average stays within budget: in a normal profile slow ticks get diluted. Record only ticks above 150 ms

The recorded profile is not enough to see the cause clearly. These commands record a profile better suited to what was measured.

What to do

  1. The lag comes in spikes (2 of 2 windows) while the average stays within budget: in a normal profile slow ticks get diluted. Record only ticks above 150 ms
    • /spark profiler start --only-ticks-over 150 --timeout 600

Informational notes (1)

INFOServer configurationConfiguration
  • Files read from the profile: bukkit.yml, paper/, server.properties, spigot.yml
  • No problematic settings among those checked

Values read from the configuration included in the profile. The recommendations are a safe starting point; values related to heavy categories are also listed in the main thread sections.

Where the main thread time goes

Thread “Server thread”: active 1.5 min of 1.9 min sampled (78.7%). Percentages are computed on active time, excluding the wait between ticks. Each row attributes time to the most specific category in the stack.

Category%Plugins involvedMain methods
Entity tracking (packet sending)14.3%ChunkMap$TrackedEntity.moonrise$clearPlayers 3.92%
ChunkMap$TrackedEntity.moonrise$tick 3.52%
Entity.moonrise$getChunkData 3.43%
Collisions / entity lookups10.8%AABB.intersects 2.30%
ChunkEntitySlices$EntityCollectionBySection.getEntities 1.10%
ChunkEntitySlices.getEntities 0.63%
Entity ticking10.0%native.vtable stub 0.71%
Entity.setTicksFrozen 0.40%
native.itable stub 0.34%
Chunk ticking (random ticks, weather)9.39%ChunkMap.isChunkNearPlayer 3.11%
ServerLevel.optimiseRandomTick 2.77%
SimpleThreadUnsafeRandom.nextInt 0.79%
Bukkit events8.47%ItemsAdder 1.37%
WorldGuard 1.00%
SKSell 0.31%
native.itable stub 1.03%
String.equals 0.70%
6.pthread_cond_signal 0.28%
Natural mob spawning6.39%NaturalSpawner.createState 2.46%
Entity.getType 1.25%
PalettedContainer.get 0.46%
Chunk management (tickets, load/unload)5.78%VarHandleReferences$FieldInstanceReadOnly.getVolatile 0.81%
6.pthread_cond_signal 0.59%
ConcurrentLong2ReferenceChainedHashTable.getNode 0.45%
Network / incoming packets5.42%ProtocolLib 3.50%so.6 2.86%
MinecraftVersion.atOrAbove 0.18%
native.itable stub 0.12%
Mob AI (goals/brain)4.80%native.vtable stub 0.40%
ObjectLinkedOpenHashSet$SetIterator.next 0.21%
LivingEntity.getItemBySlot 0.21%
Player ticking4.50%packetevents 0.24%native.itable stub 0.27%
native.vtable stub 0.26%
SimpleCriterionTrigger.trigger 0.24%
Scheduled tasks (sync)3.33%SKSell 0.89%
packetevents 0.55%
SKEnderchest 0.26%
so.6 0.53%
6.pthread_cond_signal 0.37%
native.itable stub 0.25%
Entity movement2.62%native.vtable stub 0.21%
Entity.move 0.14%
LevelChunk.getBlockStateFinal 0.11%
Other2.16%6.syscall 1.14%
so.6 0.30%
so.G1SATBMarkQueueSet::filter 0.04%
Block entities (tiles)1.58%Level.tickBlockEntities 0.24%
LevelChunk$BoundTickingBlockEntity.isRemoved 0.16%
PalettedContainer.get 0.15%
Chunk loading on the main thread1.43%ConcurrentLong2ReferenceChainedHashTable.getNode 0.46%
VarHandleReferences$FieldInstanceReadOnly.getVolatile 0.37%
ServerChunkCache.getChunkNow 0.14%
Lighting engine1.14%6.pthread_cond_signal 0.65%
SWMRNibbleArray.getVisible 0.06%
ServerLevel.moonrise$getAnyChunkIfLoaded 0.05%
Redstone / block updates1.11%WireNode.<init> 0.11%
PalettedContainer.get 0.05%
native.itable stub 0.04%
Fluids0.77%FlowingFluid.getSlopeDistance 0.07%
BlockBehaviour$BlockStateBase.getBlock 0.05%
ReferenceOpenHashSet.contains 0.04%
Text formatting / placeholders0.77%DisplayTags 0.48%
Skript 0.16%
native.itable stub 0.06%
HashMap.getNode 0.04%
String.equals 0.03%
Pathfinding0.76%WalkNodeEvaluator.checkNeighbourBlocks 0.05%
PathTypeCache.get 0.04%
Long2ObjectOpenHashMap.find 0.03%
Chunk generation0.46%BiomeManager.getFiddledDistance 0.07%
LinearCongruentialGenerator.next 0.06%
SimpleBitStorage.get 0.05%
Scoreboard / teams0.42%String.equals 0.24%
Object2ObjectOpenHashMap.get 0.11%
CraftScoreboardManager.forAllObjectives 0.01%
Spawners0.41%native.itable stub 0.05%
HashMap.getNode 0.05%
String.equals 0.02%
Hoppers0.36%ItemStack.getMaxStackSize 0.06%
NonNullList.get 0.03%
CompoundContainer.getItem 0.03%
Commands0.33%SimpleCriterionTrigger.trigger 0.05%
native.itable stub 0.03%
6.pthread_cond_signal 0.02%
Synchronous file I/O0.31%SKEnderchest 0.24%so.6 0.27%
6.rename 0.01%
StringLatin1.charAt 0.00%
World tick (other)0.31%ActivationRange.activateEntities 0.05%
ArrayList$Itr.next 0.03%
ActivationRange.activateEntity 0.02%
Dropped items and XP0.29%SimpleCriterionTrigger.trigger 0.06%
HolderSet$Direct.contains 0.02%
InsideBlockEffectApplier$StepBasedCollector.flushStep 0.02%
Scheduled block/fluid ticks0.29%LeavesBlock.updateDistance 0.03%
PriorityQueue.siftUp 0.01%
Long2LongOpenHashMap$MapIterator.nextEntry 0.01%
Chunk saving / autosave0.25%SerializableChunkData.copyOf 0.06%
native.itable stub 0.03%
native.jlong_disjoint_arraycopy 0.02%
Main thread task queue0.21%ConcurrentLinkedQueue.peek 0.04%
BlockableEventLoop.pollTask 0.03%
ConcurrentLinkedQueue.poll 0.03%
Villagers / POI0.21%PalettedContainer.maybeHas 0.04%
HashMap.getNode 0.04%
PoiManager.lambda$exists$13 0.04%
Synchronous database0.20%nightcore 0.19%0-dc0b171f-d79c-4721-bb93-e4617c63dabd-libsqlitejdbc.so 0.12%
so.6 0.01%
6.__fxstat 0.01%
Explosions0.15%ServerExplosion.calculateExplodedPositions 0.04%
Mth.floor 0.02%
BlockPos.asLong 0.01%
Server tick (other)0.11%MinecraftServer.tickChildren 0.04%
GameProfile.name 0.01%
HashMap$HashIterator.nextNode 0.01%

Time outside plugins: Minecraft 53.6% · Server (Paper/Spigot/loader) 9.57% · JDK 8.21% · Unknown 7.83% · Libraries 4.25%

Plugins and mods

“On stack” = all the work done while the plugin's code was active (including Minecraft calls made by the plugin). “Own” = time attributed to the plugin as the innermost caller.

PluginOn stackOwnEntry pointsWarnings
ProtocolLib
show in tree →
3.59%3.54%NettyEventLoopProxy.execute Packet handling 3.53%
NettyChannelProxy.isOpen Packet handling 0.02%
0x0000000099d94f60.run Scheduled task 0.02%
AbstractStructure.getIntegers Packet handling 0.01%
ItemsAdder
show in tree →
1.63%1.55%mk.a Event ChunkLoadEvent (from LevelChunk.loadCallback) 0.92%
mc.d Event BlockPhysicsEvent (from NeighborUpdater.executeUpdate) 0.10%
lj.a Event GenericGameEvent (from Event.callEvent) 0.07%
aa.a Event PlayerResourcePackStatusEvent (from ServerGamePacketListenerImpl.handleResourcePackResponse) 0.07%
SKSell
show in tree →
1.36%1.23%0x000000009ae2a558.run Scheduled task 0.88%
0x000000009b83c440.run Scheduled task 0.11%
WorthLoreService.onInventoryClickEarly Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.11%
WorthLoreService.onInventoryClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
WorldGuard
show in tree →
1.18%1.05%PlayerMoveListener.onPlayerMove Event PlayerMoveEvent (from ServerGamePacketListenerImpl.handleMovePlayer) 0.27%
BukkitRegionContainer$1.onChunkLoad Event ChunkLoadEvent (from LevelChunk.loadCallback) 0.26%
WorldGuardBlockListener.onBlockPhysics Event BlockPhysicsEvent (from NeighborUpdater.executeUpdate) 0.07%
BlacklistListener.onInventoryClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.06%
packetevents 2.13.0
show in tree →
0.95%0.79%ChannelHelper.runInEventLoop Scheduled task 0.55%
PlayerManager.sendPacket Scheduled task 0.23%
0x000000009b85d3f0.run Scheduled task 0.16%
PlayerManager.sendPacket Event event (from Event.callEvent) 0.00%
DisplayTags
show in tree →
0.92%0.56%0x000000009adaa000.run Scheduled task 0.89%
PlayerListener.onPlayerLoad Event PlayerClientLoadedWorldEvent (from Event.callEvent) 0.01%
PlayerListener.onPlayerTeleport Event PlayerTeleportEvent (from ServerPlayer.teleport) 0.01%
PlayerListener.onPlayerWorldChange Event PlayerChangedWorldEvent (from ServerPlayer.teleport) 0.00%
Vulcan
show in tree →
0.90%0.35%0x0000000099a745e8.accept Scheduled task 0.57%
Vulcan_Om.Vulcan_c Event PlayerMoveEvent (from ServerGamePacketListenerImpl.handleMovePlayer) 0.18%
Vulcan_Om.Vulcan_I Event PlayerInteractEvent (from CraftEventFactory.callPlayerInteractEvent) 0.07%
Vulcan_Om.Vulcan_K Event BlockPlaceEvent (from Event.callEvent) 0.05%
SKEnderchest
show in tree →
0.89%0.88%0x000000009a6865a0.run Scheduled task 0.33%
0x000000009a684d90.run Scheduled task 0.17%
ChestListener.onInteract Event PlayerInteractEvent (from CraftEventFactory.callPlayerInteractEvent) 0.15%
ChestListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.10%
Synchronous file I/O 0.24%
MythicLib
show in tree →
0.63%0.36%StatMap.bufferUpdates Scheduled task 0.25%
PlayerClickEventListener.onLeftClick Event PlayerAnimationEvent (from ServerGamePacketListenerImpl.handleAnimate) 0.14%
0x000000009a054d00.run Scheduled task 0.12%
AttackEventListener.registerEvents Event EntityDamageEvent (from Event.callEvent) 0.05%
Skript
show in tree →
0.60%0.55%0x000000009b5fc000.run Scheduled task 0.29%
0x000000009b5f1cf8.execute Event event (from ServerGamePacketListenerImpl.handleContainerClick) 0.09%
0x000000009b5f1cf8.execute Event event (from CraftEventFactory.callPlayerInteractEvent) 0.08%
0x000000009b5f1cf8.execute Event event (from Event.callEvent) 0.05%
nightcore 2.16.4
show in tree →
0.48%0.48%AbstractUserManager.getOrFetch Scheduled task 0.21%
0x0000000099e9f4a8.run Scheduled task 0.16%
PluginExpansion.onPlaceholderRequest Scheduled task 0.07%
NightMessage.stripTags Scheduled task 0.04%
Synchronous database 0.19%
MMOItems
show in tree →
0.48%0.34%0x0000000099a47880.run Scheduled task 0.26%
0x000000009a422880.run Scheduled task 0.17%
ItemUse.rightClickEffects Event PlayerClickEvent (from ServerGamePacketListenerImpl.handleAnimate) 0.09%
DurabilityListener.itemDamage Event PlayerItemDamageEvent (from ItemStack.hurtAndBreak) 0.04%
Essentials
show in tree →
0.37%0.34%EssentialsPlayerListener.onPlayerMove Event PlayerMoveEvent (from ServerGamePacketListenerImpl.handleMovePlayer) 0.12%
LuckPermsHandler$CombinedCalculator.calculate Event event (from ServerGamePacketListenerImpl.handleMovePlayer) 0.05%
EssentialsPlayerListener$LoginListener1_21.onPlayerListFull Event PlayerServerFullCheckEvent (from Event.callEvent) 0.04%
LuckPermsHandler$CombinedCalculator.calculate Scheduled task 0.04%
zMenu
show in tree →
0.36%0.36%AdapterListener.onMove Event PlayerMoveEvent (from ServerGamePacketListenerImpl.handleMovePlayer) 0.10%
0x000000009b786888.accept Scheduled task 0.07%
AdapterListener.onInventoryClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
AdapterListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.04%
SKStats
show in tree →
0.35%0.14%0x000000009adbf390.run Scheduled task 0.24%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.01%
CoreProtect
show in tree →
0.31%0.31%InventoryChangeListener.onInventoryClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.06%
InventoryChangeListener.onInventoryMoveItemEvent Event InventoryMoveItemEvent (from Event.callEvent) 0.06%
BlockBreakListener.onBlockBreak Event BlockBreakEvent (from ServerPlayerGameMode.destroyBlock) 0.05%
BlockFromToListener.onBlockFromTo Event BlockFromToEvent (from FlowingFluid.spreadToSides) 0.04%
ExcellentEconomy
show in tree →
0.29%0.00%EconomyCurrency.getBalance Scheduled task 0.21%
0x0000000099ed7ba8.apply Scheduled task 0.07%
0x000000009adc1b18.get Scheduled task 0.03%
0x000000009adc04a8.map Scheduled task 0.01%
Spawn
show in tree →
0.23%0.18%TeleportOutOfVoidListener.playerInVoid Event PlayerMoveEvent (from ServerGamePacketListenerImpl.handleMovePlayer) 0.12%
CommandDelay.onMove Event PlayerMoveEvent (from ServerGamePacketListenerImpl.handleMovePlayer) 0.11%
SKTools
show in tree →
0.21%0.21%0x000000009b78c448.run Scheduled task 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
ToolListener.onOpen Event InventoryOpenEvent (from CraftEventFactory.callInventoryOpenEventWithTitle) 0.03%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
FastAsyncWorldEdit
show in tree →
0.16%0.15%WorldEditListener.onPlayerInteract Event PlayerInteractEvent (from CraftEventFactory.callPlayerInteractEvent) 0.04%
BukkitPlayer.<init> Event event (from ServerGamePacketListenerImpl.handleMovePlayer) 0.03%
BukkitPlayer.<init> Event event (from BaseFireBlock.fireIgnite) 0.01%
BukkitAdapter.adapt Event event (from BaseFireBlock.fireIgnite) 0.01%
FasterCrystals
show in tree →
0.16%0.11%0x000000009a68d1a0.accept Scheduled task 0.16%
SKRtp
show in tree →
0.16%0.15%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
QueueCommand.onCommand Command 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
SKRules
show in tree →
0.16%0.15%0x000000009a9fcd50.run Scheduled task 0.06%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.02%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.01%
SKSpawners
show in tree →
0.15%0.13%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.06%
SpawnerListener.onInteract Event PlayerInteractEvent (from CraftEventFactory.callPlayerInteractEvent) 0.04%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
SKAuction
show in tree →
0.14%0.13%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
AuctionCommand.onCommand Command 0.02%
SKHelp
show in tree →
0.13%0.12%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.04%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
HelpCommand.onCommand Command 0.00%
SKModDetector
show in tree →
0.13%0.13%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.04%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
0x000000009a7dcef8.run Scheduled task 0.01%
SKTeam
show in tree →
0.12%0.12%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
TeamCommand.onCommand Command 0.01%
SKTpa
show in tree →
0.12%0.12%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
0x000000009a63b6a8.run Scheduled task 0.01%
SKSettings
show in tree →
0.12%0.12%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
PlaceholderAPI
show in tree →
0.11%0.04%PlaceholderAPI.setPlaceholders Scheduled task 0.10%
PlaceholderAPI.setPlaceholders Event event (from Event.callEvent) 0.00%
PlaceholderAPI.setPlaceholders Event event (from ServerPlayer.teleport) 0.00%
SKMobToggle
show in tree →
0.11%0.11%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.03%
MobToggleListener.onSpawn Event CreatureSpawnEvent (from CraftEventFactory.callCreatureSpawnEvent) 0.00%
SKOrders
show in tree →
0.11%0.11%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.04%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
SKStaff
show in tree →
0.11%0.11%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
MenuListener.onDrag Event InventoryDragEvent (from Event.callEvent) 0.00%
SKBounty
show in tree →
0.11%0.11%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.03%
MenuListener.onDrag Event InventoryDragEvent (from Event.callEvent) 0.00%
SKLeaderboards
show in tree →
0.11%0.11%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.03%
ZelChat
show in tree →
0.11%0.08%DrinkCommandContainer.execute Command 0.07%
DrinkCommandContainer.tabComplete Command 0.02%
0x000000009bb6c470.accept Scheduled task 0.01%
BasicBukkitListener.execute Event event (from PlayerList.placeNewPlayer) 0.00%
ItemEdit
show in tree →
0.10%0.10%GuiHandler.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
GuiHandler.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.03%
GuiHandler.onOpen Event InventoryOpenEvent (from CraftEventFactory.callInventoryOpenEventWithTitle) 0.03%
SKWarps
show in tree →
0.10%0.10%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
SKPaycore
show in tree →
0.10%0.10%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
SKBaltop
show in tree →
0.09%0.09%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.02%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
BaltopListener.onQuit Event PlayerQuitEvent (from PlayerList.remove) 0.00%
SKBillford
show in tree →
0.09%0.09%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.05%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.01%
SKDiscord
show in tree →
0.08%0.08%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
MenuListener.onDrag Event InventoryDragEvent (from Event.callEvent) 0.00%
SKShop
show in tree →
0.08%0.08%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.02%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
MenuListener.onDrag Event InventoryDragEvent (from Event.callEvent) 0.00%
SKDaily
show in tree →
0.08%0.08%MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.03%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.02%
MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.02%
MenuListener.onDrag Event InventoryDragEvent (from Event.callEvent) 0.00%
SKCoinflip
show in tree →
0.07%0.07%MenuListener.onClickFinal Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.04%
MenuListener.onClick Event InventoryClickEvent (from ServerGamePacketListenerImpl.handleContainerClick) 0.01%
MenuListener.onClose Event InventoryCloseEvent (from CraftEventFactory.handleInventoryCloseEvent) 0.01%
MenuListener.onDrag Event InventoryDragEvent (from Event.callEvent) 0.00%
Multiverse-Core
show in tree →
0.06%0.06%EventRunnableExecutor.execute Event event (from Event.callEvent) 0.04%
MVEntityListener.chunkLoad Event ChunkLoadEvent (from LevelChunk.loadCallback) 0.01%
MVEntityListener.entitySpawn Event EntitySpawnEvent (from CraftEventFactory.callItemSpawnEvent) 0.01%

Bukkit events

EventPlugin%
ChunkLoadEventItemsAdder0.92%
PlayerMoveEventWorldGuard0.27%
ChunkLoadEventWorldGuard0.27%
eventSkript0.26%
PlayerMoveEventSpawn0.23%
InventoryClickEventSKSell0.22%
PlayerMoveEventVulcan0.18%
PlayerInteractEventSKEnderchest0.15%
PlayerAnimationEventMythicLib0.14%
PlayerMoveEventEssentials0.12%
eventFastAsyncWorldEdit0.12%
BlockPhysicsEventItemsAdder0.12%
InventoryCloseEventSKEnderchest0.10%
PlayerMoveEventzMenu0.10%
InventoryClickEventSKSettings0.10%
PlayerClickEventMMOItems0.09%
InventoryClickEventSKAuction0.09%
InventoryClickEventSKSpawners0.09%
InventoryClickEventSKStaff0.09%
InventoryClickEventSKRtp0.09%
InventoryClickEventSKStats0.09%
InventoryClickEventSKBillford0.08%
InventoryClickEventSKHelp0.08%
InventoryClickEventSKLeaderboards0.08%
InventoryClickEventSKTeam0.08%
InventoryClickEventSKWarps0.08%
InventoryClickEventSKTpa0.08%
BlockPhysicsEventWorldGuard0.08%
GenericGameEventItemsAdder0.07%
InventoryClickEventSKBounty0.07%
InventoryClickEventSKModDetector0.07%
InventoryClickEventSKOrders0.07%
InventoryClickEventSKPaycore0.07%
PlayerResourcePackStatusEventItemsAdder0.07%
InventoryClickEventSKBaltop0.07%
InventoryClickEventSKMobToggle0.07%
InventoryClickEventSKRules0.07%
InventoryClickEventSKTools0.07%
PlayerInteractEventVulcan0.07%
InventoryOpenEventItemsAdder0.06%

Trend and lag spikes

Window #1 — lag spikeWindow #2 — lag spike0255075100364265 ms364 ms#1#2
Max MSPT Median MSPT main thread work (ms/tick) budget 50 ms lag spike

window #2 (18:01 UTC) slowest tick 364 ms

Grown categories
Bukkit events+0.633.14 → 3.77
Player ticking+0.131.66 → 1.79
Scheduled tasks (sync)+0.121.23 → 1.36
Synchronous database+0.070.07 → 0.14
Block entities (tiles)+0.060.58 → 0.64

ms/tick

Grown plugins
SKEnderchest+0.160.33 → 0.49
SKSell+0.150.46 → 0.61
nightcore+0.070.18 → 0.25
Skript+0.040.20 → 0.24
CoreProtect+0.030.11 → 0.15

ms/tick

Grown methods
native.itable stub+0.161.05 → 1.21
0-dc0b171f-d79c-4721-bb93-e4617c63dabd-libsqlitejdbc.so+0.040.05 → 0.09
CompoundTag.get+0.040.04 → 0.08
AsyncCatcher.catchOp+0.030.06 → 0.10
Object2ObjectOpenHashMap$MapIterator.nextEntry+0.030.05 → 0.09

ms/tick

window #1 (18:00 UTC) slowest tick 265 ms

Grown categories
Collisions / entity lookups+0.244.00 → 4.24
Entity ticking+0.223.70 → 3.92
Chunk management (tickets, load/unload)+0.182.14 → 2.31
Chunk ticking (random ticks, weather)+0.133.47 → 3.60
Mob AI (goals/brain)+0.111.77 → 1.88

ms/tick

Grown plugins
ItemsAdder+0.140.57 → 0.71
Essentials+0.020.13 → 0.15
Spawn+0.010.07 → 0.08
DisplayTags+0.010.21 → 0.22
SKDeathMessages+0.010.01 → 0.02

ms/tick

Grown methods
6.pthread_cond_signal+0.120.72 → 0.84
String.equals+0.050.42 → 0.47
NaturalSpawner.createState+0.050.91 → 0.95
SimpleThreadUnsafeRandom.nextInt+0.040.29 → 0.34
ChunkEntitySlices$EntityCollectionBySection.getEntities+0.040.41 → 0.45

ms/tick

Main thread flamegraph

Active time only. Click a block to zoom in, click the root to go back. Width = time.

Call tree

Like the spark viewer: click a row to expand the methods it calls. The value is the total time spent in that branch (main thread active time only).

Most expensive methods

MethodOwnTotalSource
so.64.17%4.17%
ChunkMap$TrackedEntity.moonrise$clearPlayers3.93%3.93%
ChunkMap$TrackedEntity.moonrise$tick3.52%9.41%
Entity.moonrise$getChunkData3.43%3.43%
ChunkMap.isChunkNearPlayer3.11%3.18%
native.itable stub2.84%2.84%
ServerLevel.optimiseRandomTick2.77%4.44%
NaturalSpawner.createState2.46%6.10%
native.vtable stub2.31%2.31%
AABB.intersects2.30%2.30%
6.pthread_cond_signal1.95%1.95%
PalettedContainer.get1.42%2.18%
VarHandleReferences$FieldInstanceReadOnly.getVolatile1.39%1.39%
Entity.getType1.30%1.30%
String.equals1.15%1.15%
6.syscall1.14%1.14%
ChunkEntitySlices$EntityCollectionBySection.getEntities1.10%3.54%
ConcurrentLong2ReferenceChainedHashTable.getNode1.04%1.25%
SimpleThreadUnsafeRandom.nextInt0.79%0.86%
ChunkEntitySlices.getEntities0.63%4.25%
LevelChunk.getBlockStateFinal0.59%1.53%
HashMap.getNode0.56%0.72%
ChunkMap.newTrackerTick0.55%15.6%
SectionPos.sectionToBlockCoord0.51%0.51%
ChunkAccess.getPos0.51%0.51%
CollisionUtil.getCollisionsForBlocksOrWorldBorder0.47%1.28%
SimpleCriterionTrigger.trigger0.45%1.21%
ServerChunkCache.tickChunks0.43%17.4%
Object2ObjectOpenHashMap.get0.42%0.81%
ChunkMap$TrackedEntity.updatePlayer0.42%1.73%
Entity.setTicksFrozen0.40%0.40%
EntityLookup.getEntities0.38%4.78%
Mth.floor0.37%0.37%
Entity.updateFluidHeightAndDoFluidPushing0.33%1.35%
InsideBlockEffectApplier$StepBasedCollector.flushStep0.33%0.55%
BlockBehaviour$BlockStateBase.getBlock0.31%0.31%
ReferenceOpenHashSet.contains0.30%0.30%
SimpleBitStorage.get0.30%0.30%
LivingEntity.getHealth0.29%0.68%
PalettedContainer.readPalette0.29%0.31%
EntityTickList.forEach0.29%24.5%
StringConcatHelper.prepend0.28%0.49%
ServerChunkCache.getFullChunk0.28%2.03%
HashMap$HashIterator.nextNode0.27%0.27%
Level.findSupportingBlock0.27%0.49%
SynchedEntityData.getItem0.27%0.27%
ThreadLocal.get0.26%0.51%
ServerEntity.sendChanges0.26%1.95%
ChunkHolderManager.getTicketLevelAt0.25%0.41%
LivingEntity.getItemBySlot0.24%0.59%
Level.tickBlockEntities0.24%5.90%
ThreadLocal$ThreadLocalMap.getEntry0.23%0.23%
native.jbyte_disjoint_arraycopy0.23%0.23%
MutableComponent.equals0.22%0.81%
native.[vdso]0.22%0.22%
ObjectLinkedOpenHashSet$SetIterator.next0.21%0.21%
GoalSelector.tick0.21%4.63%
ChunkPos.asLong0.21%0.21%
Strategy.getIndex0.21%0.21%
Profiler.get0.20%0.52%
Entity.getX0.20%0.20%
NearbyPlayers.getPlayers0.20%0.30%
Arrays.copyOf0.20%0.25%
Entity.setDeltaMovement0.20%0.23%
Entity.level0.19%0.19%
MatchOps$MatchOp.evaluateSequential0.19%0.43%
PatchedDataComponentMap.get0.19%0.34%
MinecraftVersion.atOrAbove0.18%0.18%ProtocolLib
ChunkAccess.getNoiseBiome0.18%0.96%
NearbyPlayers$TrackedChunk.getPlayers0.18%0.18%
Reference2ObjectOpenHashMap.get0.18%0.19%
Holder$Reference.is0.18%0.48%
HashMap.putVal0.17%0.24%
ServerChunkCache.runDistanceManagerUpdates0.17%1.65%
AsyncCatcher.catchOp0.17%0.17%
Objects.equals0.17%3.74%
Entity.moonrise$getTrackedEntity0.17%0.17%
PaperEventManager.callEvent0.16%8.86%
Entity.applyEffectsFromBlocks0.16%2.77%
EntityGetter.getNearestPlayer0.16%0.65%

Methods by total time (including callees)

MethodTotalOwnSource
Thread.run97.9%0.00%
Thread.runWith97.9%0.00%
0x00000000990a1b30.run97.9%0.00%
MinecraftServer.lambda$spin$297.9%0.00%
MinecraftServer.runServer97.9%0.00%
MinecraftServer.processPacketsAndTick90.1%0.00%
MinecraftServer.tickServer86.3%0.00%
DedicatedServer.tickServer86.3%0.00%
MinecraftServer.tickChildren86.2%0.04%
ServerLevel.tick72.2%0.00%
ServerChunkCache.tick37.7%0.01%
EntityTickList.forEach24.5%0.29%
0x000000009b657710.accept24.1%0.00%
ServerLevel.lambda$tick$424.1%0.05%
Level.guardEntityTick23.1%0.00%
0x000000009b82a000.accept22.1%0.00%
ServerLevel.tickNonPassenger22.1%0.10%
LivingEntity.tick20.7%0.07%
ServerChunkCache.tickChunks17.4%0.43%
ChunkMap.tick16.6%0.00%
ChunkMap.newTrackerTick15.6%0.55%
Mob.tick14.8%0.00%
LivingEntity.aiStep13.7%0.01%
Mob.aiStep11.8%0.01%
PacketProcessor.executeSinglePacket9.74%0.00%
PacketProcessor$ListenerAndPacket.handle9.72%0.01%
ChunkMap$TrackedEntity.moonrise$tick9.41%3.52%
SimplePluginManager.callEvent8.87%0.01%
PaperEventManager.callEvent8.86%0.16%
PaperPluginManagerImpl.callEvent8.86%0.00%
RegisteredListener.callEvent8.56%0.03%
TimedEventExecutor.execute8.51%0.00%
DedicatedServer.tickConnection8.37%0.00%
MinecraftServer.tickConnection8.37%0.00%
ServerConnectionListener.tick8.37%0.02%
Connection.tick8.27%0.02%
0x00000000980bd800.invokeExact_MT7.92%0.00%
MinecraftServer.recordTaskExecutionTimeWhileWaiting7.76%0.00%
MinecraftServer.pollTask7.74%0.00%
ServerGamePacketListenerImpl.tick7.48%0.00%

Hottest paths

  1. 3.92% Entity tracking (packet sending)
    … (1 frames above) → MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ChunkMap.tick → ChunkMap.newTrackerTick → ChunkMap$TrackedEntity.moonrise$tick → ChunkMap$TrackedEntity.moonrise$clearPlayers
  2. 3.52% Entity tracking (packet sending)
    MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ChunkMap.tick → ChunkMap.newTrackerTick → ChunkMap$TrackedEntity.moonrise$tick
  3. 3.43% Entity tracking (packet sending)
    MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ChunkMap.tick → ChunkMap.newTrackerTick → Entity.moonrise$getChunkData
  4. 3.11% Chunk ticking (random ticks, weather)
    … (1 frames above) → MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → ChunkMap.collectSpawningChunks → ChunkMap.isChunkNearPlayer
  5. 2.77% Chunk ticking (random ticks, weather)
    … (2 frames above) → MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → ServerChunkCache.iterateTickingChunksFaster → ServerLevel.tickChunk → ServerLevel.optimiseRandomTick
  6. 2.46% Natural mob spawning
    MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → NaturalSpawner.createState
  7. 1.24% Natural mob spawning
    … (1 frames above) → MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → NaturalSpawner.createState → Entity.getType
  8. 0.99% Collisions / entity lookups
    … (12 frames above) → LevelChunk$BoundTickingBlockEntity.tick → HopperBlockEntity.pushItemsTick → HopperBlockEntity.tryMoveItems → HopperBlockEntity.lambda$pushItemsTick$0 → HopperBlockEntity.suckInItems → HopperBlockEntity.getItemsAtAndAbove → Level.getEntitiesOfClass → EntityLookup.getEntities → ChunkEntitySlices.getEntities → ChunkEntitySlices$EntityCollectionBySection.getEntities → AABB.intersects → AABB.intersects
  9. 0.98%
    native.GC_active → so.SafepointSynchronize::handle_polling_page_exception → so.ThreadSafepointState::handle_polling_page_exception → so.SafepointMechanism::process → so.SafepointSynchronize::block → 6.syscall
  10. 0.97% Collisions / entity lookups
    … (9 frames above) → ServerLevel.tick → Level.tickBlockEntities → LevelChunk$RebindableTickingBlockEntityWrapper.tick → LevelChunk$BoundTickingBlockEntity.tick → PistonMovingBlockEntity.tick → PistonMovingBlockEntity.moveCollidedEntities → EntityGetter.getEntities → Level.getEntities → EntityLookup.getEntities → ChunkEntitySlices.getEntities → ChunkEntitySlices$EntityCollectionBySection.getEntities → AABB.intersects → AABB.intersects
  11. 0.79% Chunk ticking (random ticks, weather)
    … (3 frames above) → MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → ServerChunkCache.iterateTickingChunksFaster → ServerLevel.tickChunk → ServerLevel.optimiseRandomTick → SimpleThreadUnsafeRandom.nextInt
  12. 0.55% Network / incoming packets · ProtocolLib
    … (16 frames above) → Connection$PacketSendAction.lambda$new$0 → Connection.sendPacket → NettyEventLoopProxy.execute → SingleThreadEventExecutor.execute → SingleThreadEventExecutor.execute0 → SingleThreadEventExecutor.execute → SingleThreadIoEventLoop.wakeup → EpollIoHandler.wakeup → Native.eventFdWrite → so (deleted)._init → 6.eventfd_write → 6.__write → native./usr/lib/x86_64-linux-gnu/libc.so.6
  13. 0.55% Entity tracking (packet sending)
    MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ChunkMap.tick → ChunkMap.newTrackerTick
  14. 0.52% Scheduled tasks (sync) · packetevents
    … (13 frames above) → Vulcan_Of.run → Vulcan_K.Vulcan_L → ChannelHelper.runInEventLoop → ChannelOperatorModernImpl.runInEventLoop → SingleThreadEventExecutor.execute → SingleThreadEventExecutor.execute0 → SingleThreadEventExecutor.execute → SingleThreadIoEventLoop.wakeup → EpollIoHandler.wakeup → Native.eventFdWrite → so (deleted)._init → 6.eventfd_write → 6.__write → native./usr/lib/x86_64-linux-gnu/libc.so.6
  15. 0.50% Chunk ticking (random ticks, weather)
    … (1 frames above) → MinecraftServer.lambda$spin$2 → MinecraftServer.runServer → MinecraftServer.processPacketsAndTick → DedicatedServer.tickServer → MinecraftServer.tickServer → MinecraftServer.tickChildren → ServerLevel.tick → ServerChunkCache.tick → ServerChunkCache.tickChunks → ServerChunkCache.tickChunks → ChunkMap.collectSpawningChunks → ChunkAccess.getPos

Entities and block entities

Entities (by type)

Type%
ServerPlayer9.90%
Zombie1.94%
Villager1.61%
Skeleton1.56%
Creeper1.55%
EnderMan1.54%
Spider0.88%
Sheep0.72%
Chicken0.65%
OldMinecartBehavior0.46%
ItemEntity0.46%
ThrownEnderpearl0.41%
Bee0.31%
Frog0.30%
Rabbit0.18%
Squid0.16%
Fox0.15%
Inventory0.15%
PolarBear0.14%
Wolf0.13%
EntityEquipment0.04%
FireworkRocketEntity0.04%
Axolotl0.03%
FallingBlockEntity0.03%
Cat0.03%

Block entities (by type)

Type%
BarrelBlockEntity1.87%
HopperBlockEntity1.79%
ShulkerBoxBlockEntity1.14%
SpawnerBlockEntity0.57%
BeaconBlockEntity0.09%
AbstractFurnaceBlockEntity0.06%
VaultBlockEntity0.04%
BeehiveBlockEntity0.02%
PlayerDetector0.02%
BannerBlockEntity0.01%
BrewingStandBlockEntity0.01%
TrialSpawner0.01%
TrialSpawnerStateData0.01%
SignBlockEntity0.01%
SkullBlockEntity0.01%
VaultSharedData0.01%
ChestBlockEntity0.00%
DecoratedPotBlockEntity0.00%
SculkSensorBlockEntity0.00%
TrialSpawnerState0.00%

Thread

ThreadActive% of sampledMain workNote
GC Thread (x4)7.6 min1.55native./usr/lib/x86_64-linux-gnu/libc.so.6 99.0%
so.G1ParScanThreadState::trim_queue_to_threshold 0.64%
so.void OopOopIterateBackwardsDispatch<G1ScanEvacuatedObjClosure>::Table::oop_oop_iterate_backwards<InstanceKlass, narrowOop> 0.17%
garbage collector
G1 Refine (x2)3.8 min0.77native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%
so.G1CodeRootSet::length 0.01%
so.void G1ConcurrentRefineOopClosure::do_oop_work<narrowOop> 0.01%
garbage collector
DestroyJavaVM1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Notification Thread1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Signal Dispatcher1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
VoiceChatServerThread1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%voicechat
java1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
G1 Main Marker1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%garbage collector
VM Periodic Tas1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%
6.pthread_mutex_unlock 0.01%
VM Thread1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
VirtualThread-unblocker1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%
so.JavaThread::threadObj 0.00%
C1 CompilerThre1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%
so.GrowableArrayResourceAllocator::allocate 0.00%
so.LIR_OpVisitState::append 0.00%
G1 Conc (x1)1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 95.3%
so.void OopOopIterateDispatch<G1CMOopClosure>::Table::oop_oop_iterate<InstanceKlass, narrowOop> 1.63%
so.void OopOopIterateDispatch<G1CMOopClosure>::Table::oop_oop_iterate<ObjArrayKlass, narrowOop> 0.46%
garbage collector
Service Thread1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Monitor Deflati1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Async-profiler Timer1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
G1 Service1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%garbage collector
C2 CompilerThre1.9 min0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 98.9%
6.syscall 0.11%
so.IndexSetIterator::advance_and_next 0.03%
SKEnderchest-Save1.9 min0.38native.itable stub 16.7%
Pattern$BmpCharProperty.match 14.9%
Pattern$Branch.match 9.18%
SKEnderchest
FileSystemWatchService1.9 min0.38native./usr/lib/x86_64-linux-gnu/libc.so.6 99.7%
6.syscall 0.16%
so.Dictionary::find_class 0.01%
bStats-Metrics1.7 min10.1native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%
ML_KEM.generateK_PkeKeyPair 0.00%
Server thread1.5 min0.38
Netty Epoll IO (x2)57.0 s0.76native./usr/lib/x86_64-linux-gnu/libc.so.6 23.0%
so.deflate_compress_lazy 8.00%
Vulcan_fF.Vulcan_h 4.99%
network (Netty) · Vulcan
luckperms-worker (x16)48.1 s6.19native./usr/lib/x86_64-linux-gnu/libc.so.6 99.9%
ForkJoinPool.runWorker 0.02%
ForkJoinPool.deactivate 0.01%
Paper Common Worker (x1)23.9 s0.38so.longest_match 16.9%
so.deflate_slow 7.03%
SimpleBitStorage.moonrise$countEntries 3.70%
FancyAnalytics-JavaSDK16.1 s1.55native./usr/lib/x86_64-linux-gnu/libc.so.6 99.9%
MontgomeryIntegerPolynomialP256.mult 0.05%
HandshakeHash.copy 0.02%
Dimension-Data-IO-Worker (x4)16.0 s1.55native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Folia Async Scheduler Thread (x4)16.0 s1.55native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Download (x4)12.1 s1.55native./usr/lib/x86_64-linux-gnu/libc.so.6 99.9%
IntegerPolynomial25519.square 0.03%
native.counterMode_AESCrypt 0.03%
ForkJoinPool-5-worker (x4)12.0 s1.55native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%
ForkJoinPool.awaitWork 0.03%
FAWE QueueHandler Blocking Executor (x3)12.0 s1.16native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
[tid=15624]8.7 s0.03native./usr/lib/x86_64-linux-gnu/libc.so.6 96.3%
so.IndexSetIterator::advance_and_next 0.28%
so.PhaseChaitin::post_allocate_copy_removal 0.18%
metrics-submitter8.0 s0.77native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
FancyLogger8.0 s0.77native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Timer (x2)8.0 s0.77native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
pStats-Metrics8.0 s0.77native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
SKAuction-Save5.5 s0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 72.6%
native.itable stub 4.19%
6.syscall 3.47%
SKAuction
pool-53-thread (x1)4.0 s0.39native./usr/lib/x86_64-linux-gnu/libc.so.6 100%
Configuration Thread (x2)4.0 s0.38native./usr/lib/x86_64-linux-gnu/libc.so.6 99.7%
so.Assembler::locate_operand 0.10%
so.G1BarrierSetRuntime::write_ref_array_post_entry 0.10%
H2-serialization4.0 s0.77native./usr/lib/x86_64-linux-gnu/libc.so.6 99.8%
MVMap$DecisionMaker.decide 0.10%
MVStore.acceptChunkOccupancyChanges 0.10%

Machine and resources

CPUIntel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
CPU threads4
Operating systemUbuntu 26.04.1 LTS 5.15.0-181-generic (amd64)
JavaEclipse Adoptium 25.0.5 Temurin-25.0.5+8
JVMOpenJDK 64-Bit Server VM Eclipse Adoptium 25.0.5+8-LTS
System uptime16h 02m
ResourceValue
CPU process70% (1m) / 61% (15m)
CPU system70% (1m) / 61% (15m)
RAM113.6 GB / 125.7 GB
Disk376.4 GB / 409.4 GB
Heap5.7 GB / 12.0 GB
Non-heap0.6 GB
GC G1 Concurrent GC2 collections, 20.5 ms avg, every 8h 00m
GC G1 Young Generation9 collections, 139.3 ms avg, every 1h 46m
Net eth0rx 0.13 MB/s, tx 0.48 MB/s
Net lorx 0.00 MB/s, tx 0.00 MB/s

World

WorldxzEntitiesMain typesTeleport
world-132721444013450item 13450/tp @s -13272 100 14440
world-13288144401878item 1877, hopper_minecart 1/tp @s -13288 100 14440
Spawn232-2430armor_stand 30/tp @s 232 100 -24
Spawn200-827armor_stand 27/tp @s 200 100 -8
Spawn3444027armor_stand 27/tp @s 344 100 40
Spawn2802426armor_stand 26/tp @s 280 100 24
world-12680-882425item 25/tp @s -12680 100 -8824
Spawn360-2423armor_stand 23/tp @s 360 100 -24
Spawn2167221armor_stand 21/tp @s 216 100 72
Spawn3447221armor_stand 21/tp @s 344 100 72
world-18641471220armor_stand 10, item_frame 10/tp @s -1864 100 14712
Spawn184-818armor_stand 18/tp @s 184 100 -8
Spawn3287215armor_stand 15/tp @s 328 100 72
Spawn3282415armor_stand 15/tp @s 328 100 24
Spawn3284015armor_stand 15/tp @s 328 100 40

Installed plugins / mods

AxiomPaper 6.0.1+1.21.11Chunky 1.4.40CommandWhitelist 2.12.1CoreProtect 24.1DisplayTags 1.1.5Essentials 2.22.0ExcellentCrates 6.6.1ExcellentEconomy 2.8.0FancyHolograms 2.12.0FancyNpcs 2.12.1FastAsyncWorldEdit 2.15.4+d8666b3FasterCrystals 2.2.1InvSeePlusPlus 0.31.19ItemEdit 3.7.10ItemsAdder 4.0.18LuckPerms 5.5.85MMOItems 6.10.1-SNAPSHOTMultiverse-Core 5.8.1MythicLib 1.7.1-SNAPSHOTPAPIProxyBridge 1.8.4PlaceholderAPI 2.12.3PlayerKits2 1.24.1ProtocolLib 5.5.0-SNAPSHOT-f0e959aPurpurBars 3.1-SNAPSHOTSKAuction 1.0.7SKBaltop 1.0.3SKBillford 1.0.2SKBounty 1.0.4SKClearLag 1.0.4SKCoinflip 1.0.1SKCombat 1.0.11SKDaily 1.0.0SKDeathMessages 1.0.4SKDiscord 1.0.3SKEnderchest 1.2.3SKHelp 1.0.2SKLeaderboards 1.0.5SKLive 1.0.0SKMobToggle 1.0.4SKModDetector 1.0.0SKOrders 1.0.9SKPaycore 1.0.4SKRtp 1.0.9SKRules 1.0.2SKSell 1.0.20SKSettings 1.0.12SKShop 1.0.11SKSpawners 1.0.9SKStaff 1.0.6SKStats 1.0.4SKTeam 1.0.6SKTools 1.0.8SKTpa 1.0.6SKWarps 1.0.2SKWelcome 1.0.1SkBee 3.25.4Skript 2.16.2Spawn 2.4.4TAB 6.2.0Tebex 2.4.2Vault 2.20.3ViaVersion 5.12.0VoiceChatPlaceholders 1.1VoteRewards 1.0Votifier 1.2.1Vulcan 2.9.7.22WorldGuard 7.0.17+2370-e42d8bcZelChat 2.0.0-pre-28ajLeaderboards 2.11.0nightcore 2.16.4packetevents 2.13.0skript-gui 1.3.2skript-placeholders 1.7.2voicechat 2.6.24zMenu 1.1.1.9