Skip to content

chore: instrument AltTester main-thread stalls - #10041

Draft
mikhail-dcl wants to merge 1 commit into
devfrom
chore/alttester-main-thread-diagnostics
Draft

mikhail-dcl wants to merge 1 commit into
devfrom
chore/alttester-main-thread-diagnostics

Conversation

@mikhail-dcl

Copy link
Copy Markdown
Collaborator

What does this PR change?

Pin the AltTester fork to 0aa90e29, adding opt-in background main-thread stage diagnostics to distinguish screenshot capture/encoding from socket-send stalls. Based on Explorer 9d6e552 for comparison with the measured failing build; SDK Unity 6.5 compatibility remains intact and upstream PR1984 is unchanged. Diagnostic only; no stall fix claimed.

Test Instructions

In PowerShell, set $env:ALTTESTER_MAIN_THREAD_DIAGNOSTICS='1', then run this PR's Windows build with the InWorld suite. Inspect %USERPROFILE%/AppData/LocalLow/Decentraland/Explorer/AltTesterMainThread.tsv alongside the Player log and per-test performance report. During a stall, compare heartbeat age, active stage and pending frame wait; without the environment variable, no watchdog should start.

Validation: SDK's 15 source-linked diagnostic assertions passed; manifest and lock pin match. Unity build and CI reproduction pending.

Quality Checklist

  • SDK diagnostic core tested locally; package pins validated
  • Enablement and interpretation documented in the SDK
  • Diagnostics default off; output bounded; no payload logging
  • Windows player compilation and InWorld diagnostic run

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

🚦 CI Status

Build

Windows and Mac built successfully in Unity Cloud.

Name Links & timing
Build 67fab74 · Logs · built 2026-09-09T20:50:49Z
Windows GitHub job · Unity Cloud #3 · Unity log · ⏱ 1h 1m build + 2h 45m queue · Download .zip · .zip via S3
Mac .zip via S3

Lint

No C# files changed — lint ratchet skipped.

Tests

Waiting for tests to start…

Performance

🏁 Bare-metal benchmark finished — run #34403549655.

Full report

PR #10041, run #34403549655

Overall: ✅ no significant changes

Builds: Windows change, Windows baseline, macOS change, macOS baseline

How to read this table
  • Each build is measured 3 times, interleaved with the other build (change, baseline, change, baseline, ...) in the same session, so both see the same world content and machine state. The values are the median, and (min–max) is the lowest and highest of those runs.
  • Δ is Change minus Baseline (a negative Δ means Change is faster).
  • 🟢 faster / 🔴 slower — a difference that passed every check: the runs are fully separated (every run of one build faster than every run of the other), and the median difference is at least 3% and at least 0.5 ms.
  • ⚪ within noise — the builds' runs overlap, or the difference is tiny; it cannot be told apart from random variation. Treat it as no change.
  • — informational — the 0.1% worst metrics average only the few worst frames of a run, so a single OS hiccup swings them by a lot; they are shown for context and never earn a verdict.
  • ⚠️ no verdict — the two builds' sessions were not comparable (very different sample counts, or too few usable runs), so no conclusion is drawn from them.
  • Exceptions per run — the average number of exceptions in a run's log, not counting teardown ones logged while the app quits. Flagged only on a difference of at least 2 per run and 1.5× the other build; exception kinds the baseline never threw are called out under the table. The Exception breakdown groups all of them by the explorer's report category and exception type (as totals across the runs).
  • A run that logged unusually many exceptions (at least 10 and 5× the median of its build's runs — e.g. a service was down during it) is excluded from all numbers and called out under the table.
  • The Overall line at the top only reacts to a metric that moved on two or more machines, or by 10% or more on one — a single modest 🟢/🔴 cell can still be a statistical fluke.

Intel Core i5

Metric Baseline Change Δ Result
Samples 5485 (×3) 5482 (×3)
CPU average 16.4 ms (16.3–16.4) 16.4 ms (15.7–16.9) 0.0 ms ⚪ within noise
CPU 1% worst 37.2 ms (35.6–38.0) 36.1 ms (34.6–41.6) -1.1 ms ⚪ within noise
CPU 0.1% worst 92.8 ms (91.6–97.5) 93.0 ms (89.0–119.0) 0.2 ms — informational
GPU average 10.9 ms (10.7–10.9) 10.9 ms (10.3–11.4) -0.0 ms ⚪ within noise
GPU 1% worst 23.3 ms (23.1–23.3) 22.1 ms (22.1–23.8) -1.2 ms ⚪ within noise
GPU 0.1% worst 34.7 ms (28.0–35.6) 28.0 ms (24.7–34.9) -6.8 ms — informational
Exceptions per run 0 0 0 ⚪ no significant change

⚠️ Apple M1 failed to produce results — see the run for details.

Automation

On demand — comment /visual-tests on this PR to run the visual regression suite against its build.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant