Add stats puller for PinnerService data
Change-Id: Iba52940d071af9523f90636981cce22fa3b9b172 Bug: 217162456 Test: compile Test: flash Test: pull atom with testdrive
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.server;
|
||||
|
||||
import static android.app.ActivityManager.UID_OBSERVER_ACTIVE;
|
||||
import static android.app.ActivityManager.UID_OBSERVER_GONE;
|
||||
import static android.os.Process.SYSTEM_UID;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
@@ -261,6 +262,37 @@ public final class PinnerService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns information about pinned files and sizes for StatsPullAtomService. */
|
||||
public List<PinnedFileStats> dumpDataForStatsd() {
|
||||
List<PinnedFileStats> pinnedFileStats = new ArrayList<>();
|
||||
synchronized (PinnerService.this) {
|
||||
for (PinnedFile pinnedFile : mPinnedFiles) {
|
||||
pinnedFileStats.add(new PinnedFileStats(SYSTEM_UID, pinnedFile));
|
||||
}
|
||||
|
||||
for (int key : mPinnedApps.keySet()) {
|
||||
PinnedApp app = mPinnedApps.get(key);
|
||||
for (PinnedFile pinnedFile : mPinnedApps.get(key).mFiles) {
|
||||
pinnedFileStats.add(new PinnedFileStats(app.uid, pinnedFile));
|
||||
}
|
||||
}
|
||||
}
|
||||
return pinnedFileStats;
|
||||
}
|
||||
|
||||
/** Wrapper class for statistics for a pinned file. */
|
||||
public static class PinnedFileStats {
|
||||
public final int uid;
|
||||
public final String filename;
|
||||
public final int sizeKb;
|
||||
|
||||
protected PinnedFileStats(int uid, PinnedFile file) {
|
||||
this.uid = uid;
|
||||
this.filename = file.fileName.substring(file.fileName.lastIndexOf('/') + 1);
|
||||
this.sizeKb = file.bytesPinned / 1024;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for on start pinning message
|
||||
*/
|
||||
|
||||
@@ -197,6 +197,8 @@ import com.android.role.RoleManagerLocal;
|
||||
import com.android.server.BinderCallsStatsService;
|
||||
import com.android.server.LocalManagerRegistry;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.PinnerService;
|
||||
import com.android.server.PinnerService.PinnedFileStats;
|
||||
import com.android.server.SystemService;
|
||||
import com.android.server.SystemServiceManager;
|
||||
import com.android.server.am.MemoryStatUtil.MemoryStat;
|
||||
@@ -727,6 +729,8 @@ public class StatsPullAtomService extends SystemService {
|
||||
return pullAccessibilityFloatingMenuStatsLocked(atomTag, data);
|
||||
case FrameworkStatsLog.MEDIA_CAPABILITIES:
|
||||
return pullMediaCapabilitiesStats(atomTag, data);
|
||||
case FrameworkStatsLog.PINNED_FILE_SIZES_PER_PACKAGE:
|
||||
return pullSystemServerPinnerStats(atomTag, data);
|
||||
case FrameworkStatsLog.PENDING_INTENTS_PER_PACKAGE:
|
||||
return pullPendingIntentsPerPackage(atomTag, data);
|
||||
default:
|
||||
@@ -926,6 +930,7 @@ public class StatsPullAtomService extends SystemService {
|
||||
registerAccessibilityFloatingMenuStats();
|
||||
registerMediaCapabilitiesStats();
|
||||
registerPendingIntentsPerPackagePuller();
|
||||
registerPinnerServiceStats();
|
||||
}
|
||||
|
||||
private void initAndRegisterNetworkStatsPullers() {
|
||||
@@ -4607,6 +4612,26 @@ public class StatsPullAtomService extends SystemService {
|
||||
return StatsManager.PULL_SUCCESS;
|
||||
}
|
||||
|
||||
private void registerPinnerServiceStats() {
|
||||
int tagId = FrameworkStatsLog.PINNED_FILE_SIZES_PER_PACKAGE;
|
||||
mStatsManager.setPullAtomCallback(
|
||||
tagId,
|
||||
null, // use default PullAtomMetadata values
|
||||
DIRECT_EXECUTOR,
|
||||
mStatsCallbackImpl
|
||||
);
|
||||
}
|
||||
|
||||
int pullSystemServerPinnerStats(int atomTag, List<StatsEvent> pulledData) {
|
||||
PinnerService pinnerService = LocalServices.getService(PinnerService.class);
|
||||
List<PinnedFileStats> pinnedFileStats = pinnerService.dumpDataForStatsd();
|
||||
for (PinnedFileStats pfstats : pinnedFileStats) {
|
||||
pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag,
|
||||
pfstats.uid, pfstats.filename, pfstats.sizeKb));
|
||||
}
|
||||
return StatsManager.PULL_SUCCESS;
|
||||
}
|
||||
|
||||
private byte[] toBytes(List<Integer> audioEncodings) {
|
||||
ProtoOutputStream protoOutputStream = new ProtoOutputStream();
|
||||
for (int audioEncoding : audioEncodings) {
|
||||
|
||||
Reference in New Issue
Block a user