{ "kind": "horizon-server-benchmark", "date": "2026-10-17T17:31:40+00:00", "machine": { "system": "Linux", "machine": "x86_64", "cpus": 4 }, "commit": "7bbbf6e97fb53683eae0a01ce2c134e53cb649a7", "java": [ "openjdk 25.0.4.1 2026-08-18" ], "settings": { "servers": "horizon,vanilla", "bots": "1,10,25,50,100", "behaviour": "walk,explore", "join_every": 1.0, "warmup": 60, "seconds": 180, "seed": 12345, "explore_speed": 0, "gamerule": "", "heap": "4g", "out": "/home/ludovic/code/horizon/.claude/worktrees/server-host-4/.local/bench-out/walk-explore.json", "nice": 19, "bots_via": "ssh macmini", "bots_bin": "/Users/ludovicmarie/code/horizon/.claude/worktrees/server-host-4/target/release/horizon-bots", "connect": "", "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" } }, "runs": [ { "server": "horizon", "bots": 1, "behaviour": "walk", "start_seconds": 9.62, "mspt": { "average": 4.01, "p50": 3.54, "p95": 8.19, "p99": 25.59 }, "mspt_worst_p99": 47.5, "tps": 20.0, "rss_mb": { "mean": 782.52, "max": 785.3 }, "cpu_percent": 58.87, "chunks_per_second": 9.6, "unique_per_second": 0.43, "forgotten_per_second": 9.65, "waited_ticks_per_second": 0.0, "chunks_total": 2697, "chunks_per_bot": { "walk": 2697.0 }, "unique_chunks_per_bot": { "walk": 693.0 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 1, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 1, "behaviour": "walk", "start_seconds": 14.85, "mspt": { "average": 18.22, "p50": 17.99, "p95": 29.34, "p99": 50.06 }, "mspt_worst_p99": 395.5, "tps": 20.0, "rss_mb": { "mean": 3429.06, "max": 3446.3 }, "cpu_percent": 68.81, "chunks_per_second": 10.47, "unique_per_second": 0.47, "forgotten_per_second": 10.53, "waited_ticks_per_second": 0.0, "chunks_total": 2755, "chunks_per_bot": { "walk": 2755.0 }, "unique_chunks_per_bot": { "walk": 697.0 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 1, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 10, "behaviour": "walk", "start_seconds": 9.21, "mspt": { "average": 8.79, "p50": 8.05, "p95": 17.35, "p99": 30.47 }, "mspt_worst_p99": 48.8, "tps": 20.0, "rss_mb": { "mean": 781.88, "max": 782.8 }, "cpu_percent": 119.16, "chunks_per_second": 94.63, "unique_per_second": 3.58, "forgotten_per_second": 94.31, "waited_ticks_per_second": 0.0, "chunks_total": 26003, "chunks_per_bot": { "walk": 2600.3 }, "unique_chunks_per_bot": { "walk": 679.9 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 10, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 10, "behaviour": "walk", "start_seconds": 15.14, "mspt": { "average": 18.67, "p50": 15.8, "p95": 38.26, "p99": 55.93 }, "mspt_worst_p99": 101.8, "tps": 20.0, "rss_mb": { "mean": 3497.35, "max": 3499.4 }, "cpu_percent": 100.8, "chunks_per_second": 101.1, "unique_per_second": 4.38, "forgotten_per_second": 101.15, "waited_ticks_per_second": 0.0, "chunks_total": 26537, "chunks_per_bot": { "walk": 2653.7 }, "unique_chunks_per_bot": { "walk": 687.5 }, "resent": 0, "pulled_back": 5, "moved_too_quickly": 5, "moved_wrongly": 0, "bots_joined": 10, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 25, "behaviour": "walk", "start_seconds": 9.82, "mspt": { "average": 15.01, "p50": 13.12, "p95": 31.12, "p99": 50.62 }, "mspt_worst_p99": 101.6, "tps": 20.0, "rss_mb": { "mean": 799.52, "max": 799.7 }, "cpu_percent": 161.02, "chunks_per_second": 234.3, "unique_per_second": 8.49, "forgotten_per_second": 234.35, "waited_ticks_per_second": 0.0, "chunks_total": 65926, "chunks_per_bot": { "walk": 2637.04 }, "unique_chunks_per_bot": { "walk": 683.96 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 25, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 25, "behaviour": "walk", "start_seconds": 14.95, "mspt": { "average": 18.78, "p50": 17.47, "p95": 28.16, "p99": 51.03 }, "mspt_worst_p99": 107.6, "tps": 20.0, "rss_mb": { "mean": 3520.17, "max": 3573.8 }, "cpu_percent": 154.9, "chunks_per_second": 252.39, "unique_per_second": 11.89, "forgotten_per_second": 251.75, "waited_ticks_per_second": 0.0, "chunks_total": 66469, "chunks_per_bot": { "walk": 2658.76 }, "unique_chunks_per_bot": { "walk": 689.68 }, "resent": 0, "pulled_back": 10, "moved_too_quickly": 10, "moved_wrongly": 0, "bots_joined": 25, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 50, "behaviour": "walk", "start_seconds": 9.52, "mspt": { "average": 22.72, "p50": 16.98, "p95": 60.19, "p99": 84.16 }, "mspt_worst_p99": 105.4, "tps": 20.0, "rss_mb": { "mean": 813.5, "max": 815.8 }, "cpu_percent": 179.85, "chunks_per_second": 464.75, "unique_per_second": 16.94, "forgotten_per_second": 464.69, "waited_ticks_per_second": 0.0, "chunks_total": 134839, "chunks_per_bot": { "walk": 2696.78 }, "unique_chunks_per_bot": { "walk": 685.48 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 50, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 50, "behaviour": "walk", "start_seconds": 16.36, "mspt": { "average": 34.3, "p50": 31.07, "p95": 55.55, "p99": 92.32 }, "mspt_worst_p99": 452.1, "tps": 20.0, "rss_mb": { "mean": 3577.02, "max": 3611.2 }, "cpu_percent": 267.05, "chunks_per_second": 496.77, "unique_per_second": 26.74, "forgotten_per_second": 496.2, "waited_ticks_per_second": 0.0, "chunks_total": 133505, "chunks_per_bot": { "walk": 2670.1 }, "unique_chunks_per_bot": { "walk": 688.8 }, "resent": 0, "pulled_back": 39, "moved_too_quickly": 39, "moved_wrongly": 0, "bots_joined": 50, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 100, "behaviour": "walk", "start_seconds": 9.51, "mspt": { "average": 63.33, "p50": 58.89, "p95": 125.04, "p99": 175.12 }, "mspt_worst_p99": 261.5, "tps": 15.79, "rss_mb": { "mean": 868.12, "max": 869.9 }, "cpu_percent": 245.64, "chunks_per_second": 678.18, "unique_per_second": 31.8, "forgotten_per_second": 676.4, "waited_ticks_per_second": 0.0, "chunks_total": 219787, "chunks_per_bot": { "walk": 2197.87 }, "unique_chunks_per_bot": { "walk": 637.91 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 100, "bots_failed": [], "tick_queries": 34 }, { "server": "vanilla", "bots": 100, "behaviour": "walk", "start_seconds": 15.14, "error": "[Errno 32] Broken pipe" }, { "server": "horizon", "bots": 1, "behaviour": "explore", "start_seconds": 9.72, "mspt": { "average": 9.73, "p50": 8.75, "p95": 20.99, "p99": 34.17 }, "mspt_worst_p99": 73.9, "tps": 20.0, "rss_mb": { "mean": 836.18, "max": 891.0 }, "cpu_percent": 329.64, "chunks_per_second": 41.11, "unique_per_second": 35.96, "forgotten_per_second": 41.08, "waited_ticks_per_second": 0.16, "chunks_total": 9460, "chunks_per_bot": { "explore": 9460.0 }, "unique_chunks_per_bot": { "explore": 8479.0 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 1, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 1, "behaviour": "explore", "start_seconds": 15.54, "mspt": { "average": 9.71, "p50": 7.86, "p95": 20.37, "p99": 76.15 }, "mspt_worst_p99": 388.6, "tps": 20.0, "rss_mb": { "mean": 3614.97, "max": 3688.5 }, "cpu_percent": 247.15, "chunks_per_second": 35.47, "unique_per_second": 33.61, "forgotten_per_second": 35.45, "waited_ticks_per_second": 0.0, "chunks_total": 7912, "chunks_per_bot": { "explore": 7912.0 }, "unique_chunks_per_bot": { "explore": 7580.0 }, "resent": 0, "pulled_back": 0, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 1, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 10, "behaviour": "explore", "start_seconds": 9.31, "mspt": { "average": 21.27, "p50": 19.5, "p95": 39.15, "p99": 54.23 }, "mspt_worst_p99": 105.5, "tps": 20.0, "rss_mb": { "mean": 1177.66, "max": 1392.9 }, "cpu_percent": 321.97, "chunks_per_second": 46.47, "unique_per_second": 46.11, "forgotten_per_second": 43.12, "waited_ticks_per_second": 111.25, "chunks_total": 14103, "chunks_per_bot": { "explore": 1410.3 }, "unique_chunks_per_bot": { "explore": 1402.4 }, "resent": 0, "pulled_back": 9856, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 10, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 10, "behaviour": "explore", "start_seconds": 15.24, "mspt": { "average": 16.94, "p50": 14.24, "p95": 30.28, "p99": 109.7 }, "mspt_worst_p99": 1861.2, "tps": 20.0, "rss_mb": { "mean": 3953.29, "max": 4232.0 }, "cpu_percent": 254.11, "chunks_per_second": 24.99, "unique_per_second": 25.01, "forgotten_per_second": 25.33, "waited_ticks_per_second": 77.93, "chunks_total": 7707, "chunks_per_bot": { "explore": 770.7 }, "unique_chunks_per_bot": { "explore": 769.5 }, "resent": 0, "pulled_back": 11123, "moved_too_quickly": 20, "moved_wrongly": 0, "bots_joined": 10, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 25, "behaviour": "explore", "start_seconds": 9.92, "mspt": { "average": 25.76, "p50": 23.58, "p95": 45.01, "p99": 61.43 }, "mspt_worst_p99": 108.8, "tps": 20.0, "rss_mb": { "mean": 1172.1, "max": 1482.3 }, "cpu_percent": 314.47, "chunks_per_second": 61.38, "unique_per_second": 60.7, "forgotten_per_second": 55.11, "waited_ticks_per_second": 304.54, "chunks_total": 24085, "chunks_per_bot": { "explore": 963.4 }, "unique_chunks_per_bot": { "explore": 954.76 }, "resent": 0, "pulled_back": 31264, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 25, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 25, "behaviour": "explore", "start_seconds": 15.76, "mspt": { "average": 24.93, "p50": 22.04, "p95": 37.09, "p99": 168.46 }, "mspt_worst_p99": 1724.8, "tps": 20.0, "rss_mb": { "mean": 4040.42, "max": 4447.6 }, "cpu_percent": 305.47, "chunks_per_second": 37.91, "unique_per_second": 37.84, "forgotten_per_second": 38.39, "waited_ticks_per_second": 258.66, "chunks_total": 16865, "chunks_per_bot": { "explore": 674.6 }, "unique_chunks_per_bot": { "explore": 671.28 }, "resent": 0, "pulled_back": 33467, "moved_too_quickly": 23, "moved_wrongly": 0, "bots_joined": 25, "bots_failed": [], "tick_queries": 35 }, { "server": "horizon", "bots": 50, "behaviour": "explore", "start_seconds": 9.41, "mspt": { "average": 39.31, "p50": 36.98, "p95": 65.33, "p99": 88.36 }, "mspt_worst_p99": 157.6, "tps": 20.0, "rss_mb": { "mean": 1250.32, "max": 1517.1 }, "cpu_percent": 324.77, "chunks_per_second": 114.99, "unique_per_second": 112.25, "forgotten_per_second": 104.41, "waited_ticks_per_second": 543.77, "chunks_total": 50402, "chunks_per_bot": { "explore": 1008.04 }, "unique_chunks_per_bot": { "explore": 997.42 }, "resent": 0, "pulled_back": 64163, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 50, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 50, "behaviour": "explore", "start_seconds": 14.55, "error": "[Errno 32] Broken pipe" }, { "server": "horizon", "bots": 100, "behaviour": "explore", "start_seconds": 9.31, "mspt": { "average": 52.7, "p50": 49.49, "p95": 85.73, "p99": 115.34 }, "mspt_worst_p99": 219.0, "tps": 18.97, "rss_mb": { "mean": 1358.32, "max": 3047.2 }, "cpu_percent": 327.95, "chunks_per_second": 154.2, "unique_per_second": 151.83, "forgotten_per_second": 141.65, "waited_ticks_per_second": 1132.9, "chunks_total": 84433, "chunks_per_bot": { "explore": 844.33 }, "unique_chunks_per_bot": { "explore": 839.47 }, "resent": 0, "pulled_back": 116161, "moved_too_quickly": 0, "moved_wrongly": 0, "bots_joined": 100, "bots_failed": [], "tick_queries": 35 }, { "server": "vanilla", "bots": 100, "behaviour": "explore", "start_seconds": 16.47, "error": "[Errno 32] Broken pipe" } ] }