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

  1. Use /spark tps to see recent tick rates and use a spark report/health dashboard for deeper context. Paper also has /tps and /mspt, but the docs recommend spark.
  2. Compare the period reported: TPS averaged across minutes can miss individual tick stalls, while a profiler shows sampled activity during its own capture window.
  3. If MSPT regularly exceeds the 50 ms budget on a conventional 20-TPS tick loop, sustained TPS can fall below 20.
  4. If TPS stays at 20 but players notice freezes, inspect maximum or percentile tick times with a profile or tick monitor.
  5. 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.

References