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
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
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
- 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
- Pregenerate the world with Chunky and set a world border, so chunks don't have to be generated on the fly
- Set chunks.prevent-moving-into-unloaded-chunks: true in paper-world-defaults.yml (fast elytra flyers are stopped at the edge of unloaded chunks)
- 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
- Compare the growing categories with the dedicated sections below: they are the most likely cause of the spike
- 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
- Visit the listed chunks and reduce the entities (farms, animal pens, dropped items, armor stands)
- 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
- 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
- Lower entity-broadcast-range-percentage in server.properties (75, range 50-100): entities appear later as you approach
- Reduce the number of entities in crowded areas
- 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 32spigot.yml › world-settings.default.entity-tracking-range.monsters = 48 → recommended 32spigot.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
- 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
- Lower the maxEntityCramming gamerule (e.g. /gamerule maxEntityCramming 16, vanilla 24). Warning: mobs beyond the limit in one block die (crowded pens, cramming farms)
- 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
- Look at the “Events” table to see which event and which plugin cost the most
- In listeners return early when the event is irrelevant (check the cheapest conditions first)
- 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
- Set -Xms equal to -Xmx: it prevents the JVM from resizing the heap during gameplay
- 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
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- Check that the work is necessary (looping async tasks, continuous chunk generation, network)
- 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
- 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
- Set entities.spawning.per-player-mob-spawns: true in paper-world-defaults.yml
- Lower mob-spawn-range in spigot.yml (6 chunks, not above simulation-distance) and the simulation-distance: mobs spawn closer to players
- 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
- 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 involved | Main 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 lookups | 10.8% | AABB.intersects 2.30%ChunkEntitySlices$EntityCollectionBySection.getEntities 1.10%ChunkEntitySlices.getEntities 0.63% | ||
| Entity ticking | 10.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 events | 8.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 spawning | 6.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 packets | 5.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 ticking | 4.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 movement | 2.62% | native.vtable stub 0.21%Entity.move 0.14%LevelChunk.getBlockStateFinal 0.11% | ||
| Other | 2.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 thread | 1.43% | ConcurrentLong2ReferenceChainedHashTable.getNode 0.46%VarHandleReferences$FieldInstanceReadOnly.getVolatile 0.37%ServerChunkCache.getChunkNow 0.14% | ||
| Lighting engine | 1.14% | 6.pthread_cond_signal 0.65%SWMRNibbleArray.getVisible 0.06%ServerLevel.moonrise$getAnyChunkIfLoaded 0.05% | ||
| Redstone / block updates | 1.11% | WireNode.<init> 0.11%PalettedContainer.get 0.05%native.itable stub 0.04% | ||
| Fluids | 0.77% | FlowingFluid.getSlopeDistance 0.07%BlockBehaviour$BlockStateBase.getBlock 0.05%ReferenceOpenHashSet.contains 0.04% | ||
| Text formatting / placeholders | 0.77% | DisplayTags 0.48% Skript 0.16% | native.itable stub 0.06%HashMap.getNode 0.04%String.equals 0.03% | |
| Pathfinding | 0.76% | WalkNodeEvaluator.checkNeighbourBlocks 0.05%PathTypeCache.get 0.04%Long2ObjectOpenHashMap.find 0.03% | ||
| Chunk generation | 0.46% | BiomeManager.getFiddledDistance 0.07%LinearCongruentialGenerator.next 0.06%SimpleBitStorage.get 0.05% | ||
| Scoreboard / teams | 0.42% | String.equals 0.24%Object2ObjectOpenHashMap.get 0.11%CraftScoreboardManager.forAllObjectives 0.01% | ||
| Spawners | 0.41% | native.itable stub 0.05%HashMap.getNode 0.05%String.equals 0.02% | ||
| Hoppers | 0.36% | ItemStack.getMaxStackSize 0.06%NonNullList.get 0.03%CompoundContainer.getItem 0.03% | ||
| Commands | 0.33% | SimpleCriterionTrigger.trigger 0.05%native.itable stub 0.03%6.pthread_cond_signal 0.02% | ||
| Synchronous file I/O | 0.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 XP | 0.29% | SimpleCriterionTrigger.trigger 0.06%HolderSet$Direct.contains 0.02%InsideBlockEffectApplier$StepBasedCollector.flushStep 0.02% | ||
| Scheduled block/fluid ticks | 0.29% | LeavesBlock.updateDistance 0.03%PriorityQueue.siftUp 0.01%Long2LongOpenHashMap$MapIterator.nextEntry 0.01% | ||
| Chunk saving / autosave | 0.25% | SerializableChunkData.copyOf 0.06%native.itable stub 0.03%native.jlong_disjoint_arraycopy 0.02% | ||
| Main thread task queue | 0.21% | ConcurrentLinkedQueue.peek 0.04%BlockableEventLoop.pollTask 0.03%ConcurrentLinkedQueue.poll 0.03% | ||
| Villagers / POI | 0.21% | PalettedContainer.maybeHas 0.04%HashMap.getNode 0.04%PoiManager.lambda$exists$13 0.04% | ||
| Synchronous database | 0.20% | nightcore 0.19% | 0-dc0b171f-d79c-4721-bb93-e4617c63dabd-libsqlitejdbc.so 0.12%so.6 0.01%6.__fxstat 0.01% | |
| Explosions | 0.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.
| Plugin | On stack | Own | Entry points | Warnings | |
|---|---|---|---|---|---|
| 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
| Event | Plugin | % |
|---|---|---|
| ChunkLoadEvent | ItemsAdder | 0.92% |
| PlayerMoveEvent | WorldGuard | 0.27% |
| ChunkLoadEvent | WorldGuard | 0.27% |
| event | Skript | 0.26% |
| PlayerMoveEvent | Spawn | 0.23% |
| InventoryClickEvent | SKSell | 0.22% |
| PlayerMoveEvent | Vulcan | 0.18% |
| PlayerInteractEvent | SKEnderchest | 0.15% |
| PlayerAnimationEvent | MythicLib | 0.14% |
| PlayerMoveEvent | Essentials | 0.12% |
| event | FastAsyncWorldEdit | 0.12% |
| BlockPhysicsEvent | ItemsAdder | 0.12% |
| InventoryCloseEvent | SKEnderchest | 0.10% |
| PlayerMoveEvent | zMenu | 0.10% |
| InventoryClickEvent | SKSettings | 0.10% |
| PlayerClickEvent | MMOItems | 0.09% |
| InventoryClickEvent | SKAuction | 0.09% |
| InventoryClickEvent | SKSpawners | 0.09% |
| InventoryClickEvent | SKStaff | 0.09% |
| InventoryClickEvent | SKRtp | 0.09% |
| InventoryClickEvent | SKStats | 0.09% |
| InventoryClickEvent | SKBillford | 0.08% |
| InventoryClickEvent | SKHelp | 0.08% |
| InventoryClickEvent | SKLeaderboards | 0.08% |
| InventoryClickEvent | SKTeam | 0.08% |
| InventoryClickEvent | SKWarps | 0.08% |
| InventoryClickEvent | SKTpa | 0.08% |
| BlockPhysicsEvent | WorldGuard | 0.08% |
| GenericGameEvent | ItemsAdder | 0.07% |
| InventoryClickEvent | SKBounty | 0.07% |
| InventoryClickEvent | SKModDetector | 0.07% |
| InventoryClickEvent | SKOrders | 0.07% |
| InventoryClickEvent | SKPaycore | 0.07% |
| PlayerResourcePackStatusEvent | ItemsAdder | 0.07% |
| InventoryClickEvent | SKBaltop | 0.07% |
| InventoryClickEvent | SKMobToggle | 0.07% |
| InventoryClickEvent | SKRules | 0.07% |
| InventoryClickEvent | SKTools | 0.07% |
| PlayerInteractEvent | Vulcan | 0.07% |
| InventoryOpenEvent | ItemsAdder | 0.06% |
Trend and lag spikes
window #2 (18:01 UTC) slowest tick 364 ms
Grown categories
| Bukkit events | +0.63 | 3.14 → 3.77 |
| Player ticking | +0.13 | 1.66 → 1.79 |
| Scheduled tasks (sync) | +0.12 | 1.23 → 1.36 |
| Synchronous database | +0.07 | 0.07 → 0.14 |
| Block entities (tiles) | +0.06 | 0.58 → 0.64 |
ms/tick
Grown plugins
| SKEnderchest | +0.16 | 0.33 → 0.49 |
| SKSell | +0.15 | 0.46 → 0.61 |
| nightcore | +0.07 | 0.18 → 0.25 |
| Skript | +0.04 | 0.20 → 0.24 |
| CoreProtect | +0.03 | 0.11 → 0.15 |
ms/tick
Grown methods
native.itable stub | +0.16 | 1.05 → 1.21 |
0-dc0b171f-d79c-4721-bb93-e4617c63dabd-libsqlitejdbc.so | +0.04 | 0.05 → 0.09 |
CompoundTag.get | +0.04 | 0.04 → 0.08 |
AsyncCatcher.catchOp | +0.03 | 0.06 → 0.10 |
Object2ObjectOpenHashMap$MapIterator.nextEntry | +0.03 | 0.05 → 0.09 |
ms/tick
window #1 (18:00 UTC) slowest tick 265 ms
Grown categories
| Collisions / entity lookups | +0.24 | 4.00 → 4.24 |
| Entity ticking | +0.22 | 3.70 → 3.92 |
| Chunk management (tickets, load/unload) | +0.18 | 2.14 → 2.31 |
| Chunk ticking (random ticks, weather) | +0.13 | 3.47 → 3.60 |
| Mob AI (goals/brain) | +0.11 | 1.77 → 1.88 |
ms/tick
Grown plugins
| ItemsAdder | +0.14 | 0.57 → 0.71 |
| Essentials | +0.02 | 0.13 → 0.15 |
| Spawn | +0.01 | 0.07 → 0.08 |
| DisplayTags | +0.01 | 0.21 → 0.22 |
| SKDeathMessages | +0.01 | 0.01 → 0.02 |
ms/tick
Grown methods
6.pthread_cond_signal | +0.12 | 0.72 → 0.84 |
String.equals | +0.05 | 0.42 → 0.47 |
NaturalSpawner.createState | +0.05 | 0.91 → 0.95 |
SimpleThreadUnsafeRandom.nextInt | +0.04 | 0.29 → 0.34 |
ChunkEntitySlices$EntityCollectionBySection.getEntities | +0.04 | 0.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
| Method | Own | Total | Source |
|---|---|---|---|
so.6 | 4.17% | 4.17% | |
ChunkMap$TrackedEntity.moonrise$clearPlayers | 3.93% | 3.93% | |
ChunkMap$TrackedEntity.moonrise$tick | 3.52% | 9.41% | |
Entity.moonrise$getChunkData | 3.43% | 3.43% | |
ChunkMap.isChunkNearPlayer | 3.11% | 3.18% | |
native.itable stub | 2.84% | 2.84% | |
ServerLevel.optimiseRandomTick | 2.77% | 4.44% | |
NaturalSpawner.createState | 2.46% | 6.10% | |
native.vtable stub | 2.31% | 2.31% | |
AABB.intersects | 2.30% | 2.30% | |
6.pthread_cond_signal | 1.95% | 1.95% | |
PalettedContainer.get | 1.42% | 2.18% | |
VarHandleReferences$FieldInstanceReadOnly.getVolatile | 1.39% | 1.39% | |
Entity.getType | 1.30% | 1.30% | |
String.equals | 1.15% | 1.15% | |
6.syscall | 1.14% | 1.14% | |
ChunkEntitySlices$EntityCollectionBySection.getEntities | 1.10% | 3.54% | |
ConcurrentLong2ReferenceChainedHashTable.getNode | 1.04% | 1.25% | |
SimpleThreadUnsafeRandom.nextInt | 0.79% | 0.86% | |
ChunkEntitySlices.getEntities | 0.63% | 4.25% | |
LevelChunk.getBlockStateFinal | 0.59% | 1.53% | |
HashMap.getNode | 0.56% | 0.72% | |
ChunkMap.newTrackerTick | 0.55% | 15.6% | |
SectionPos.sectionToBlockCoord | 0.51% | 0.51% | |
ChunkAccess.getPos | 0.51% | 0.51% | |
CollisionUtil.getCollisionsForBlocksOrWorldBorder | 0.47% | 1.28% | |
SimpleCriterionTrigger.trigger | 0.45% | 1.21% | |
ServerChunkCache.tickChunks | 0.43% | 17.4% | |
Object2ObjectOpenHashMap.get | 0.42% | 0.81% | |
ChunkMap$TrackedEntity.updatePlayer | 0.42% | 1.73% | |
Entity.setTicksFrozen | 0.40% | 0.40% | |
EntityLookup.getEntities | 0.38% | 4.78% | |
Mth.floor | 0.37% | 0.37% | |
Entity.updateFluidHeightAndDoFluidPushing | 0.33% | 1.35% | |
InsideBlockEffectApplier$StepBasedCollector.flushStep | 0.33% | 0.55% | |
BlockBehaviour$BlockStateBase.getBlock | 0.31% | 0.31% | |
ReferenceOpenHashSet.contains | 0.30% | 0.30% | |
SimpleBitStorage.get | 0.30% | 0.30% | |
LivingEntity.getHealth | 0.29% | 0.68% | |
PalettedContainer.readPalette | 0.29% | 0.31% | |
EntityTickList.forEach | 0.29% | 24.5% | |
StringConcatHelper.prepend | 0.28% | 0.49% | |
ServerChunkCache.getFullChunk | 0.28% | 2.03% | |
HashMap$HashIterator.nextNode | 0.27% | 0.27% | |
Level.findSupportingBlock | 0.27% | 0.49% | |
SynchedEntityData.getItem | 0.27% | 0.27% | |
ThreadLocal.get | 0.26% | 0.51% | |
ServerEntity.sendChanges | 0.26% | 1.95% | |
ChunkHolderManager.getTicketLevelAt | 0.25% | 0.41% | |
LivingEntity.getItemBySlot | 0.24% | 0.59% | |
Level.tickBlockEntities | 0.24% | 5.90% | |
ThreadLocal$ThreadLocalMap.getEntry | 0.23% | 0.23% | |
native.jbyte_disjoint_arraycopy | 0.23% | 0.23% | |
MutableComponent.equals | 0.22% | 0.81% | |
native.[vdso] | 0.22% | 0.22% | |
ObjectLinkedOpenHashSet$SetIterator.next | 0.21% | 0.21% | |
GoalSelector.tick | 0.21% | 4.63% | |
ChunkPos.asLong | 0.21% | 0.21% | |
Strategy.getIndex | 0.21% | 0.21% | |
Profiler.get | 0.20% | 0.52% | |
Entity.getX | 0.20% | 0.20% | |
NearbyPlayers.getPlayers | 0.20% | 0.30% | |
Arrays.copyOf | 0.20% | 0.25% | |
Entity.setDeltaMovement | 0.20% | 0.23% | |
Entity.level | 0.19% | 0.19% | |
MatchOps$MatchOp.evaluateSequential | 0.19% | 0.43% | |
PatchedDataComponentMap.get | 0.19% | 0.34% | |
MinecraftVersion.atOrAbove | 0.18% | 0.18% | ProtocolLib |
ChunkAccess.getNoiseBiome | 0.18% | 0.96% | |
NearbyPlayers$TrackedChunk.getPlayers | 0.18% | 0.18% | |
Reference2ObjectOpenHashMap.get | 0.18% | 0.19% | |
Holder$Reference.is | 0.18% | 0.48% | |
HashMap.putVal | 0.17% | 0.24% | |
ServerChunkCache.runDistanceManagerUpdates | 0.17% | 1.65% | |
AsyncCatcher.catchOp | 0.17% | 0.17% | |
Objects.equals | 0.17% | 3.74% | |
Entity.moonrise$getTrackedEntity | 0.17% | 0.17% | |
PaperEventManager.callEvent | 0.16% | 8.86% | |
Entity.applyEffectsFromBlocks | 0.16% | 2.77% | |
EntityGetter.getNearestPlayer | 0.16% | 0.65% |
Methods by total time (including callees)
| Method | Total | Own | Source |
|---|---|---|---|
Thread.run | 97.9% | 0.00% | |
Thread.runWith | 97.9% | 0.00% | |
0x00000000990a1b30.run | 97.9% | 0.00% | |
MinecraftServer.lambda$spin$2 | 97.9% | 0.00% | |
MinecraftServer.runServer | 97.9% | 0.00% | |
MinecraftServer.processPacketsAndTick | 90.1% | 0.00% | |
MinecraftServer.tickServer | 86.3% | 0.00% | |
DedicatedServer.tickServer | 86.3% | 0.00% | |
MinecraftServer.tickChildren | 86.2% | 0.04% | |
ServerLevel.tick | 72.2% | 0.00% | |
ServerChunkCache.tick | 37.7% | 0.01% | |
EntityTickList.forEach | 24.5% | 0.29% | |
0x000000009b657710.accept | 24.1% | 0.00% | |
ServerLevel.lambda$tick$4 | 24.1% | 0.05% | |
Level.guardEntityTick | 23.1% | 0.00% | |
0x000000009b82a000.accept | 22.1% | 0.00% | |
ServerLevel.tickNonPassenger | 22.1% | 0.10% | |
LivingEntity.tick | 20.7% | 0.07% | |
ServerChunkCache.tickChunks | 17.4% | 0.43% | |
ChunkMap.tick | 16.6% | 0.00% | |
ChunkMap.newTrackerTick | 15.6% | 0.55% | |
Mob.tick | 14.8% | 0.00% | |
LivingEntity.aiStep | 13.7% | 0.01% | |
Mob.aiStep | 11.8% | 0.01% | |
PacketProcessor.executeSinglePacket | 9.74% | 0.00% | |
PacketProcessor$ListenerAndPacket.handle | 9.72% | 0.01% | |
ChunkMap$TrackedEntity.moonrise$tick | 9.41% | 3.52% | |
SimplePluginManager.callEvent | 8.87% | 0.01% | |
PaperEventManager.callEvent | 8.86% | 0.16% | |
PaperPluginManagerImpl.callEvent | 8.86% | 0.00% | |
RegisteredListener.callEvent | 8.56% | 0.03% | |
TimedEventExecutor.execute | 8.51% | 0.00% | |
DedicatedServer.tickConnection | 8.37% | 0.00% | |
MinecraftServer.tickConnection | 8.37% | 0.00% | |
ServerConnectionListener.tick | 8.37% | 0.02% | |
Connection.tick | 8.27% | 0.02% | |
0x00000000980bd800.invokeExact_MT | 7.92% | 0.00% | |
MinecraftServer.recordTaskExecutionTimeWhileWaiting | 7.76% | 0.00% | |
MinecraftServer.pollTask | 7.74% | 0.00% | |
ServerGamePacketListenerImpl.tick | 7.48% | 0.00% |
Hottest paths
- 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 - 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.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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 | % | |
|---|---|---|
| ServerPlayer | 9.90% | |
| Zombie | 1.94% | |
| Villager | 1.61% | |
| Skeleton | 1.56% | |
| Creeper | 1.55% | |
| EnderMan | 1.54% | |
| Spider | 0.88% | |
| Sheep | 0.72% | |
| Chicken | 0.65% | |
| OldMinecartBehavior | 0.46% | |
| ItemEntity | 0.46% | |
| ThrownEnderpearl | 0.41% | |
| Bee | 0.31% | |
| Frog | 0.30% | |
| Rabbit | 0.18% | |
| Squid | 0.16% | |
| Fox | 0.15% | |
| Inventory | 0.15% | |
| PolarBear | 0.14% | |
| Wolf | 0.13% | |
| EntityEquipment | 0.04% | |
| FireworkRocketEntity | 0.04% | |
| Axolotl | 0.03% | |
| FallingBlockEntity | 0.03% | |
| Cat | 0.03% |
Block entities (by type)
| Type | % | |
|---|---|---|
| BarrelBlockEntity | 1.87% | |
| HopperBlockEntity | 1.79% | |
| ShulkerBoxBlockEntity | 1.14% | |
| SpawnerBlockEntity | 0.57% | |
| BeaconBlockEntity | 0.09% | |
| AbstractFurnaceBlockEntity | 0.06% | |
| VaultBlockEntity | 0.04% | |
| BeehiveBlockEntity | 0.02% | |
| PlayerDetector | 0.02% | |
| BannerBlockEntity | 0.01% | |
| BrewingStandBlockEntity | 0.01% | |
| TrialSpawner | 0.01% | |
| TrialSpawnerStateData | 0.01% | |
| SignBlockEntity | 0.01% | |
| SkullBlockEntity | 0.01% | |
| VaultSharedData | 0.01% | |
| ChestBlockEntity | 0.00% | |
| DecoratedPotBlockEntity | 0.00% | |
| SculkSensorBlockEntity | 0.00% | |
| TrialSpawnerState | 0.00% |
Thread
| Thread | Active | % of sampled | Main work | Note |
|---|---|---|---|---|
| GC Thread (x4) | 7.6 min | 1.55 | 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% | garbage collector |
| G1 Refine (x2) | 3.8 min | 0.77 | 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% | garbage collector |
| DestroyJavaVM | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Notification Thread | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Signal Dispatcher | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| VoiceChatServerThread | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | voicechat |
| java | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| G1 Main Marker | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | garbage collector |
| VM Periodic Tas | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%6.pthread_mutex_unlock 0.01% | |
| VM Thread | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| VirtualThread-unblocker | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%so.JavaThread::threadObj 0.00% | |
| C1 CompilerThre | 1.9 min | 0.39 | native./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 min | 0.39 | 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% | garbage collector |
| Service Thread | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Monitor Deflati | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Async-profiler Timer | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| G1 Service | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | garbage collector |
| C2 CompilerThre | 1.9 min | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 98.9%6.syscall 0.11%so.IndexSetIterator::advance_and_next 0.03% | |
| SKEnderchest-Save | 1.9 min | 0.38 | native.itable stub 16.7%Pattern$BmpCharProperty.match 14.9%Pattern$Branch.match 9.18% | SKEnderchest |
| FileSystemWatchService | 1.9 min | 0.38 | native./usr/lib/x86_64-linux-gnu/libc.so.6 99.7%6.syscall 0.16%so.Dictionary::find_class 0.01% | |
| bStats-Metrics | 1.7 min | 10.1 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%ML_KEM.generateK_PkeKeyPair 0.00% | |
| Server thread | 1.5 min | 0.38 | ||
| Netty Epoll IO (x2) | 57.0 s | 0.76 | native./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 s | 6.19 | native./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 s | 0.38 | so.longest_match 16.9%so.deflate_slow 7.03%SimpleBitStorage.moonrise$countEntries 3.70% | |
| FancyAnalytics-JavaSDK | 16.1 s | 1.55 | native./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 s | 1.55 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Folia Async Scheduler Thread (x4) | 16.0 s | 1.55 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Download (x4) | 12.1 s | 1.55 | native./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 s | 1.55 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100.0%ForkJoinPool.awaitWork 0.03% | |
| FAWE QueueHandler Blocking Executor (x3) | 12.0 s | 1.16 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| [tid=15624] | 8.7 s | 0.03 | native./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-submitter | 8.0 s | 0.77 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| FancyLogger | 8.0 s | 0.77 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Timer (x2) | 8.0 s | 0.77 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| pStats-Metrics | 8.0 s | 0.77 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| SKAuction-Save | 5.5 s | 0.39 | native./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 s | 0.39 | native./usr/lib/x86_64-linux-gnu/libc.so.6 100% | |
| Configuration Thread (x2) | 4.0 s | 0.38 | native./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-serialization | 4.0 s | 0.77 | native./usr/lib/x86_64-linux-gnu/libc.so.6 99.8%MVMap$DecisionMaker.decide 0.10%MVStore.acceptChunkOccupancyChanges 0.10% |
Machine and resources
| CPU | Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz |
|---|---|
| CPU threads | 4 |
| Operating system | Ubuntu 26.04.1 LTS 5.15.0-181-generic (amd64) |
| Java | Eclipse Adoptium 25.0.5 Temurin-25.0.5+8 |
| JVM | OpenJDK 64-Bit Server VM Eclipse Adoptium 25.0.5+8-LTS |
| System uptime | 16h 02m |
| Resource | Value | |
|---|---|---|
| CPU process | 70% (1m) / 61% (15m) | |
| CPU system | 70% (1m) / 61% (15m) | |
| RAM | 113.6 GB / 125.7 GB | |
| Disk | 376.4 GB / 409.4 GB | |
| Heap | 5.7 GB / 12.0 GB | |
| Non-heap | 0.6 GB | |
| GC G1 Concurrent GC | 2 collections, 20.5 ms avg, every 8h 00m | |
| GC G1 Young Generation | 9 collections, 139.3 ms avg, every 1h 46m | |
| Net eth0 | rx 0.13 MB/s, tx 0.48 MB/s | |
| Net lo | rx 0.00 MB/s, tx 0.00 MB/s |
World
| World | x | z | Entities | Main types | Teleport |
|---|---|---|---|---|---|
| world | -13272 | 14440 | 13450 | item 13450 | /tp @s -13272 100 14440 |
| world | -13288 | 14440 | 1878 | item 1877, hopper_minecart 1 | /tp @s -13288 100 14440 |
| Spawn | 232 | -24 | 30 | armor_stand 30 | /tp @s 232 100 -24 |
| Spawn | 200 | -8 | 27 | armor_stand 27 | /tp @s 200 100 -8 |
| Spawn | 344 | 40 | 27 | armor_stand 27 | /tp @s 344 100 40 |
| Spawn | 280 | 24 | 26 | armor_stand 26 | /tp @s 280 100 24 |
| world | -12680 | -8824 | 25 | item 25 | /tp @s -12680 100 -8824 |
| Spawn | 360 | -24 | 23 | armor_stand 23 | /tp @s 360 100 -24 |
| Spawn | 216 | 72 | 21 | armor_stand 21 | /tp @s 216 100 72 |
| Spawn | 344 | 72 | 21 | armor_stand 21 | /tp @s 344 100 72 |
| world | -1864 | 14712 | 20 | armor_stand 10, item_frame 10 | /tp @s -1864 100 14712 |
| Spawn | 184 | -8 | 18 | armor_stand 18 | /tp @s 184 100 -8 |
| Spawn | 328 | 72 | 15 | armor_stand 15 | /tp @s 328 100 72 |
| Spawn | 328 | 24 | 15 | armor_stand 15 | /tp @s 328 100 24 |
| Spawn | 328 | 40 | 15 | armor_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