From df3d35eedbb1971afb2fddd3395f135ab5a776a7 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 23 Aug 2024 11:11:25 -0700 Subject: [PATCH] [devicelan] opt android devices into fixed performance mode. (#154016) See also: https://developer.android.com/games/optimize/adpf/fixed-performance-mode Should keep benchmarks more stable so A/B comparisons are appropriate without accounting for CPU/GPU throttling. --- dev/devicelab/lib/framework/devices.dart | 8 ++++++++ dev/devicelab/lib/tasks/perf_tests.dart | 3 +++ 2 files changed, 11 insertions(+) diff --git a/dev/devicelab/lib/framework/devices.dart b/dev/devicelab/lib/framework/devices.dart index 6992765576..7a210bcc9b 100644 --- a/dev/devicelab/lib/framework/devices.dart +++ b/dev/devicelab/lib/framework/devices.dart @@ -128,6 +128,9 @@ abstract class Device { /// A unique device identifier. String get deviceId; + /// Switch the device into fixed/regular performance mode. + Future toggleFixedPerformanceMode(bool enable) async {} + /// Whether the device is awake. Future isAwake(); @@ -589,6 +592,11 @@ class AndroidDevice extends Device { String deviceInfo = ''; int apiLevel = 0; + @override + Future toggleFixedPerformanceMode(bool enable) async { + await shellExec('cmd', ['power', 'set-fixed-performance-mode-enabled', if (enable) 'true' else 'false']); + } + /// Whether the device is awake. @override Future isAwake() async { diff --git a/dev/devicelab/lib/tasks/perf_tests.dart b/dev/devicelab/lib/tasks/perf_tests.dart index f8b7e07ff2..28f521587d 100644 --- a/dev/devicelab/lib/tasks/perf_tests.dart +++ b/dev/devicelab/lib/tasks/perf_tests.dart @@ -1311,6 +1311,8 @@ class PerfTest { late Device selectedDevice; selectedDevice = device ?? await devices.workingDevice; await selectedDevice.unlock(); + await selectedDevice.toggleFixedPerformanceMode(true); + final String deviceId = selectedDevice.deviceId; final String? localEngine = localEngineFromEnv; final String? localEngineHost = localEngineHostFromEnv; @@ -1415,6 +1417,7 @@ class PerfTest { } finally { await resetManifest(); await resetPlist(); + await selectedDevice.toggleFixedPerformanceMode(false); } final Map data = json.decode(