Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ensure-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ jobs:
{ name: "performance-region-fingerprint", color: "bfdadc", description: "Use the table region fingerprint performance profile" },
{ name: "performance-display-spawn", color: "bfdadc", description: "Use the display entity spawn performance profile" },
{ name: "performance-region-queue", color: "bfdadc", description: "Use the region update queue performance profile" },
{ name: "performance-scheduler-reflection", color: "bfdadc", description: "Use the scheduler reflection performance profile" },
{ name: "performance-ray-proxy", color: "bfdadc", description: "Use the client ray-proxy performance profile" }
];

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/performance-ab.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ on:
- region-fingerprint
- display-spawn
- region-queue
- scheduler-reflection
- ray-proxy
- infra
forks:
Expand Down Expand Up @@ -163,6 +164,7 @@ jobs:
"performance-region-fingerprint": "region-fingerprint",
"performance-display-spawn": "display-spawn",
"performance-region-queue": "region-queue",
"performance-scheduler-reflection": "scheduler-reflection",
"performance-ray-proxy": "ray-proxy",
}
selected = [profile for label, profile in choices.items() if label in labels]
Expand Down
2 changes: 2 additions & 0 deletions docs/performance-testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ and exactly one profile label to a pure performance PR:
- `performance-region-fingerprint` - a real started-table snapshot and layout, measuring the
complete region map plus a batch of private/public hands, discards, melds and all 136 wall
slots;
- `performance-scheduler-reflection` - representative global, region and entity scheduling
bursts through both Folia-style reflective capabilities and standard Paper fallbacks;
- `performance-ray-proxy` - 1, 4 and 32-viewer coordinator lifecycle and unchanged-geometry
reuse. This CPU/allocation profile does not measure protocol bytes or client hit coverage.

Expand Down
41 changes: 41 additions & 0 deletions perf/ab/gate-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,23 @@
"top/ellan/mahjong/table/render/TableRegionDisplayCoordinator.class"
]
},
"scheduler-reflection": {
"include": "^top\\.ellan\\.mahjong\\.perf\\.ServerSchedulerReflectionBenchmark\\.schedule(?:Folia|Paper)Burst$",
"benchmark_ids": [
"scheduler.folia.time",
"scheduler.folia.alloc",
"scheduler.paper.time",
"scheduler.paper.alloc"
],
"minimum_passes": 2,
"must_pass": [
"scheduler.folia.time",
"scheduler.paper.time"
],
"required_classes": [
"top/ellan/mahjong/runtime/ServerScheduler.class"
]
},
"ray-proxy": {
"include": "^top\\.ellan\\.mahjong\\.perf\\.RayProxyCoordinatorBenchmark\\.proxyPlan(?:1Viewer|4Viewers|32Viewers)$",
"benchmark_ids": [
Expand Down Expand Up @@ -291,6 +308,30 @@
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "scheduler.folia.time",
"benchmark": "top.ellan.mahjong.perf.ServerSchedulerReflectionBenchmark.scheduleFoliaBurst",
"metric": "primary",
"direction": "lower"
},
{
"id": "scheduler.folia.alloc",
"benchmark": "top.ellan.mahjong.perf.ServerSchedulerReflectionBenchmark.scheduleFoliaBurst",
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "scheduler.paper.time",
"benchmark": "top.ellan.mahjong.perf.ServerSchedulerReflectionBenchmark.schedulePaperBurst",
"metric": "primary",
"direction": "lower"
},
{
"id": "scheduler.paper.alloc",
"benchmark": "top.ellan.mahjong.perf.ServerSchedulerReflectionBenchmark.schedulePaperBurst",
"metric": "gc.alloc.rate.norm",
"direction": "lower"
},
{
"id": "ray.viewers1.time",
"benchmark": "top.ellan.mahjong.perf.RayProxyCoordinatorBenchmark.proxyPlan1Viewer",
Expand Down
Loading