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

Commit 38063f33 authored by Yao Chen's avatar Yao Chen Committed by android-build-merger
Browse files

Merge "Add uid field annotation in atoms.proto and statd memory usage optimization." into pi-dev

am: aed0fed0

Change-Id: Ice410d3fc7b9e3c8fb410e2ae024956f5ee4821d
parents 41651c75 aed0fed0
Loading
Loading
Loading
Loading
+16 −8
Original line number Diff line number Diff line
@@ -112,8 +112,8 @@ void updateUid(Value* value, int hostUid) {
}

void StatsLogProcessor::mapIsolatedUidToHostUidIfNecessaryLocked(LogEvent* event) const {
    if (android::util::kAtomsWithAttributionChain.find(event->GetTagId()) !=
        android::util::kAtomsWithAttributionChain.end()) {
    if (android::util::AtomsInfo::kAtomsWithAttributionChain.find(event->GetTagId()) !=
        android::util::AtomsInfo::kAtomsWithAttributionChain.end()) {
        for (auto& value : *(event->getMutableValues())) {
            if (value.mField.getPosAtDepth(0) > kAttributionField) {
                break;
@@ -123,12 +123,20 @@ void StatsLogProcessor::mapIsolatedUidToHostUidIfNecessaryLocked(LogEvent* event
                updateUid(&value.mValue, hostUid);
            }
        }
    } else if (android::util::kAtomsWithUidField.find(event->GetTagId()) !=
                       android::util::kAtomsWithUidField.end() &&
               event->getValues().size() > 0 && (event->getValues())[0].mValue.getType() == INT) {
        Value& value = (*event->getMutableValues())[0].mValue;
    } else {
        auto it = android::util::AtomsInfo::kAtomsWithUidField.find(event->GetTagId());
        if (it != android::util::AtomsInfo::kAtomsWithUidField.end()) {
            int uidField = it->second;  // uidField is the field number in proto,
                                        // starting from 1
            if (uidField > 0 && (int)event->getValues().size() >= uidField &&
                (event->getValues())[uidField - 1].mValue.getType() == INT) {
                Value& value = (*event->getMutableValues())[uidField - 1].mValue;
                const int hostUid = mUidMap->getHostUidOrSelf(value.int_value);
                updateUid(&value, hostUid);
            } else {
                ALOGE("Malformed log, uid not found. %s", event->ToString().c_str());
            }
        }
    }
}

+3 −0
Original line number Diff line number Diff line
@@ -67,4 +67,7 @@ message StateAtomFieldOption {
extend google.protobuf.FieldOptions {
    // Flags to decorate an atom that presents a state change.
    optional StateAtomFieldOption stateFieldOption = 50000;

    // Flags to decorate the uid fields in an atom.
    optional bool is_uid = 50001 [default = false];
}
 No newline at end of file
+35 −31
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ message ScreenStateChanged {
 *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
 */
message UidProcessStateChanged {
    optional int32 uid = 1 [(stateFieldOption).option = PRIMARY];
    optional int32 uid = 1 [(stateFieldOption).option = PRIMARY, (is_uid) = true];

    // The state, from frameworks/base/core/proto/android/app/enums.proto.
    optional android.app.ProcessStateEnum state = 2 [(stateFieldOption).option = EXCLUSIVE];
@@ -223,7 +223,7 @@ message UidProcessStateChanged {
 */
message ProcessLifeCycleStateChanged {
    // TODO: should be a string tagged w/ uid annotation
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The process name (usually same as the app name).
    optional string name = 2;
@@ -593,7 +593,7 @@ message WakeupAlarmOccurred {
 */
message MobileRadioPowerStateChanged {
    // TODO: Add attribution instead of uid?
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // Power state, from frameworks/base/core/proto/android/telephony/enums.proto.
    optional android.telephony.DataConnectionPowerStateEnum state = 2;
@@ -608,7 +608,7 @@ message MobileRadioPowerStateChanged {
 */
message WifiRadioPowerStateChanged {
    // TODO: Add attribution instead of uid?
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // Power state, from frameworks/base/core/proto/android/telephony/enums.proto.
    optional android.telephony.DataConnectionPowerStateEnum state = 2;
@@ -1130,7 +1130,8 @@ message ChargeCyclesReported {
 */
message DaveyOccurred {
    // The UID that logged this atom.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    ;

    // Amount of time it took to render the frame. Should be >=700ms.
    optional int64 jank_duration_millis = 2;
@@ -1187,7 +1188,7 @@ message SettingChanged {
  *   frameworks/base/services/core/java/com/android/server/am/ActivityRecord.java
 */
message ActivityForegroundStateChanged {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    optional string pkg_name = 2;
    optional string class_name = 3;

@@ -1205,7 +1206,7 @@ message ActivityForegroundStateChanged {
 */
message DropboxErrorChanged {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // Tag used when recording this error to dropbox. Contains data_ or system_ prefix.
    optional string tag = 2;
@@ -1236,7 +1237,7 @@ message DropboxErrorChanged {
 */
message AppBreadcrumbReported {
    // The uid of the application that sent this custom atom.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // An arbitrary label chosen by the developer. For Android P, the label should be in [0, 16).
    optional int32 label = 2;
@@ -1260,7 +1261,7 @@ message AppBreadcrumbReported {
 */
message AnomalyDetected {
    // Uid that owns the config whose anomaly detection alert fired.
    optional int32 config_uid = 1;
    optional int32 config_uid = 1 [(is_uid) = true];

    // Id of the config whose anomaly detection alert fired.
    optional int64 config_id = 2;
@@ -1271,7 +1272,7 @@ message AnomalyDetected {

message AppStartChanged {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The app package name.
    optional string pkg_name = 2;
@@ -1318,7 +1319,7 @@ message AppStartChanged {

message AppStartCancelChanged {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The app package name.
    optional string pkg_name = 2;
@@ -1338,7 +1339,7 @@ message AppStartCancelChanged {

message AppStartFullyDrawnChanged {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The app package name.
    optional string pkg_name = 2;
@@ -1369,7 +1370,7 @@ message AppStartFullyDrawnChanged {
 */
message PictureInPictureStateChanged {
    // -1 if it is not available
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    optional string short_name = 2;

@@ -1388,7 +1389,7 @@ message PictureInPictureStateChanged {
 *     services/core/java/com/android/server/wm/Session.java
 */
message OverlayStateChanged {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    optional string package_name = 2;

@@ -1409,7 +1410,7 @@ message OverlayStateChanged {
 *     //frameworks/base/services/core/java/com/android/server/am/ActiveServices.java
 */
message ForegroundServiceStateChanged {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    // package_name + "/" + class_name
    optional string short_name = 2;

@@ -1429,6 +1430,7 @@ message ForegroundServiceStateChanged {
 *   frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java
 */
message IsolatedUidChanged {
    // NOTE: DO NOT annotate uid field in this atom. This atom is specially handled in statsd.
    // The host UID. Generally, we should attribute metrics from the isolated uid to the host uid.
    optional int32 parent_uid = 1;

@@ -1450,7 +1452,7 @@ message IsolatedUidChanged {
message PacketWakeupOccurred {
    // The uid owning the socket into which the packet was delivered, or -1 if the packet was
    // delivered nowhere.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    // The interface name on which the packet was received.
    optional string iface = 2;
    // The ethertype value of the packet.
@@ -1478,7 +1480,7 @@ message PacketWakeupOccurred {
 */
message AppStartMemoryStateCaptured {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The process name.
    optional string process_name = 2;
@@ -1524,7 +1526,7 @@ message LmkStateChanged {
 */
message LmkKillOccurred {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The process name.
    optional string process_name = 2;
@@ -1556,7 +1558,7 @@ message LmkKillOccurred {
 */
message AppDied {
    // timestamp(elapsedRealtime) of record creation
    optional uint64 timestamp_millis = 1;
    optional uint64 timestamp_millis = 1 [(stateFieldOption).option = EXCLUSIVE];
}

//////////////////////////////////////////////////////////////////////
@@ -1570,7 +1572,7 @@ message AppDied {
 *   StatsCompanionService (using BatteryStats to get which interfaces are wifi)
 */
message WifiBytesTransfer {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    optional int64 rx_bytes = 2;

@@ -1588,9 +1590,10 @@ message WifiBytesTransfer {
 *   StatsCompanionService (using BatteryStats to get which interfaces are wifi)
 */
message WifiBytesTransferByFgBg {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // 1 denotes foreground and 0 denotes background. This is called Set in NetworkStats.
    // 1 denotes foreground and 0 denotes background. This is called Set in
    // NetworkStats.
    optional int32 is_foreground = 2;

    optional int64 rx_bytes = 3;
@@ -1609,7 +1612,7 @@ message WifiBytesTransferByFgBg {
 *   StatsCompanionService (using BatteryStats to get which interfaces are mobile data)
 */
message MobileBytesTransfer {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    optional int64 rx_bytes = 2;

@@ -1627,9 +1630,10 @@ message MobileBytesTransfer {
 *   StatsCompanionService (using BatteryStats to get which interfaces are mobile data)
 */
message MobileBytesTransferByFgBg {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // 1 denotes foreground and 0 denotes background. This is called Set in NetworkStats.
    // 1 denotes foreground and 0 denotes background. This is called Set in
    // NetworkStats.
    optional int32 is_foreground = 2;

    optional int64 rx_bytes = 3;
@@ -1648,7 +1652,7 @@ message MobileBytesTransferByFgBg {
 *   StatsCompanionService
 */
message BluetoothBytesTransfer {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    optional int64 rx_bytes = 2;

@@ -1708,7 +1712,7 @@ message CpuTimePerFreq {
 * Note that isolated process uid time should be attributed to host uids.
 */
message CpuTimePerUid {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    optional uint64 user_time_millis = 2;
    optional uint64 sys_time_millis = 3;
}
@@ -1719,7 +1723,7 @@ message CpuTimePerUid {
 * For each uid, we order the time by descending frequencies.
 */
message CpuTimePerUidFreq {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    optional uint32 freq_index = 2;
    optional uint64 time_millis = 3;
}
@@ -1801,7 +1805,7 @@ message BluetoothActivityInfo {
 */
message ProcessMemoryState {
    // The uid if available. -1 means not available.
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];

    // The process name.
    optional string process_name = 2;
@@ -1853,7 +1857,7 @@ message SystemUptime {
 * The file contains a monotonically increasing count of time for a single boot.
 */
message CpuActiveTime {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    optional uint64 time_millis = 2;
}

@@ -1867,7 +1871,7 @@ message CpuActiveTime {
 * The file contains a monotonically increasing count of time for a single boot.
 */
message CpuClusterTime {
    optional int32 uid = 1;
    optional int32 uid = 1 [(is_uid) = true];
    optional int32 cluster_index = 2;
    optional uint64 time_millis = 3;
}
+2 −1
Original line number Diff line number Diff line
@@ -112,7 +112,8 @@ void mergeIsolatedUidsToHostUid(vector<shared_ptr<LogEvent>>& data, const sp<Uid
        VLOG("Unknown pull atom id %d", tagId);
        return;
    }
    if (android::util::kAtomsWithUidField.find(tagId) == android::util::kAtomsWithUidField.end()) {
    if (android::util::AtomsInfo::kAtomsWithUidField.find(tagId) ==
        android::util::AtomsInfo::kAtomsWithUidField.end()) {
        VLOG("No uid to merge for atom %d", tagId);
        return;
    }
+2 −2
Original line number Diff line number Diff line
@@ -134,8 +134,8 @@ void EventMetricProducer::onMatchedLogEventInternalLocked(
    uint64_t wrapperToken =
            mProto->start(FIELD_TYPE_MESSAGE | FIELD_COUNT_REPEATED | FIELD_ID_DATA);
    const bool truncateTimestamp =
        android::util::kNotTruncatingTimestampAtomWhiteList.find(event.GetTagId()) ==
        android::util::kNotTruncatingTimestampAtomWhiteList.end();
            android::util::AtomsInfo::kNotTruncatingTimestampAtomWhiteList.find(event.GetTagId()) ==
            android::util::AtomsInfo::kNotTruncatingTimestampAtomWhiteList.end();
    if (truncateTimestamp) {
        mProto->write(FIELD_TYPE_INT64 | FIELD_ID_ELAPSED_TIMESTAMP_NANOS,
            (long long)truncateTimestampNsToFiveMinutes(event.GetElapsedTimestampNs()));
Loading