diff options
author | 2025-01-24 10:26:02 +0000 | |
---|---|---|
committer | 2025-02-20 06:21:04 -0800 | |
commit | 52ea66f5bde76ceae295c61e468e3eaaea33c609 (patch) | |
tree | ef7f8cbe815c3e05ab7b1852a037269dd6c8eb29 | |
parent | 16a42183aff1275ad238bf5fb2e6416ecebc16cd (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.java | 24 | ||||
-rw-r--r-- | libartservice/service/java/com/android/server/art/Dexopter.java | 10 |
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. |