| Index: telemetry/telemetry/util/bot_utils.py
|
| diff --git a/telemetry/telemetry/util/bot_utils.py b/telemetry/telemetry/util/bot_utils.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..70955f5d3a4ab2e443df261d0c0c7d5ef9a2f7d2
|
| --- /dev/null
|
| +++ b/telemetry/telemetry/util/bot_utils.py
|
| @@ -0,0 +1,27 @@
|
| +# Copyright 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +"""
|
| +Utility functions used to generate info used by the bots.
|
| +
|
| +TODO(eyaich): Remove once we no longer generate the list of benchmarks to
|
| +run on the perf waterfall in telemetry.
|
| +"""
|
| +
|
| +import hashlib
|
| +
|
| +def GetDeviceAffinity(num_shards, base_name):
|
| + # Based on the current timings, we shift the result of the hash function to
|
| + # achieve better load balancing. Those shift values are to be revised when
|
| + # necessary. The shift value is calculated such that the total cycle time
|
| + # is minimized.
|
| + hash_shift = {
|
| + 2 : 47, # for old desktop configurations with 2 slaves
|
| + 5 : 56, # for new desktop configurations with 5 slaves
|
| + 21 : 43 # for Android 3 slaves 7 devices configurations
|
| + }
|
| + shift = hash_shift.get(num_shards, 0)
|
| + base_name_hash = hashlib.sha1(base_name).hexdigest()
|
| + device_affinity = (int(base_name_hash, 16) >> shift) % num_shards
|
| + return device_affinity
|
|
|