{ "kind": "horizon-server-benchmark", "date": "2026-10-18T19:32:00+00:00", "machine": { "system": "Linux", "machine": "x86_64", "cpus": 4, "name": "ThinkPad, Intel Core i7-7500U, 32 GB, NixOS" }, "commit": "f1d5bf520986b00a5b968a84d85809fca1a039fa", "engine": "horizon-engine: the server build of #916 (horizon-client --no-default-features) at 519ec121, as install.sh --archive installed it", "java": [ "openjdk 25.0.4.1 2026-08-18" ], "settings": { "servers": "horizon,vanilla", "bots": "1,10,25,50", "behaviour": "mixed", "join_every": 1.0, "warmup": 300, "seconds": 300, "seed": 12345, "explore_speed": 0.8, "gamerule": "", "heap": "4g", "nice": 19, "bots_via": "ssh macmini", "connect": "the ThinkPad's tailnet address", "properties": { "level-seed": "12345", "view-distance": "10", "simulation-distance": "10", "online-mode": "false", "white-list": "false", "gamemode": "creative", "force-gamemode": "true", "spawn-protection": "0", "max-players": "200", "difficulty": "easy", "sync-chunk-writes": "true" } }, "note": "server_bench.py was stopped after vanilla's 50-bot server crashed, before it wrote this file; the runs are the lines it printed, and the vanilla 50 entry is taken from that server's log.", "runs": [ { "server": "horizon", "bots": 1, "behaviour": "mixed", "start_seconds": 19.73, "mspt": { "average": 1.77, "p50": 1.34, "p95": 4.21, "p99": 13.04 }, "mspt_worst_p99": 47.5, "tps": 20.0, "rss_mb": { "mean": 686.54, "max": 686.7 }, "cpu_percent": 27.92, "chunks_per_second": 9.94, "unique_per_second": 0.01, "forgotten_per_second": 9.9, "waited_ticks_per_second": 0.0, "chunks_total": 6092, "chunks_per_bot": { "walk": 6092.0 }, "unique_chunks_per_bot": { "walk": 699.0 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 1, "bots_failed": [], "tick_queries": 58 }, { "server": "vanilla", "bots": 1, "behaviour": "mixed", "start_seconds": 20.45, "mspt": { "average": 11.34, "p50": 10.6, "p95": 17.12, "p99": 33.22 }, "mspt_worst_p99": 119.1, "tps": 20.0, "rss_mb": { "mean": 3404.16, "max": 3416.3 }, "cpu_percent": 35.93, "chunks_per_second": 9.98, "unique_per_second": 0.01, "forgotten_per_second": 9.93, "waited_ticks_per_second": 0.0, "chunks_total": 6084, "chunks_per_bot": { "walk": 6084.0 }, "unique_chunks_per_bot": { "walk": 699.0 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 1, "bots_failed": [], "tick_queries": 59 }, { "server": "horizon", "bots": 10, "behaviour": "mixed", "start_seconds": 19.54, "mspt": { "average": 4.74, "p50": 3.83, "p95": 10.48, "p99": 19.69 }, "mspt_worst_p99": 120.1, "tps": 20.0, "rss_mb": { "mean": 855.26, "max": 882.7 }, "cpu_percent": 29.78, "chunks_per_second": 61.35, "unique_per_second": 1.79, "forgotten_per_second": 61.47, "waited_ticks_per_second": 0.0, "chunks_total": 40762, "chunks_per_bot": { "walk": 6247.67, "explore": 1165.0, "idle": 473.0 }, "unique_chunks_per_bot": { "walk": 701.83, "explore": 1086.0, "idle": 473.0 }, "resent": 0, "pulled_back": 4159, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 10, "bots_failed": [], "tick_queries": 58 }, { "server": "vanilla", "bots": 10, "behaviour": "mixed", "start_seconds": 19.95, "mspt": { "average": 34.3, "p50": 32.2, "p95": 53.72, "p99": 89.08 }, "mspt_worst_p99": 375.8, "tps": 20.0, "rss_mb": { "mean": 3713.5, "max": 3754.9 }, "cpu_percent": 128.07, "chunks_per_second": 61.66, "unique_per_second": 1.93, "forgotten_per_second": 61.71, "waited_ticks_per_second": 0.0, "chunks_total": 37568, "chunks_per_bot": { "walk": 5729.0, "explore": 1124.0, "idle": 473.0 }, "unique_chunks_per_bot": { "walk": 701.17, "explore": 1055.0, "idle": 473.0 }, "resent": 0, "pulled_back": 3976, "moved_too_quickly": 20, "moved_wrongly": 0, "bots_joined": 10, "bots_failed": [], "tick_queries": 58 }, { "server": "horizon", "bots": 25, "behaviour": "mixed", "start_seconds": 9.61, "mspt": { "average": 11.72, "p50": 9.88, "p95": 24.45, "p99": 43.79 }, "mspt_worst_p99": 129.8, "tps": 20.0, "rss_mb": { "mean": 947.35, "max": 1086.1 }, "cpu_percent": 57.83, "chunks_per_second": 158.57, "unique_per_second": 5.78, "forgotten_per_second": 158.45, "waited_ticks_per_second": 0.0, "chunks_total": 108126, "chunks_per_bot": { "walk": 6628.53, "explore": 1266.6, "idle": 473.0 }, "unique_chunks_per_bot": { "walk": 704.67, "explore": 1189.2, "idle": 473.0 }, "resent": 0, "pulled_back": 3496, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 25, "bots_failed": [], "tick_queries": 58 }, { "server": "vanilla", "bots": 25, "behaviour": "mixed", "start_seconds": 37.78, "mspt": { "average": 50.45, "p50": 46.39, "p95": 74.09, "p99": 191.21 }, "mspt_worst_p99": 1388.1, "tps": 19.82, "rss_mb": { "mean": 3866.18, "max": 4745.0 }, "cpu_percent": 192.42, "chunks_per_second": 157.63, "unique_per_second": 8.25, "forgotten_per_second": 156.12, "waited_ticks_per_second": 0.0, "chunks_total": 88763, "chunks_per_bot": { "walk": 5387.0, "explore": 1118.6, "idle": 473.0 }, "unique_chunks_per_bot": { "walk": 699.0, "explore": 1075.0, "idle": 473.0 }, "resent": 2, "pulled_back": 3629, "moved_too_quickly": 296, "moved_wrongly": 0, "bots_joined": 25, "bots_failed": [], "tick_queries": 58 }, { "server": "horizon", "bots": 50, "behaviour": "mixed", "start_seconds": 14.93, "mspt": { "average": 23.82, "p50": 20.11, "p95": 50.98, "p99": 74.64 }, "mspt_worst_p99": 195.9, "tps": 20.0, "rss_mb": { "mean": 1031.41, "max": 1201.2 }, "cpu_percent": 98.21, "chunks_per_second": 302.81, "unique_per_second": 10.96, "forgotten_per_second": 303.47, "waited_ticks_per_second": 0.0, "chunks_total": 212181, "chunks_per_bot": { "walk": 6496.53, "explore": 1255.5, "idle": 473.0 }, "unique_chunks_per_bot": { "walk": 701.9, "explore": 1184.7, "idle": 473.0 }, "resent": 0, "pulled_back": 7565, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 50, "bots_failed": [], "tick_queries": 58 }, { "server": "vanilla", "bots": 50, "behaviour": "mixed", "start_seconds": 11.16, "error": "stopped by its watchdog 30 s after the last bot joined: \"A single server tick took 60.01 seconds (should be max 0.05)\" (Player.tick)" } ], "work": [ { "behaviour": "mixed", "bots": 1, "servers": { "horizon": { "chunks_per_second": { "value": 9.94, "share": 0.996 }, "unique_per_second": { "value": 0.01, "share": 1.0 }, "waited_ticks_per_second": 0.0 }, "vanilla": { "chunks_per_second": { "value": 9.98, "share": 1.0 }, "unique_per_second": { "value": 0.01, "share": 1.0 }, "waited_ticks_per_second": 0.0 } }, "equal": true }, { "behaviour": "mixed", "bots": 10, "servers": { "horizon": { "chunks_per_second": { "value": 61.35, "share": 0.995 }, "unique_per_second": { "value": 1.79, "share": 0.927 }, "waited_ticks_per_second": 0.0 }, "vanilla": { "chunks_per_second": { "value": 61.66, "share": 1.0 }, "unique_per_second": { "value": 1.93, "share": 1.0 }, "waited_ticks_per_second": 0.0 } }, "equal": true }, { "behaviour": "mixed", "bots": 25, "servers": { "horizon": { "chunks_per_second": { "value": 158.57, "share": 1.0 }, "unique_per_second": { "value": 5.78, "share": 0.701 }, "waited_ticks_per_second": 0.0 }, "vanilla": { "chunks_per_second": { "value": 157.63, "share": 0.994 }, "unique_per_second": { "value": 8.25, "share": 1.0 }, "waited_ticks_per_second": 0.0 } }, "equal": false } ] }