Add benchmark of Microdroid boot time with multiple vCPUs
We currently only measure single-core boot time. Add a new test case to
measure 2, 4 and 8 vCPUs.
Test: atest testMicrodroidMulticoreBootTime
Change-Id: Ifd923a380ce65686c84ff4f32c14de1d32f31419
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 cba29a6..0d8d2b4 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -161,6 +161,37 @@
}
@Test
+ public void testMicrodroidMulticoreBootTime()
+ throws VirtualMachineException, InterruptedException, IOException {
+ assume().withMessage("Skip on CF; too slow").that(isCuttlefish()).isFalse();
+
+ final int trialCount = 10;
+ final int[] trialNumCpus = {2, 4, 8};
+
+ for (int numCpus : trialNumCpus) {
+ List<Double> bootTimeMetrics = new ArrayList<>();
+ for (int i = 0; i < trialCount; i++) {
+ VirtualMachineConfig normalConfig =
+ newVmConfigBuilder()
+ .setPayloadBinaryPath("MicrodroidIdleNativeLib.so")
+ .setDebugLevel(DEBUG_LEVEL_NONE)
+ .setMemoryMib(256)
+ .setNumCpus(numCpus)
+ .build();
+ forceCreateNewVirtualMachine("test_vm_boot_time_multicore", normalConfig);
+
+ BootResult result = tryBootVm(TAG, "test_vm_boot_time_multicore");
+ assertThat(result.payloadStarted).isTrue();
+
+ bootTimeMetrics.add(result.endToEndNanoTime / NANO_TO_MILLI);
+ }
+
+ String metricName = "boot_time_" + numCpus + "cpus";
+ reportMetrics(bootTimeMetrics, metricName, "ms");
+ }
+ }
+
+ @Test
public void testMicrodroidDebugBootTime()
throws VirtualMachineException, InterruptedException, IOException {
assume().withMessage("Skip on CF; too slow").that(isCuttlefish()).isFalse();