Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ea238d2 authored by Olivier Gaillard's avatar Olivier Gaillard
Browse files

Update BinderCalls and add BinderCallsExceptions.

Add a new field recorded_call_count since binder calls now supports
random sampling.

Add BinderCallsExceptions to track which exception classes are thrown by
binder calls.

Test: n/a (proto changes only)
Change-Id: I8f9f9a027fd950706112a9deef39ac01cacaa24d
parent 77ad3791
Loading
Loading
Loading
Loading
+61 −28
Original line number Diff line number Diff line
@@ -131,7 +131,7 @@ message Atom {
    }

    // Pulled events will start at field 10000.
    // Next: 10023
    // Next: 10024
    oneof pulled {
        WifiBytesTransfer wifi_bytes_transfer = 10000;
        WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001;
@@ -156,6 +156,7 @@ message Atom {
        FullBatteryCapacity full_battery_capacity = 10020;
        Temperature temperature = 10021;
        BinderCalls binder_calls = 10022;
        BinderCallsExceptions binder_calls_exceptions = 10023;
    }

    // DO NOT USE field numbers above 100,000 in AOSP. Field numbers above
@@ -2094,35 +2095,67 @@ message Temperature {
 *
 * Binder stats are cumulative from boot unless somebody reset the data using
 * > adb shell dumpsys binder_calls_stats --reset
 *
 * Next tag: 14
 */
message BinderCalls {
    optional int32 uid = 1 [(is_uid) = true];
    // Fully qualified class name of the API call.
    //
    // This is a system server class name.
    //
    // TODO(gaillard): figure out if binder call stats includes data from isolated uids, if a uid
    // gets recycled and we have isolated uids, we might attribute the data incorrectly.
    // TODO(gaillard): there is a high dimensions cardinality, figure out if we should drop the less
    // commonly used APIs.
   optional int32 uid = 1 [(is_uid) = true];
   // Fully qualified class name of the API call.
    optional string service_class_name = 2;
   // Method name of the API call. It can also be a transaction code if we cannot resolve it to a
   // name. See Binder#getTransactionName.
    // Method name of the API call. It can also be a transaction code if we cannot
    // resolve it to a name. See Binder#getTransactionName.
    //
    // This is a system server method name.
    optional string service_method_name = 3;
    // Total number of API calls.
    optional int64 call_count = 4;
    // True if the screen was interactive PowerManager#isInteractive at the end of the call.
    optional bool screen_interactive = 13;
    // Total number of API calls we have data recorded for. If we collected data for all the calls,
    // call_count will be equal to recorded_call_count.
    //
    // If recorded_call_count is different than call_count, it means data collection has been
    // sampled. All the fields below will be sampled in this case.
    optional int64 recorded_call_count = 12;
    // Number of exceptions thrown by the API.
   optional int64 exception_count = 5;
    optional int64 recorded_exception_count = 5;
    // Total latency of all API calls.
   // Average can be computed using total_latency_micros / call_count.
   optional int64 total_latency_micros = 6;
    // Average can be computed using total_latency_micros / recorded_call_count.
    optional int64 recorded_total_latency_micros = 6;
    // Maximum latency of one API call.
   optional int64 max_latency_micros = 7;
    optional int64 recorded_max_latency_micros = 7;
    // Total CPU usage of all API calls.
   optional int64 total_cpu_micros = 8;
    // Average can be computed using total_cpu_micros / recorded_call_count.
    // Total can be computed using total_cpu_micros / recorded_call_count * call_count.
    optional int64 recorded_total_cpu_micros = 8;
    // Maximum CPU usage of one API call.
   optional int64 max_cpu_micros = 9;
    optional int64 recorded_max_cpu_micros = 9;
    // Maximum parcel reply size of one API call.
   optional int64 max_reply_size_bytes = 10;
    optional int64 recorded_max_reply_size_bytes = 10;
    // Maximum parcel request size of one API call.
   optional int64 max_request_size_bytes = 11;
    optional int64 recorded_max_request_size_bytes = 11;
}

/**
 * Pulls the statistics of exceptions during calls to Binder.
 *
 * Binder stats are cumulative from boot unless somebody reset the data using
 * > adb shell dumpsys binder_calls_stats --reset
 */
message BinderCallsExceptions {
    // Exception class name, e.g. java.lang.IllegalArgumentException.
    //
    // This is an exception class name thrown by the system server.
    optional string exception_class_name = 1;
    // Total number of exceptions.
    optional int64 exception_count = 2;
}

/**