# Performance Generated by `tools/perf_test.py`: the island world template, a 6G heap, 120 s to settle, then 180 s measured tick by tick with spark profiling the server thread. Players are the self-tests' fake clients: the server ticks them, loads their chunks and spawns Pokémon around them. One walks a long ring round the island when there are several. They send and encode no packets and fight no battles, so read this as the cost of the world, not of the network. A tick has 50 ms; over that, the server falls behind. | Scenario | Players | Pastures × Pokémon each | Machines each | Mean tick | p95 | p99 | Worst | Ticks over 50 ms | Pokémon pastured / wild | Working machines | Loaded chunks | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | solo | 1 | 0 × 0 | 0 | 4.6 ms | 6.4 ms | 9.8 ms | 216 ms | 1 of 3900 | 0 / 18 | 0 of 0 | 2731 | | group | 5 | 4 × 8 | 5 | 19.2 ms | 25.7 ms | 33.3 ms | 269 ms | 2 of 3900 | 113 / 175 | 16 of 25 | 8704 | | stress | 8 | 6 × 16 | 10 | 38.3 ms | 50.4 ms | 54.9 ms | 322 ms | 215 of 3900 | 558 / 246 | 46 of 80 | 10763 | ## Where the server thread's busy time goes: solo | Part | Share | | --- | --- | | Minecraft | 46.2 % | | Other mods | 39.0 % | | JVM and Kotlin | 11.4 % | | Cobblemon | 3.1 % | | Companion mod | 0.3 % | Companion mod, heaviest methods including what they call: - `dev.cobblesurvival.selftest.PerfLoad$$Lambda.0x000000080138d638.accept`: 2.02 % - `dev.cobblesurvival.selftest.PerfLoad.register$onTickDone`: 2.00 % - `dev.cobblesurvival.selftest.PerfLoad.onTickDone`: 2.00 % - `dev.cobblesurvival.progress.HmsGate$$Lambda.0x0000000801380c60.accept`: 0.12 % - `dev.cobblesurvival.progress.HmsGate.register$onServerTick`: 0.10 % - `dev.cobblesurvival.progress.HmsGate.onServerTick`: 0.10 % - `dev.cobblesurvival.progress.HmsGate.check`: 0.07 % - `dev.cobblesurvival.progress.QuestEvents$$Lambda.0x000000080137b338.accept`: 0.07 % ## Where the server thread's busy time goes: group | Part | Share | | --- | --- | | Minecraft | 61.4 % | | Other mods | 20.6 % | | JVM and Kotlin | 13.2 % | | Cobblemon | 4.5 % | | Companion mod | 0.2 % | Companion mod, heaviest methods including what they call: - `dev.cobblesurvival.selftest.PerfLoad$$Lambda.0x0000000801394200.accept`: 1.34 % - `dev.cobblesurvival.selftest.PerfLoad.register$onTickDone`: 1.32 % - `dev.cobblesurvival.selftest.PerfLoad.onTickDone`: 1.32 % - `dev.cobblesurvival.selftest.PerfLoad.walk`: 0.24 % - `dev.cobblesurvival.machine.MachineBlock$$Lambda.0x00000008022acee8.tick`: 0.13 % - `dev.cobblesurvival.machine.MachineBlock.getTicker$lambda$1`: 0.13 % - `dev.cobblesurvival.machine.MachineBlockEntity.serverTick`: 0.13 % - `dev.cobblesurvival.progress.CobblebaseGate$Gate.invoke`: 0.08 % ## Where the server thread's busy time goes: stress | Part | Share | | --- | --- | | Minecraft | 58.4 % | | Other mods | 18.9 % | | JVM and Kotlin | 17.0 % | | Cobblemon | 5.5 % | | Companion mod | 0.2 % | Companion mod, heaviest methods including what they call: - `dev.cobblesurvival.selftest.PerfLoad$$Lambda.0x0000000801386618.accept`: 1.02 % - `dev.cobblesurvival.selftest.PerfLoad.register$onTickDone`: 1.02 % - `dev.cobblesurvival.selftest.PerfLoad.onTickDone`: 1.02 % - `dev.cobblesurvival.machine.MachineBlock$$Lambda.0x00000008022c2988.tick`: 0.31 % - `dev.cobblesurvival.machine.MachineBlock.getTicker$lambda$1`: 0.30 % - `dev.cobblesurvival.machine.MachineBlockEntity.serverTick`: 0.30 % - `dev.cobblesurvival.selftest.PerfLoad.walk`: 0.27 % - `dev.cobblesurvival.machine.MachineWork.tick`: 0.15 %