Add Pixel 10a mobile performance coverage - #5284
Conversation
There was a problem hiding this comment.
Pull request overview
This PR extends the repo’s mobile performance infrastructure to include Pixel 10a alongside existing Pixel coverage by introducing a new Helix queue mapping and wiring a machinePool value through pipeline/job matrices.
Changes:
- Added a new logical-machine → Helix queue mapping for
perfpixel10aand treated the new Pixel 10a queue as a mobile queue for device-name env var handling. - Updated Helix/pipeline templates and matrices to pass
machinePool(e.g.,Pixel8,Pixel10a) and schedule Pixel 10a runs across existing SDK/MAUI matrices. - Refactored runtime Android perf jobs to iterate over a configurable
androidMachineslist (Pixel + Pixel 10a).
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| scripts/run_performance_job.py | Adds Pixel 10a queue mapping and includes the queue in mobile DEVICE_NAME handling. |
| helix.yml | Adds machinePool variable and a Pixel 10a profile that passes --machine-pool. |
| eng/pipelines/templates/run-performance-job.yml | Updates the machinePool parameter comment to include Pixel 10a. |
| eng/pipelines/templates/build-machine-matrix.yml | Adds a private-build machine matrix entry for Pixel 10a with machinePool: Pixel10a. |
| eng/pipelines/sdk-perf-jobs.yml | Adds the Pixel 10a machine to multiple existing SDK scenario matrices. |
| eng/pipelines/runtime-perf-jobs.yml | Introduces androidMachines and loops Android runtime perf jobs over Pixel + Pixel 10a. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.
Suppressed comments (2)
eng/pipelines/templates/build-machine-matrix.yml:137
- The comment says "Windows ARM64 Pixel 10a", but this matrix entry is using
archType: x64andvmImage: windows-2022(Windows x64 host) and targets an Android ARM64 device. This can mislead future edits/debugging.
- ${{ if and(containsValue(parameters.buildMachines, 'win-x64-android-arm64-pixel10a'), not(eq(parameters.isPublic, true))) }}: # Windows ARM64 Pixel 10a only used in private builds currently
scripts/run_performance_job.py:1151
- The Pixel 10a DEVICE_NAME special-case is unnecessarily tied to both
logical_machineand the queue string. If a Pixel 10a run is configured via--queue Windows.11.Amd64.Pixel.10.Perf(without--logical-machine/--machine-pool),DEVICE_NAMEwill not be set even though this queue is treated as a mobile queue below.
# Pixel 10a runtime jobs use a logical machine rather than a machine pool.
if args.logical_machine == "perfpixel10a" and args.queue == "Windows.11.Amd64.Pixel.10.Perf":
args.run_env_vars["DEVICE_NAME"] = "Pixel10a"
elif args.machine_pool and args.queue and args.queue in (
"Windows.11.Amd64.Pixel.Perf",
|
While this PR is good, there are some on machine changes that need to be made to get these devices fully working, so waiting on those changes before merging. |
matouskozak
left a comment
There was a problem hiding this comment.
Would it make sense to add the devices also to the MAUI SDK scenario runs or is this a staged deployment and testing it on runtime runs first?
Are you talking about in runtime or the dotnet-performance runs? This should be added to both, but I may have missed somewhere. |
I meant |
All good, just confirming that the devices are properly setup to upload results then will merge 👍. |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
f916d88
e6b60f2 to
f916d88
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Suppressed comments (4)
eng/pipelines/runtime-perf-jobs.yml:127
- This runtime job passes only
logicalMachine, somachinePoolremains empty inrun-performance-job.ymlandrun_performance_job.pydoes not emitDEVICE_NAMEfor the new mobile queue. The job will select the Pixel 10a queue without identifying the Pixel10a device in machine setup/results. PassmachinePool: Pixel10ahere (and in the other two Pixel 10a runtime blocks).
logicalMachine: 'perfpixel10a'
eng/pipelines/runtime-perf-jobs.yml:167
- This runtime job passes only
logicalMachine, somachinePoolremains empty inrun-performance-job.ymlandrun_performance_job.pydoes not emitDEVICE_NAMEfor the new mobile queue. The job will select the Pixel 10a queue without identifying the Pixel10a device in machine setup/results. PassmachinePool: Pixel10ahere (and in the other two Pixel 10a runtime blocks).
logicalMachine: 'perfpixel10a'
eng/pipelines/runtime-perf-jobs.yml:207
- This runtime job passes only
logicalMachine, somachinePoolremains empty inrun-performance-job.ymlandrun_performance_job.pydoes not emitDEVICE_NAMEfor the new mobile queue. The job will select the Pixel 10a queue without identifying the Pixel10a device in machine setup/results. PassmachinePool: Pixel10ahere (and in the other two Pixel 10a runtime blocks).
logicalMachine: 'perfpixel10a'
src/scenarios/shared/runner.py:470
- If the new
settings getcommand fails, this exception is raised beforesetup_deviceinitializesstopappcommand; thefinallyblock then callsclose_device(), whose unconditionalRunCommand(self.stopappcommand, ...)raisesValueErrorand masks the original adb failure. Move this call aftersetup_device(it only needs to run before the procstats clear), or make teardown tolerate an incomplete setup.
androidHelper.enable_pss_profiling()
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 309b3a9e-9724-411f-8460-751ec0faa6a3
|
Latest run from yesterday is looking much better: https://dev.azure.com/dnceng/internal/_build/results?buildId=3063540&view=results, only one failure that does need to be investigated, but going to merge this once approved so we can figure out if it is transient and to get the rest of the tests running. |
Summary
Pixel10adevice name while preserving Pixel 8 coverageTesting
Internal Run: https://dev.azure.com/dnceng/internal/_build/results?buildId=3063540&view=results