Bug 249031 - [META][WPE] Set-up performance bots with RPis and implement support in the WebKit tooling for automatic cross builds
Summary: [META][WPE] Set-up performance bots with RPis and implement support in the We...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WPE WebKit (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on: 249034 249036 249286 249604 249644 252134 252355 255861 255962 256043 256061 256283
Blocks:
  Show dependency treegraph
 
Reported: 2022-12-09 11:10 PST by Carlos Alberto Lopez Perez
Modified: 2023-07-06 11:16 PDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Carlos Alberto Lopez Perez 2022-12-09 11:10:39 PST
This is a meta-bug that will serve as an umbrella for landing and enabling the WPE continuous performance bots.

Long short history is that we want to have WPE test bots running on embedded boards (RPi boards specifically) continuously benchmarking WebKit to help tracking and bisecting any performance regression.

As a side effect of this work the WebKit tooling will gain support for easily cross-building WPE (and also GTK if wanted) for different embedded boards

The main idea of how this will work is the following:

1) Build-ony bot
- A bot (x86_64) will cross-build WPE for a specific target board like any of this: rpi3-32bits-mesa-vc4, rpi3-32bits-userland, rpi4-32bits-mesa-vc4, rpi3-64bits-mesa-vc4, rpi4-64bits-mesa-vc4
- The bot will also generate the image (OS) that will run on the board. This image will contain everything needed except WPE itself

2) Test-only bots
- This will be a set of RPis boards, each one will boot the image that was generated from the build-only boot (via PXE)
- The RPi will download the built-product from the test-only boot and run the performance tests
- For running the performance tests it will use the script browserperfdash-benchmark which is a wrapper around the script run-benchmark
- The results of the benchmarks will be uploaded to https://browserperfdash.igalia.com/


The definition of how the toolchain is built, how webkit is built, and every single package that goes into the image will be defined inside the WebKit repository. This is important as it will allow us to bisect performance regressions easily. The idea is that if you checkout a commit of WebKit from 6 months ago you can build *exactly* the same thing that was running on the boards back then.
To support this, the tooling will automatically detect any change on the definitions of how the image or WPE is built and clean/rebuild everything accordingly. The boards will be also aware of this and will reboot themselves if the image they are running doesn't match the WebKit checkout version, so when they reboot they will boot with the new image built from the build-only boot (via PXE) and continue the testing.

To support this several changes are required on the webkit tooling. The cross-toolchain and the images will be built with Yocto (OpenEmbedded) under the hood.

For more details see the bugs attached to this on the "Depends on" field.
Comment 1 Carlos Alberto Lopez Perez 2022-12-09 11:13:52 PST
(In reply to Carlos Alberto Lopez Perez from comment #0)
[...]
> 2) Test-only bots
> - This will be a set of RPis boards, each one will boot the image that was
> generated from the build-only boot (via PXE)
> - The RPi will download the built-product from the test-only boot and run
> the performance tests

I mean: The RPi will download the built-product from the build-only bot and run the performance tests