Chromium Code Reviews| 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  | |
| 74 | |
| 75 | |
| 76 <a name="detailed_explanation"></a> | |
| 77 ### Detailed explanation of steps | |
| 78 | |
| 79 1. User submits a Admin task (rebuild chrome, recreate pagesets, recreate webpag e archives), Lua script task, or Telemetry benchmark task using the App Engine w eb application [here](http://ct.skia.org). | |
|
hcm
2015/04/22 17:00:43
Nit: should be "an Admin task"
rmistry
2015/04/22 18:02:28
Done.
| |
| 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 |