Switch Windows PGO builds to the 3-tier model
Categories
(Firefox Build System :: Task Configuration, task)
Tracking
(firefox69 fixed)
| Tracking | Status | |
|---|---|---|
| firefox69 | --- | fixed |
People
(Reporter: mshal, Assigned: mshal)
References
Details
Attachments
(9 files)
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review |
Linux and Android PGO builds both use the 3-tier model, but Windows still uses the old 1-tier model. We should switch Windows over as well so that all PGO builds use the same PGO logic.
| Assignee | ||
Comment 1•7 years ago
|
||
| Assignee | ||
Comment 2•7 years ago
|
||
The run-profileserver.sh script is a bridge between the Taskcluster task
and profileserver.py. It was originally written as a Linux-only script,
but with a few modifications it can support Windows as well. The xvfb
support needs to be optional, and the UPLOAD_PATH and PGO_RUNDIR
variables must not assume a Linux filesystem.
Depends on D34795
| Assignee | ||
Comment 3•7 years ago
|
||
Depends on D34796
| Assignee | ||
Comment 4•7 years ago
|
||
MOZ_PGO_PROFILE_USE is set when the use-pgo attribute is defined in the
task. This environment variable is used to enable --enable-profile-use
and related configure flags.
Depends on D34797
| Assignee | ||
Comment 5•7 years ago
|
||
Windows finds llvm-profdata in the PATH, in contrast to Linux or Android
builds that set LLVM_PROFDATA as an environment variable in mozconfigs.
The pgo_profile_path() configure checks should still work in this case.
Depends on D34798
| Assignee | ||
Comment 6•7 years ago
|
||
With clang-cl and PGO enabled, toolchain.configure automatically turns
on LTO for compatibility with MSVC. However, MOZ_PGO is set for both the
profile-generate and profile-use builds, but we only want LTO enabled
for the profile-use build. We can check for --enable-profile-use
explicitly and to avoid setting LTO on profile-generate.
Depends on D34799
| Assignee | ||
Comment 7•7 years ago
|
||
Our version of mozmake in Windows has issues with how it shells out to
commands that are prefixed with environment variable settings. For
example, "FOO=bar $(PYTHON) script.py" behaves differently than
"$(PYTHON) script.py". In this case, packager.py is called with
JARLOG_FILE_AB_CD as a command-line argument, which gets processed
differently without the environment variable prefix. With a prefix, a
backslash gets slurped, so Z:\task/foo becomes Z:task/foo, and python
fails to open the file.
The backslash comes from the WORKSPACE variable in Taskcluster, which is
used in many places, so it seems prudent here to simply escape the
backslash as a workaround for the issue. Other possible fixes are: 1)
Convert the NO_PKG_FILES environment variable to a command-line
argument, 2) Upgrade mozmake to a newer version that fixes the shell
issues, or 3) Change WORKSPACE to use forward-slashes, and work around
any potential issues with that.
Depends on D34800
| Assignee | ||
Comment 8•7 years ago
|
||
Windows 1-tier PGO builds only partially clobber between the
profile-generate and profile-use stages, so that exports/installed files
don't have to be reprocessed. Unfortunately we can't skip the install
manifests in 3-tier PGO because the profile-generate build happens on a
different machine, so we have to differentiate between 1-tier and 3-tier
PGO builds. A new variable, MOZ_1TIER_PGO, is used for this purpose.
Eventually this logic can be cleaned up in bug 1557788 once all PGO
builds use the 3-tier model.
Depends on D34801
| Assignee | ||
Comment 9•7 years ago
|
||
Depends on D34802
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Updated•7 years ago
|
Comment 10•7 years ago
|
||
Comment 11•7 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/1bc6ee0c6672
https://hg.mozilla.org/mozilla-central/rev/2989571031f9
https://hg.mozilla.org/mozilla-central/rev/516aa5eb9732
https://hg.mozilla.org/mozilla-central/rev/0b6522f13bcf
https://hg.mozilla.org/mozilla-central/rev/3430c89be449
https://hg.mozilla.org/mozilla-central/rev/b5c65f2ea1ac
https://hg.mozilla.org/mozilla-central/rev/861e83cc1b9b
https://hg.mozilla.org/mozilla-central/rev/91b34c90d2a9
https://hg.mozilla.org/mozilla-central/rev/a91cc939f112
Comment 12•7 years ago
|
||
== Change summary for alert #21604 (as of Wed, 26 Jun 2019 13:00:38 GMT) ==
Improvements:
3% raptor-speedometer-firefox windows10-64-shippable-qr opt 82.81 -> 85.22
2% raptor-speedometer-firefox windows10-64-shippable opt 82.50 -> 84.43
For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=21604
Comment 13•7 years ago
|
||
== Change summary for alert #21601 (as of Wed, 26 Jun 2019 08:22:19 GMT) ==
Improvements:
40% build times windows2012-64-shippable opt nightly taskcluster-c5.4xlarge 5,335.07 -> 3,182.93
For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=21601
Description
•