Load test of 1000 players on the server: CPU is the ceiling (~135 req/s); player-simulation tools
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
13
tools/loadtest/agg.py
Normal file
13
tools/loadtest/agg.py
Normal file
@@ -0,0 +1,13 @@
|
||||
import json, sys, glob, collections
|
||||
recs = [r for f in sorted(glob.glob(sys.argv[1])) for r in json.load(open(f))]
|
||||
dur = dict(x.split(':') for x in sys.argv[2].split(','))
|
||||
q = lambda a, p: round(a[min(len(a) - 1, int(p * len(a)))] * 1000) if a else None
|
||||
for stage in dur:
|
||||
mine = [r for r in recs if r[0] == stage]
|
||||
lat = sorted(r[3] for r in mine if r[1] != 'ai/ask')
|
||||
codes = collections.Counter(str(r[2]) for r in mine)
|
||||
per = collections.defaultdict(list)
|
||||
for r in mine: per[r[1]].append(r[3])
|
||||
print(json.dumps({'users': int(stage), 'requests': len(lat), 'rps': round(len(lat) / int(dur[stage]), 1), 'p50_ms': q(lat, .5), 'p95_ms': q(lat, .95),
|
||||
'p99_ms': q(lat, .99), 'max_ms': q(lat, 1), 'codes': dict(codes),
|
||||
'per': {k: {'n': len(v), 'p50': q(sorted(v), .5), 'p95': q(sorted(v), .95)} for k, v in per.items()}}, ensure_ascii=False))
|
||||
Reference in New Issue
Block a user