OLD | NEW |
(Empty) | |
| 1 Cluster Telemetry |
| 2 ================= |
| 3 |
| 4 ### Contents ### |
| 5 |
| 6 * [Overview](#overview) |
| 7 * [Framework Usage](#framework_usage) |
| 8 * [System Architecture](#system_architecture) |
| 9 + [System Diagram](#system_diagram) |
| 10 + [Detailed explanation of steps](#detailed_explanation) |
| 11 * [Code](#code) |
| 12 * [Contact Us](#contact_us) |
| 13 |
| 14 <a name="overview"></a> |
| 15 Overview |
| 16 -------- |
| 17 |
| 18 Cluster Telemetry allows you to run [telemetry](https://www.chromium.org/develop
ers/telemetry)'s benchmarks, lua scripts and other tasks using multiple reposito
ry patches through Alexa's [top 1 million](http://s3.amazonaws.com/alexa-static/
top-1m.csv.zip) web pages. |
| 19 Developers can use the framework to measure the performance of their patch again
st the top subset of the internet on both Desktop and Android. |
| 20 |
| 21 SKP files are a binary format for the draw commands Chromium sends to Skia for r
asterization. The goal of the project started off with wanting to collect a larg
e repository of 10k SKP files. This repository, after incremental changes in app
roaches, has since grown to ~900k and now supports running all telemetry benchma
rks. The top level feature request of this project was [skia:1268](https://code.
google.com/p/skia/issues/detail?id=1268). |
| 22 |
| 23 A web application has been created on App Engine that automates the process of c
apturing new archives and running telemetry benchmarks at a click of a button; r
esults are emailed to the requester and the web application contains complete hi
story of runs with links to results. You can run telemetry benchmarks at http://
ct.skia.org. |
| 24 |
| 25 The framework also contains the ability to run lua scripts on the SKP repository
to scrape web pages. It only takes a few minutes to run a lua scrapping script
on ~900k SKP files. |
| 26 |
| 27 These are the different parts of the framework: |
| 28 |
| 29 * Chromium Perf Tryserver. Documentation [here](https://www.chromium.org/develop
ers/cluster-telemetry). Webpage [here](http://skia-tree-status.appspot.com/skia-
telemetry/chromium_try). |
| 30 * Skia Correctness Tryserver. Documentation [here](http://goto/skiatryclustertel
emetry). Webpage [here](http://skia-tree-status.appspot.com/skia-telemetry/skia_
try). |
| 31 * Run Lua Scripts. Documentation about lua bindings is [here](https://skia.org/u
ser/special/lua). Webpage [here](http://skia-tree-status.appspot.com/skia-teleme
try/lua_script). |
| 32 |
| 33 |
| 34 <a name="framework_usage"></a> |
| 35 Framework Usage |
| 36 --------------- |
| 37 |
| 38 The Chromium Perf tryserver in CT has been used to gather perf data over the top
10k web pages for the following Chromium projects: |
| 39 |
| 40 * Slimming paint |
| 41 * Performance data for layer squashing and compositing overlap map |
| 42 * SkPaint in Graphics Context |
| 43 * Culling |
| 44 * New paint dictionary |
| 45 |
| 46 blink-dev threads discussing how to make Chrome faster using the results gathere
d from CT: |
| 47 |
| 48 * [Main thread attribution for top million sites](https://groups.google.com/a/ch
romium.org/d/msg/blink-dev/-R47hzmkdig/xILVgczlKgQJ) |
| 49 * [Layout time for top 10k sites](https://groups.google.com/a/chromium.org/d/msg
/blink-dev/fkRYGcIQN1g/_uYcAt6G8XsJ) |
| 50 * [Perf profile for top million sites](https://groups.google.com/a/chromium.org/
forum/#!topic/blink-dev/8qd5SmLF5n0) |
| 51 |
| 52 Documents detailing data generated by the framework: |
| 53 |
| 54 * [Loading measurement: alexa top 1,000](https://docs.google.com/a/chromium.org/
document/d/1ca_Q7xePmCRqaYnHe7vkpCmKNFNLdDXvzgtUPt9iG8w/edit) |
| 55 * [Loading measurement: alexa top million](https://docs.google.com/a/google.com/
document/d/1hDDUUNE5OUV8eCjtOj7Ow6EZ2DSBCTjQirnA3Rp5pOg/edit) |
| 56 * [Loading measurement: alexa top million netsim](https://docs.google.com/a/goog
le.com/document/d/1cpLSSYpqi4SprkJcVxbS7af6avKM0qc-imxvkexmCZs/edit) |
| 57 * [Perf profile - alexa top million sites](https://docs.google.com/a/google.com/
document/d/1di__87watociuZj_dm22Cn72UM2xsZBXixbl8TCFQmw/edit) |
| 58 |
| 59 The framework has also been used to run multiple lua scripts to scrape the SKP r
epositories for the the following: |
| 60 chars-vs-glyphs, bitmap transform types, gradient color counter, 3 color gradien
t checks, etc. |
| 61 This has been very useful for the Skia team to help determine which parts of the
library to optimize and focus on. |
| 62 |
| 63 All runs are recorded [here](http://skia-tree-status.appspot.com/skia-telemetry/
all_tasks). |
| 64 |
| 65 |
| 66 <a name="system_architecture"></a> |
| 67 System Architecture |
| 68 ------------------ |
| 69 |
| 70 <a name="system_diagram"></a> |
| 71 ### System Diagram |
| 72 |
| 73 ![CT System Diagram](ct-system.png) |
| 74 |
| 75 |
| 76 <a name="detailed_explanation"></a> |
| 77 ### Detailed explanation of steps |
| 78 |
| 79 1. User submits an Admin task (rebuild chrome, recreate pagesets, recreate webpa
ge archives), Lua script task, or Telemetry benchmark task using the App Engine
web application [here](http://ct.skia.org). |
| 80 |
| 81 2. Each task is exposed by the web application in JSON. The CT master polls the
web application and picks up new tasks. |
| 82 |
| 83 3. The master pushes new tasks to all the workers using the master scripts [here
](https://skia.googlesource.com/buildbot/+/master/ct/go/master_scripts/) (in a n
ew process so that the poller is not blocked). The master scripts then check to
see when the workers are done with the requested task. |
| 84 |
| 85 4. The workers execute the task using the worker scripts [here](https://skia.goo
glesource.com/buildbot/+/master/ct/go/worker_scripts/). All generated artifacts
(CSV files, logs, SKP files, archives, etc) are then stored locally and copied t
o Google Storage. |
| 86 |
| 87 5. The master scripts periodically check the workers to see when they are done w
ith the requested task. Once the workers are done the generated artifacts are th
en read from Google Storage and consolidated (if required). |
| 88 |
| 89 6. The master scripts then email results of the task to the user who requested i
t. The master scripts also update the status of the task to completed on App Eng
ine. |
| 90 |
| 91 |
| 92 <a name="code"></a> |
| 93 Code |
| 94 ---- |
| 95 |
| 96 Cluster Telemetry is primarily written in Go with a few python scripts. The fram
ework lives in [master/ct](https://skia.googlesource.com/buildbot/+/master/ct) a
nd the appengine code lives in [master/appengine_scripts](https://skia.googlesou
rce.com/buildbot/+/master/appengine_scripts/skia-tree-status). |
| 97 |
| 98 <a name="contact_us"></a> |
| 99 Contact Us |
| 100 ---------- |
| 101 |
| 102 If you have questions, please email <cluster-telemetry@chromium.org> or contact
rmistry@ directly. |
OLD | NEW |