summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Stefano Cianciulli <scianciulli@google.com> 2025-01-24 10:26:02 +0000
committer Stefano Cianciulli <scianciulli@google.com> 2025-02-20 06:21:04 -0800
commit52ea66f5bde76ceae295c61e468e3eaaea33c609 (patch)
treeef7f8cbe815c3e05ab7b1852a037269dd6c8eb29
parent16a42183aff1275ad238bf5fb2e6416ecebc16cd (diff)
Report atoms to StatsD also when DexOpt is skipped
Bug: 327134025 Test: atest art_standalone_artd_tests && atest ArtServiceTests Change-Id: I2b7e889628df23e6e59cbf9fafbebd8f9168d7d8
-rw-r--r--libartservice/service/java/com/android/server/art/Dex2OatStatsReporter.java24
-rw-r--r--libartservice/service/java/com/android/server/art/Dexopter.java10
2 files changed, 31 insertions, 3 deletions
diff --git a/libartservice/service/java/com/android/server/art/Dex2OatStatsReporter.java b/libartservice/service/java/com/android/server/art/Dex2OatStatsReporter.java
index d553113301..2e45c01590 100644
--- a/libartservice/service/java/com/android/server/art/Dex2OatStatsReporter.java
+++ b/libartservice/service/java/com/android/server/art/Dex2OatStatsReporter.java
@@ -16,6 +16,8 @@
package com.android.server.art;
+import static com.android.server.art.Utils.Abi;
+
import android.os.Build;
import androidx.annotation.NonNull;
@@ -23,6 +25,9 @@ import androidx.annotation.RequiresApi;
import com.android.server.art.model.DetailedDexInfo;
import com.android.server.art.model.DexMetadata;
+import com.android.server.art.model.DexoptParams;
+
+import java.util.List;
/**
* A class to report dex2oat metrics to StatsD.
@@ -43,6 +48,23 @@ public class Dex2OatStatsReporter {
(int) compilationTime);
}
+ public static void reportSkipped(int appId, @NonNull String compilationReason,
+ @DexMetadata.Type int dexMetadataType, @NonNull DetailedDexInfo dexInfo,
+ @NonNull List<Abi> abis) {
+ Dex2OatResult skipped = Dex2OatResult.notRun();
+
+ for (Abi abi : abis) {
+ ArtStatsLog.write(ArtStatsLog.ART_DEX2OAT_REPORTED, appId,
+ translateCompilerFilter(DexoptParams.COMPILER_FILTER_NOOP),
+ translateCompilationReason(compilationReason), dexMetadataType,
+ getApkType(dexInfo), translateIsa(abi.isa()), skipped.status, skipped.exitCode,
+ skipped.signal,
+ 0, // artifacts size
+ 0 // compilation time
+ );
+ }
+ }
+
private static int translateCompilerFilter(String compilerFilter) {
return switch (compilerFilter) {
case "assume-verified" ->
@@ -66,6 +88,8 @@ public class Dex2OatStatsReporter {
case "everything" ->
ArtStatsLog
.ART_DEX2_OAT_REPORTED__COMPILER_FILTER__ART_COMPILATION_FILTER_EVERYTHING;
+ case "skip" ->
+ ArtStatsLog.ART_DEX2_OAT_REPORTED__COMPILER_FILTER__ART_COMPILATION_FILTER_SKIP;
default ->
ArtStatsLog.ART_DEX2_OAT_REPORTED__COMPILER_FILTER__ART_COMPILATION_FILTER_UNKNOWN;
};
diff --git a/libartservice/service/java/com/android/server/art/Dexopter.java b/libartservice/service/java/com/android/server/art/Dexopter.java
index b13ec66831..cc1b66b9ba 100644
--- a/libartservice/service/java/com/android/server/art/Dexopter.java
+++ b/libartservice/service/java/com/android/server/art/Dexopter.java
@@ -114,7 +114,14 @@ public abstract class Dexopter<DexInfoType extends DetailedDexInfo> {
}
String compilerFilter = adjustCompilerFilter(mParams.getCompilerFilter(), dexInfo);
+ DexMetadataInfo dmInfo =
+ mInjector.getDexMetadataHelper().getDexMetadataInfo(buildDmPath(dexInfo));
if (compilerFilter.equals(DexoptParams.COMPILER_FILTER_NOOP)) {
+ mInjector.getReporterExecutor().execute(
+ ()
+ -> Dex2OatStatsReporter.reportSkipped(mPkgState.getAppId(),
+ mParams.getReason(), dmInfo.type(), dexInfo,
+ getAllAbis(dexInfo)));
continue;
}
@@ -126,9 +133,6 @@ public abstract class Dexopter<DexInfoType extends DetailedDexInfo> {
continue;
}
- DexMetadataInfo dmInfo =
- mInjector.getDexMetadataHelper().getDexMetadataInfo(buildDmPath(dexInfo));
-
boolean needsToBeShared = needsToBeShared(dexInfo);
boolean isOtherReadable = true;
// If true, implies that the profile has changed since the last compilation.