blob: 127b1186ebb006389f2f332ffb0229aa8559094c [file] [log] [blame]
syntax = "proto2";
package android.os.statsd.art;
import "frameworks/proto_logging/stats/atoms.proto";
import "frameworks/proto_logging/stats/atom_field_options.proto";
option java_package = "com.android.os.art";
option java_multiple_files = true;
extend Atom {
// Pushed atoms
optional ArtDatumReported art_datum_reported = 332 [(module) = "art"];
// Deprecated in favour of the ArtDeviceStatus pulled atom
optional ArtDeviceDatumReported art_device_datum_reported = 550 [(module) = "art", deprecated = true];
optional ArtDatumDeltaReported art_datum_delta_reported = 565 [(module) = "art"];
// Pulled atoms
optional ArtDeviceStatus art_device_status = 10205 [(module) = "art"];
}
// Indicates which compile filter was used for the package being loaded in an ART session.
enum ArtCompileFilter {
ART_COMPILATION_FILTER_UNSPECIFIED = 0;
ART_COMPILATION_FILTER_ERROR = 1;
ART_COMPILATION_FILTER_UNKNOWN = 2;
ART_COMPILATION_FILTER_ASSUMED_VERIFIED = 3;
ART_COMPILATION_FILTER_EXTRACT = 4;
ART_COMPILATION_FILTER_VERIFY = 5;
ART_COMPILATION_FILTER_QUICKEN = 6;
ART_COMPILATION_FILTER_SPACE_PROFILE = 7;
ART_COMPILATION_FILTER_SPACE = 8;
ART_COMPILATION_FILTER_SPEED_PROFILE = 9;
ART_COMPILATION_FILTER_SPEED = 10;
ART_COMPILATION_FILTER_EVERYTHING_PROFILE = 11;
ART_COMPILATION_FILTER_EVERYTHING = 12;
ART_COMPILATION_FILTER_FAKE_RUN_FROM_APK = 13;
ART_COMPILATION_FILTER_FAKE_RUN_FROM_APK_FALLBACK = 14;
ART_COMPILATION_FILTER_FAKE_RUN_FROM_VDEX_FALLBACK = 15;
}
// Indicates what triggered the compilation of the package.
enum ArtCompilationReason {
ART_COMPILATION_REASON_UNSPECIFIED = 0;
ART_COMPILATION_REASON_ERROR = 1;
ART_COMPILATION_REASON_UNKNOWN = 2;
ART_COMPILATION_REASON_FIRST_BOOT = 3;
ART_COMPILATION_REASON_BOOT = 4;
ART_COMPILATION_REASON_INSTALL = 5;
ART_COMPILATION_REASON_BG_DEXOPT = 6;
ART_COMPILATION_REASON_AB_OTA = 7;
ART_COMPILATION_REASON_INACTIVE = 8;
ART_COMPILATION_REASON_SHARED = 9;
ART_COMPILATION_REASON_INSTALL_WITH_DEX_METADATA = 10;
ART_COMPILATION_REASON_POST_BOOT = 11;
ART_COMPILATION_REASON_INSTALL_FAST = 12;
ART_COMPILATION_REASON_INSTALL_BULK = 13;
ART_COMPILATION_REASON_INSTALL_BULK_SECONDARY = 14;
ART_COMPILATION_REASON_INSTALL_BULK_DOWNGRADED = 15;
ART_COMPILATION_REASON_INSTALL_BULK_SECONDARY_DOWNGRADED = 16;
ART_COMPILATION_REASON_BOOT_AFTER_OTA = 17;
ART_COMPILATION_REASON_PREBUILT = 18;
ART_COMPILATION_REASON_CMDLINE = 19;
ART_COMPILATION_REASON_VDEX = 20;
ART_COMPILATION_REASON_BOOT_AFTER_MAINLINE_UPDATE = 21;
}
// Indicates which kind of measurement ART is reporting.
//
// Where it makes sense, the datum ID ends with the type of datum (counter or histogram) and the
// units.
// Note: Histograms are not yet reported by statsd.
enum ArtDatumId {
ART_DATUM_INVALID = 0;
ART_DATUM_GC_WORLD_STOP_TIME_AVG_MICROS = 1;
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_TIME_HISTO_MILLIS = 2;
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_COUNT = 3;
ART_DATUM_GC_FULL_HEAP_COLLECTION_TIME_HISTO_MILLIS = 4;
ART_DATUM_GC_FULL_HEAP_COLLECTION_COUNT = 5;
ART_DATUM_JIT_METHOD_COMPILE_TIME_MICROS = 6;
ART_DATUM_AOT_COMPILE_TIME = 7;
ART_DATUM_CLASS_VERIFICATION_TIME_COUNTER_MICROS = 8;
ART_DATUM_CLASS_LOADING_TIME_COUNTER_MICROS = 9;
// Metrics IDs for dex2oat.
ART_DATUM_DEX2OAT_RESULT_CODE = 10 [deprecated = true];
ART_DATUM_DEX2OAT_DEX_CODE_COUNTER_BYTES = 11 [deprecated = true];
ART_DATUM_DEX2OAT_TOTAL_TIME_COUNTER_MILLIS = 12 [deprecated = true];
ART_DATUM_DEX2OAT_VERIFY_DEX_FILE_TIME_COUNTER_MILLIS = 13 [deprecated = true];
ART_DATUM_DEX2OAT_FAST_VERIFY_TIME_COUNTER_MILLIS = 14 [deprecated = true];
ART_DATUM_DEX2OAT_RESOLVE_METHODS_AND_FIELDS_TIME_COUNTER_MILLIS = 15 [deprecated = true];
ART_DATUM_CLASS_VERIFICATION_COUNT = 16;
ART_DATUM_GC_TOTAL_BYTES_ALLOCATED = 17;
ART_DATUM_GC_TOTAL_METADATA_SIZE_BYTES = 18 [deprecated=true];
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_HISTO_MB_PER_SEC = 19;
ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_HISTO_MB_PER_SEC = 20;
ART_DATUM_JIT_METHOD_COMPILE_COUNT = 21;
ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_HISTO_MB_PER_SEC = 22;
ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_HISTO_MB_PER_SEC = 23;
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC = 24;
ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC = 25;
ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_AVG_MB_PER_SEC = 26;
ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_AVG_MB_PER_SEC = 27;
ART_DATUM_GC_TOTAL_COLLECTION_TIME_MS = 28;
// New metrics to support averages reported as sum (numerator) and count (denominator),
// in order to make it easier to be reported as Value Metrics.
// numerator from ART_DATUM_GC_WORLD_STOP_TIME_AVG_MICROS
ART_DATUM_GC_WORLD_STOP_TIME_US = 29;
// denominator from ART_DATUM_GC_WORLD_STOP_TIME_AVG_MICROS
ART_DATUM_GC_WORLD_STOP_COUNT = 30;
// numerator from ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_SCANNED_BYTES = 31;
// numerator from ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_FREED_BYTES = 32;
// denominator from ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_AVG_MB_PER_SEC
// and ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_DURATION_MS = 33;
// numerator from ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_GC_FULL_HEAP_COLLECTION_SCANNED_BYTES = 34;
// numerator from ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_GC_FULL_HEAP_COLLECTION_FREED_BYTES = 35;
// denominator from ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_AVG_MB_PER_SEC
// and ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_GC_FULL_HEAP_COLLECTION_DURATION_MS = 36;
}
// Indicates which kind of measurement ART is reporting as increments / deltas.
// Next ID: 37
enum ArtDatumDeltaId {
ART_DATUM_DELTA_INVALID = 0;
// These IDs are the equivalent of the ArtDatumId values,
// but for reporting increments / deltas.
ART_DATUM_DELTA_CLASS_VERIFICATION_COUNT = 16;
ART_DATUM_DELTA_CLASS_VERIFICATION_TIME_MICROS = 8;
ART_DATUM_DELTA_CLASS_LOADING_TIME_MICROS = 9;
ART_DATUM_DELTA_GC_FULL_HEAP_COLLECTION_COUNT = 5;
ART_DATUM_DELTA_GC_TOTAL_BYTES_ALLOCATED = 17;
ART_DATUM_DELTA_GC_TOTAL_COLLECTION_TIME_MS = 28;
ART_DATUM_DELTA_GC_YOUNG_GENERATION_COLLECTION_COUNT = 3;
ART_DATUM_DELTA_JIT_METHOD_COMPILE_COUNT = 21;
ART_DATUM_DELTA_JIT_METHOD_COMPILE_TIME_MICROS = 6;
// numerator from ART_DATUM_GC_WORLD_STOP_TIME_AVG_MICROS
ART_DATUM_DELTA_GC_WORLD_STOP_TIME_US = 29;
// denominator from ART_DATUM_GC_WORLD_STOP_TIME_AVG_MICROS
ART_DATUM_DELTA_GC_WORLD_STOP_COUNT = 30;
// numerator from ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_DELTA_GC_YOUNG_GENERATION_COLLECTION_SCANNED_BYTES = 31;
// numerator from ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_DELTA_GC_YOUNG_GENERATION_COLLECTION_FREED_BYTES = 32;
// denominator from ART_DATUM_GC_YOUNG_GENERATION_TRACING_THROUGHPUT_AVG_MB_PER_SEC
// and ART_DATUM_GC_YOUNG_GENERATION_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_DELTA_GC_YOUNG_GENERATION_COLLECTION_DURATION_MS = 33;
// numerator from ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_DELTA_GC_FULL_HEAP_COLLECTION_SCANNED_BYTES = 34;
// numerator from ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_DELTA_GC_FULL_HEAP_COLLECTION_FREED_BYTES = 35;
// denominator from ART_DATUM_GC_FULL_HEAP_TRACING_THROUGHPUT_AVG_MB_PER_SEC
// and ART_DATUM_GC_FULL_HEAP_COLLECTION_THROUGHPUT_AVG_MB_PER_SEC
ART_DATUM_DELTA_GC_FULL_HEAP_COLLECTION_DURATION_MS = 36;
// The number of milliseconds since the last time metrics were reported.
ART_DATUM_DELTA_TIME_ELAPSED_MS = 37;
reserved 1, 2, 4, 7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24, 25, 26, 27;
}
// DEPRECATED - Used to indicate what class of thread the reported values apply to.
// Deprecated in Jan 2024 as the corresponding filter is no longer needed.
enum ArtThreadType {
ART_THREAD_UNKNOWN = 0;
ART_THREAD_MAIN = 1;
ART_THREAD_BACKGROUND = 2;
}
// DEPRECATED - Used to indicate the type of dex metadata.
// Deprecated in Jan 2024 as the corresponding filter is no longer needed.
enum ArtDexMetadataType {
ART_DEX_METADATA_TYPE_UNKNOWN = 0;
ART_DEX_METADATA_TYPE_PROFILE = 1;
ART_DEX_METADATA_TYPE_VDEX = 2;
ART_DEX_METADATA_TYPE_PROFILE_AND_VDEX = 3;
ART_DEX_METADATA_TYPE_NONE = 4;
ART_DEX_METADATA_TYPE_ERROR = 5;
}
// DEPRECATED - Used to indicate the type of the apk.
// Deprecated in Jan 2024 as the corresponding filter is no longer needed.
enum ArtApkType {
ART_APK_TYPE_UNKNOWN = 0;
ART_APK_TYPE_BASE = 1;
ART_APK_TYPE_SPLIT = 2;
}
// Indicates the ISA.
enum ArtIsa {
ART_ISA_UNKNOWN = 0;
ART_ISA_ARM = 1;
ART_ISA_ARM64 = 2;
ART_ISA_X86 = 3;
ART_ISA_X86_64 = 4;
ART_ISA_MIPS = 5;
ART_ISA_MIPS64 = 6;
ART_ISA_RISCV64 = 7;
}
// Indicates the GC collector type.
enum ArtGcCollectorType {
ART_GC_COLLECTOR_TYPE_UNKNOWN = 0;
ART_GC_COLLECTOR_TYPE_MARK_SWEEP = 1;
ART_GC_COLLECTOR_TYPE_CONCURRENT_MARK_SWEEP = 2;
ART_GC_COLLECTOR_TYPE_CONCURRENT_MARK_COMPACT = 3;
ART_GC_COLLECTOR_TYPE_SEMI_SPACE = 4;
ART_GC_COLLECTOR_TYPE_CONCURRENT_COPYING = 5;
ART_GC_COLLECTOR_TYPE_CONCURRENT_COPYING_BACKGROUND = 6;
ART_GC_COLLECTOR_TYPE_CONCURRENT_MARK_COMPACT_BACKGROUND = 7;
}
// Indicates support for userfaultfd and minor fault mode.
enum ArtUffdSupport {
ART_UFFD_SUPPORT_UNKNOWN = 0;
ART_UFFD_SUPPORT_UFFD_NOT_SUPPORTED = 1;
ART_UFFD_SUPPORT_MINOR_FAULT_MODE_NOT_SUPPORTED = 2;
ART_UFFD_SUPPORT_MINOR_FAULT_MODE_SUPPORTED = 3;
}
message ArtDatumReported {
// The session ID is used to correlate this report with others from the same ART instance.
optional int64 session_id = 1;
// The UID of the app that ART is running on behalf of.
optional int32 uid = 2 [(is_uid) = true];
// What compiler filter the APK or DEX file was compiled with.
optional ArtCompileFilter compile_filter = 3;
// Why the package was compiled the way it was.
optional ArtCompilationReason compilation_reason = 4;
// The number of milliseconds since the ART runtime instance was started.
optional int64 timestamp_millis = 5;
// What kind of thread (UI or background) this metric corresponds to.
optional ArtThreadType thread_type = 6 [deprecated = true];
// Which counter this is that is being reported.
optional ArtDatumId kind = 7;
// The value of the counter.
optional int64 value = 8;
// The type of dex metadata
optional ArtDexMetadataType dex_metadata_type = 9 [deprecated = true];
// The type of the APK file.
optional ArtApkType apk_type = 10 [deprecated = true];
// The ISA of the device.
optional ArtIsa isa = 11;
// The Garbage Collector used in the Android Runtime.
optional ArtGcCollectorType gc = 12;
// The support for userfaultfd and minor fault mode.
optional ArtUffdSupport uffd_support = 13;
}
// ArtDatumDeltaReported is the same as ArtDatumReported, except for the kind field
// (ArtDatumDeltaId here, ArtDatumId for ArtDatumReported)
message ArtDatumDeltaReported {
// The session ID is used to correlate this report with others from the same ART instance.
optional int64 session_id = 1;
// The UID of the app that ART is running on behalf of.
optional int32 uid = 2 [(is_uid) = true];
// What compiler filter the APK or DEX file was compiled with.
optional ArtCompileFilter compile_filter = 3;
// Why the package was compiled the way it was.
optional ArtCompilationReason compilation_reason = 4;
// The number of milliseconds since the ART runtime instance was started.
optional int64 timestamp_millis = 5;
// What kind of thread (UI or background) this metric corresponds to.
optional ArtThreadType thread_type = 6 [deprecated = true];
// Which counter this is that is being reported.
optional ArtDatumDeltaId kind = 7;
// The value of the counter.
optional int64 value = 8;
// The type of dex metadata
optional ArtDexMetadataType dex_metadata_type = 9 [deprecated = true];
// The type of the APK file.
optional ArtApkType apk_type = 10 [deprecated = true];
// The ISA of the device.
optional ArtIsa isa = 11;
// The Garbage Collector used in the Android Runtime.
optional ArtGcCollectorType gc = 12;
// The support for userfaultfd and minor fault mode.
optional ArtUffdSupport uffd_support = 13;
}
/**
* Logs ART metrics that are device-specific (as opposed to app-specific ones logged by
* ArtDatumReported).
*
* Logged from:
* art/runtime/metrics/statsd.cc
*/
message ArtDeviceDatumReported {
enum BootImageStatus {
// Unknown value.
STATUS_UNSPECIFIED = 0;
// Boot image(s) are fully usable.
STATUS_FULL = 1;
// Only the minimal boot image is usable.
STATUS_MINIMAL = 2;
// No boot image is usable.
STATUS_NONE = 3;
}
optional BootImageStatus boot_image_status = 1;
}
/**
* Reports ART metrics that are device-specific (as opposed to app-specific ones logged by
* ArtDatumReported).
*/
message ArtDeviceStatus {
enum BootImageStatus {
// Unknown value.
STATUS_UNSPECIFIED = 0;
// Boot image(s) are fully usable.
STATUS_FULL = 1;
// Only the minimal boot image is usable.
STATUS_MINIMAL = 2;
// No boot image is usable.
STATUS_NONE = 3;
}
optional BootImageStatus boot_image_status = 1;
}