Direct answer
TPS measures how many ticks the server completes per second; MSPT measures time spent processing a tick. At a target of 20 TPS, there are about 50 ms available per tick. A server may report 20 TPS with just 10 ms average MSPT, or with 45 ms and almost no headroom.
How to check it
- Use
/spark tpsto see recent tick rates and use a spark report/health dashboard for deeper context. Paper also has/tpsand/mspt, but the docs recommend spark. - Compare the period reported: TPS averaged across minutes can miss individual tick stalls, while a profiler shows sampled activity during its own capture window.
- If MSPT regularly exceeds the 50 ms budget on a conventional 20-TPS tick loop, sustained TPS can fall below 20.
- If TPS stays at 20 but players notice freezes, inspect maximum or percentile tick times with a profile or tick monitor.
- When tick times are healthy, investigate client FPS, network ping and packet loss rather than calling all symptoms server TPS lag.
What to change
- Fix the dominant cost shown by the profiler, not an arbitrary target number of plugins or entities.
- Capture data with a comparable player count, chunk state and automation load.
- Use TPS for sustained severity and MSPT distribution for tick headroom and spikes.
Software and version notes
These interpretations describe conventional Paper tick processing. Folia operates regionized tick loops; per-region profiling matters. Proxy ping metrics do not replace server TPS/MSPT.
Verify the result
- Before/after: compare TPS, typical MSPT, long-tick spikes and the same player action.
- Do not report “fixed” solely because TPS reads 20 when spikes remain.