Merge "Enable hugepages for microdroid benchmarks" into main
diff --git a/java/framework/src/android/system/virtualmachine/VirtualMachineConfig.java b/java/framework/src/android/system/virtualmachine/VirtualMachineConfig.java
index 8b444fc..4446b29 100644
--- a/java/framework/src/android/system/virtualmachine/VirtualMachineConfig.java
+++ b/java/framework/src/android/system/virtualmachine/VirtualMachineConfig.java
@@ -103,6 +103,7 @@
private static final String KEY_EXTRA_APKS = "extraApks";
private static final String KEY_NETWORK_SUPPORTED = "networkSupported";
private static final String KEY_SHOULD_BOOST_UCLAMP = "shouldBoostUclamp";
+ private static final String KEY_SHOULD_USE_HUGEPAGES = "shouldUseHugepages";
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@@ -215,6 +216,8 @@
private final boolean mShouldBoostUclamp;
+ private final boolean mShouldUseHugepages;
+
@Retention(RetentionPolicy.SOURCE)
@StringDef(
prefix = "MICRODROID",
@@ -251,7 +254,8 @@
@Nullable File vendorDiskImage,
@NonNull @OsName String os,
boolean networkSupported,
- boolean shouldBoostUclamp) {
+ boolean shouldBoostUclamp,
+ boolean shouldUseHugepages) {
// This is only called from Builder.build(); the builder handles parameter validation.
mPackageName = packageName;
mApkPath = apkPath;
@@ -276,6 +280,7 @@
mOs = os;
mNetworkSupported = networkSupported;
mShouldBoostUclamp = shouldBoostUclamp;
+ mShouldUseHugepages = shouldUseHugepages;
}
/** Loads a config from a file. */
@@ -379,6 +384,8 @@
builder.setNetworkSupported(b.getBoolean(KEY_NETWORK_SUPPORTED));
builder.setShouldBoostUclamp(b.getBoolean(KEY_SHOULD_BOOST_UCLAMP));
+ builder.setShouldUseHugepages(b.getBoolean(KEY_SHOULD_USE_HUGEPAGES));
+
return builder.build();
}
@@ -431,6 +438,7 @@
}
b.putBoolean(KEY_NETWORK_SUPPORTED, mNetworkSupported);
b.putBoolean(KEY_SHOULD_BOOST_UCLAMP, mShouldBoostUclamp);
+ b.putBoolean(KEY_SHOULD_USE_HUGEPAGES, mShouldUseHugepages);
b.writeToStream(output);
}
@@ -793,6 +801,8 @@
}
vsConfig.boostUclamp = mShouldBoostUclamp;
+ vsConfig.hugePages = mShouldUseHugepages;
+
return vsConfig;
}
@@ -874,6 +884,7 @@
@NonNull @OsName private String mOs = DEFAULT_OS;
private boolean mNetworkSupported;
private boolean mShouldBoostUclamp = false;
+ private boolean mShouldUseHugepages = false;
/**
* Creates a builder for the given context.
@@ -973,7 +984,8 @@
mVendorDiskImage,
mOs,
mNetworkSupported,
- mShouldBoostUclamp);
+ mShouldBoostUclamp,
+ mShouldUseHugepages);
}
/**
@@ -1301,5 +1313,11 @@
mShouldBoostUclamp = shouldBoostUclamp;
return this;
}
+
+ /** @hide */
+ public Builder setShouldUseHugepages(boolean shouldUseHugepages) {
+ mShouldUseHugepages = shouldUseHugepages;
+ return this;
+ }
}
}
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 639de06..c33d3f5 100644
--- a/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
+++ b/tests/benchmark/src/java/com/android/microdroid/benchmark/MicrodroidBenchmarks.java
@@ -16,8 +16,8 @@
package com.android.microdroid.benchmark;
-import static android.system.virtualmachine.VirtualMachineConfig.CPU_TOPOLOGY_ONE_CPU;
import static android.system.virtualmachine.VirtualMachineConfig.CPU_TOPOLOGY_MATCH_HOST;
+import static android.system.virtualmachine.VirtualMachineConfig.CPU_TOPOLOGY_ONE_CPU;
import static android.system.virtualmachine.VirtualMachineConfig.DEBUG_LEVEL_FULL;
import static android.system.virtualmachine.VirtualMachineConfig.DEBUG_LEVEL_NONE;
@@ -34,10 +34,10 @@
import android.os.ParcelFileDescriptor.AutoCloseOutputStream;
import android.os.Process;
import android.os.RemoteException;
+import android.system.Os;
import android.system.virtualmachine.VirtualMachine;
import android.system.virtualmachine.VirtualMachineConfig;
import android.system.virtualmachine.VirtualMachineException;
-import android.system.Os;
import android.system.virtualmachine.VirtualMachineManager;
import android.util.Log;
@@ -158,6 +158,7 @@
newVmConfigBuilderWithPayloadBinary("MicrodroidIdleNativeLib.so")
.setDebugLevel(DEBUG_LEVEL_NONE)
.setMemoryBytes(mem * ONE_MEBI)
+ .setShouldUseHugepages(true)
.build();
// returns true if succeeded at least once.
@@ -234,6 +235,7 @@
VirtualMachineConfig.Builder builder =
newVmConfigBuilderWithPayloadBinary("MicrodroidIdleNativeLib.so")
.setShouldBoostUclamp(true)
+ .setShouldUseHugepages(true)
.setMemoryBytes(256 * ONE_MEBI)
.setDebugLevel(DEBUG_LEVEL_NONE);
if (fullDebug) {
@@ -347,6 +349,7 @@
newVmConfigBuilderWithPayloadConfig("assets/vm_config_io.json")
.setDebugLevel(DEBUG_LEVEL_NONE)
.setShouldBoostUclamp(true)
+ .setShouldUseHugepages(true)
.build();
List<Double> transferRates = new ArrayList<>(IO_TEST_TRIAL_COUNT);
@@ -373,6 +376,7 @@
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadConfig("assets/vm_config_io.json")
.setDebugLevel(DEBUG_LEVEL_NONE)
+ .setShouldUseHugepages(true)
.build();
List<Double> readRates = new ArrayList<>(IO_TEST_TRIAL_COUNT);
@@ -524,6 +528,7 @@
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadConfig("assets/vm_config_io.json")
.setDebugLevel(DEBUG_LEVEL_NONE)
+ .setShouldUseHugepages(true)
.setMemoryBytes(256 * ONE_MEBI)
.build();
VirtualMachine vm = forceCreateNewVirtualMachine(vmName, config);
@@ -610,6 +615,7 @@
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadConfig("assets/vm_config_io.json")
.setDebugLevel(DEBUG_LEVEL_NONE)
+ .setShouldUseHugepages(true)
.setMemoryBytes(256 * ONE_MEBI)
.build();
VirtualMachine vm = forceCreateNewVirtualMachine(vmName, config);
@@ -729,6 +735,7 @@
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadBinary("MicrodroidTestNativeLib.so")
.setDebugLevel(DEBUG_LEVEL_NONE)
+ .setShouldUseHugepages(true)
.setShouldBoostUclamp(true)
.build();
@@ -778,6 +785,7 @@
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadBinary("MicrodroidTestNativeLib.so")
.setDebugLevel(DEBUG_LEVEL_NONE)
+ .setShouldUseHugepages(true)
.build();
List<Double> requestLatencies = new ArrayList<>(IO_TEST_TRIAL_COUNT * NUM_REQUESTS);
@@ -836,6 +844,7 @@
VirtualMachineConfig config =
newVmConfigBuilderWithPayloadConfig("assets/vm_config_io.json")
.setDebugLevel(DEBUG_LEVEL_NONE)
+ .setShouldUseHugepages(true)
.build();
List<Double> vmKillTime = new ArrayList<>(TEST_TRIAL_COUNT);