summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/developers/cluster-telemetry/index.md
blob: 0dd7722f703b46da5a61ed49c898f4b561ec1349 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
---
breadcrumbs:
- - /developers
  - For Developers
page_name: cluster-telemetry
title: Cluster Telemetry
---

[Run on Cluster Telemetry!](http://ct.skia.org/) (Google only, sorry)

**Cluster Telemetry 101**

[Telemetry](https://github.com/catapult-project/catapult/tree/HEAD/telemetry)
is Chrome's performance testing framework, using it you can perform arbitrary
actions on a set of web pages and report metrics about it.

**Cluster Telemetry** allows you to run telemetry's benchmarks using multiple
repository patches through Alexa's top 10k and top 100k web pages.

Developers can use the framework to:

*   Measure the performance of multi-repo patches against the top subset
            of the internet on Android devices, bare-metal linux machines, and
            GCE instances using the [perf
            page](https://ct.skia.org/chromium_perf/).
*   Gather metrics for analysis or for reports against 100k web pages on
            CT's VM farm (linux and windows) using the [analysis
            page](https://ct.skia.org/chromium_analysis/).
*   Compute metrics on an analysis run using the [metrics analysis
            page](https://ct.skia.org/metrics_analysis/).

**Should I use CT?**

If you would like to know how your patch impacts Chrome's performance or would
like to do analysis against a large repository of real world web pages then you
should try out Cluster Telemetry.

CT has been used to gather analysis data for the following projects:

*   Web vitals performance
*   Ad tagging accuracy
*   UserCounter analysis
*   Real-world leak detector
*   Gather data for a language detector
*   TTI variability study
*   Analysis of 5M SVGs
*   Stat rare usages

CT has been used to gather perf data for the following projects:

*   Slimming paint
*   Clustering top web sites for Chrome graphics
*   Performance data for layer squashing and compositing overlap map
*   SkPaint in Graphics Context
*   Culling
*   New paint dictionary

**Which telemetry benchmarks does CT support?**

CT supports all benchmarks listed in
[tools/perf/contrib/cluster_telemetry](https://source.chromium.org/chromium/chromium/src/+/HEAD:tools/perf/contrib/cluster_telemetry/;l=1?q=contrib%2Fcluster&sq=&ss=chromium&originalUrl=https:%2F%2Fcs.chromium.org%2F).
Many of these benchmarks exist outside of CT, but these are the corresponding CT
compatible versions.

CT also allows you to run against unlanded / modified benchmarks using the
multi-repo patches supported in the UI.

Can try out your benchmark's CT version locally with:

`python tools/perf/run_benchmark ${YOUR_BENCHMARK} --also-run-disabled-tests
--user-agent=desktop
--urls-list=`[`http://www.google.com`](http://www.google.com/)`
--archive-data-file=/tmp/something --output-dir=/tmp/output/
--browser-executable=/usr/bin/google-chrome --browser=exact --pageset-repeat=1
--output-format=csv --use-live-sites`

**How accurate are CT's results?**

For an empty patch repaint run on Desktop, these are the results:

<img alt="consistent-results.png"
src="https://lh4.googleusercontent.com/WrHyPEmSptfgO28zEsnN5e1tM-SFXAtlsQoPnKEghkgSZye19OSoiER6CRoQ9D00dSLWT6Kwxhra3YY3aFx743Tl6rNRrkcmITmv23wQkiCouvLNBDwcoUPly9WWRADcraqWfSE"
height=157px; width=624px;>

The overall results from Cluster Telemetry runs are accurate within a percentage
point.

The per webpage results (visible when you click on a field) do have some
variance, but this has been greatly improved due to efforts detailed
[here](https://docs.google.com/a/chromium.org/document/d/1GhqosQcwsy6F-eBAmFn_ITDF7_Iv_rY9FhCKwAnk9qQ/edit#heading=h.lgvqzgu7bc4d).

**Framework Code and Documentation**

Cluster Telemetry is primarily written in Go with a few Python scripts. The
frontend is written using Polymer. The framework lives in
[main/ct](https://skia.googlesource.com/buildbot/+/main/ct).

Here is more detailed documentation for the different pages:

*   [Perf
            page](https://docs.google.com/document/d/1GhqosQcwsy6F-eBAmFn_ITDF7_Iv_rY9FhCKwAnk9qQ/edit)
*   [Analysis
            page](https://docs.google.com/document/d/1ziof4lNwDFXyerVbEocdF3_DdUHVnD3FKYB9rShztuE/edit#)
*   [Metrics Analysis
            Page](https://docs.google.com/document/d/1MY95ULhEuKFznBQpF60_uhdhRco5bWzUVfVTp0M2hDw/)

**Contact Us**

If you have questions, please email rmistry@ or
[cluster-telemetry@google.com](mailto:cluster-telemetry@google.com).