Set task profile of MicrodroidBenchmarkApp
Our benchmarks recently regressed because crosvm now runs with
the cgroup of the client. Fix this by settin the task profile to
max performance.
Bug: 264710736
Test: atest MicrodroidBenchmarkApp
Change-Id: I0e87899671ee53a2ee277cb616f1144d7f6eed11
diff --git a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
index 3c3faf2..cbe7072 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -80,10 +80,11 @@
private Instrumentation mInstrumentation;
@Before
- public void setup() {
+ public void setup() throws IOException {
grantPermission(VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION);
grantPermission(VirtualMachine.USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION);
prepareTestSetup(mProtectedVm);
+ setMaxPerformanceTaskProfile();
mInstrumentation = getInstrumentation();
}
diff --git a/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java b/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
index 536f663..d762310 100644
--- a/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
+++ b/tests/helper/src/java/com/android/microdroid/test/device/MicrodroidDeviceTestBase.java
@@ -24,6 +24,7 @@
import android.content.Context;
import android.os.ParcelFileDescriptor;
import android.os.SystemProperties;
+import android.system.Os;
import android.system.virtualmachine.VirtualMachine;
import android.system.virtualmachine.VirtualMachineCallback;
import android.system.virtualmachine.VirtualMachineConfig;
@@ -50,6 +51,8 @@
import java.util.concurrent.TimeUnit;
public abstract class MicrodroidDeviceTestBase {
+ private final String MAX_PERFORMANCE_TASK_PROFILE = "CPUSET_SP_TOP_APP";
+
public static boolean isCuttlefish() {
return DeviceProperties.create(SystemProperties::get).isCuttlefish();
}
@@ -73,6 +76,17 @@
permission);
}
+ protected final void setMaxPerformanceTaskProfile() throws IOException {
+ Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+ UiAutomation uiAutomation = instrumentation.getUiAutomation();
+ String cmd = "settaskprofile " + Os.gettid() + " " + MAX_PERFORMANCE_TASK_PROFILE;
+ String out = runInShell("MicrodroidDeviceTestBase", uiAutomation, cmd).trim();
+ String expect = "Profile " + MAX_PERFORMANCE_TASK_PROFILE + " is applied successfully!";
+ if (!expect.equals(out)) {
+ throw new IOException("Could not apply max performance task profile: " + out);
+ }
+ }
+
private Context mCtx;
private boolean mProtectedVm;