1<!-- Copyright 2016 The Chromium Authors. All rights reserved. 2 Use of this source code is governed by a BSD-style license that can be 3 found in the LICENSE file. 4--> 5 6# Devil: Persistent Device List 7 8## What is it? 9 10A persistent device list that stores all expected devices between builds. It 11is used by the perf test runner in order to properly shard tests by device 12affinity. This is important because the same performance test can yield 13meaningfully different results when run on different devices. 14 15## Bots 16 17The list is usually located at one of these locations: 18 19 - `/b/build/site_config/.known_devices`. 20 - `~/.android`. 21 22Look at recipes listed below in order to find more up to date location. 23 24## Local Runs 25 26The persistent device list is unnecessary for local runs. It is only used on the 27bots that upload data to the perf dashboard. 28 29## Where it is used 30 31The persistent device list is used in performance test recipes via 32[api.chromium\_tests.steps.DynamicPerfTests](https://cs.chromium.org/chromium/build/scripts/slave/recipe_modules/chromium_tests/steps.py?q=DynamicPerfTests). 33For example, the [android/perf](https://cs.chromium.org/chromium/build/scripts/slave/recipes/android/perf.py) recipe uses it like this: 34 35```python 36dynamic_perf_tests = api.chromium_tests.steps.DynamicPerfTests( 37 builder['perf_id'], 'android', None, 38 known_devices_file=builder.get('known_devices_file', None)) 39dynamic_perf_tests.run(api, None) 40``` 41 42