blob: 0cf5d564e5e6d8eab6c01f956cfa6d60d5f38bf5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# Generating PGO Profiles
Normally devs don't need to worry about this and can use the default profile
for official builds. The default profile can be fetched by adding
`"checkout_pgo_profiles": True` to `custom_vars` in the gclient config and
running `gclient runhooks`.
To produce an executable built with a custom PGO profile:
* Produce the instrumented executable using the following gn args:
```
chrome_pgo_phase = 1
enable_resource_allowlist_generation = false
is_official_build = true
symbol_level = 0
use_goma = true
```
* Run representative benchmarks to produce profiles
* `vpython3 tools/perf/run_benchmark --assert-gpu-compositing --browser=exact --browser-executable=out/path/to/chrome system_health.common_desktop --run-abridged-story-set`
* `vpython3 tools/perf/run_benchmark --assert-gpu-compositing --browser=exact --browser-executable=out/path/to/chrome speedometer2`
* `vpython3 tools/perf/run_benchmark --assert-gpu-compositing --browser=exact --browser-executable=out/path/to/chrome rendering.desktop --story-tag-filter=motionmark_fixed_2_seconds --also-run-disabled-tests`
* `vpython3 tools/perf/run_benchmark --assert-gpu-compositing --browser=exact --browser-executable=out/path/to/chrome jetstream2 `
* This will produce `*.profraw` files in the current working directory
If this fails with `ServiceException: 401 Anonymous caller does not have storage.objects.get
access to the Google Cloud Storage object.`, then run `download_from_google_storage --config`
(with your @google address; enter 0 as project-id).
* Merge the profiling data
* Get the `llvm-profdata` tool by adding `"checkout_clang_coverage_tools": True,` to `custom_vars` in the gclient config and running `gclient runhooks`.
* Run `third_party/llvm-build/Release+Asserts/bin/llvm-profdata merge *.profraw -o chrome.profdata`
* Produce the final PGO'd executable with the following gn args:
```
enable_resource_allowlist_generation = false
is_official_build = true
symbol_level = 0
use_goma = true
pgo_data_path = {path-to-the-profile}
```
|