diff options
author | Josh Gao <jmgao@google.com> | 2021-03-17 09:20:01 -0700 |
---|---|---|
committer | Josh Gao <jmgao@google.com> | 2021-05-19 14:29:36 -0700 |
commit | a6596c9925bdb7fead7ed31520bee7d05728c74d (patch) | |
tree | 78e716c3e4febcbe33b447a88583b7055afcdd67 /services/java | |
parent | 92c4b3d31d1d09d5d5c5589926e7f5520ce5062a (diff) |
fdtrack: add stats logging.
Bug: http://b/183008833
Bug: http://b/183018597
Test: adb shell 'setprop persist.sys.debug.fdtrack_interval 10; stop; start' && statsd_testdrive 352
Change-Id: Ibc2293f8f1c7f0f29a166ac8dc93afc8dfd8b7de
Merged-In: Ibc2293f8f1c7f0f29a166ac8dc93afc8dfd8b7de
(cherry picked from commit 53731ea9ab0c131fb51e891946a17895571973d1)
Diffstat (limited to 'services/java')
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 7e718e52b7a0..ad89e96c7438 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -546,6 +546,8 @@ public final class SystemServer implements Dumpable { new Thread(() -> { boolean enabled = false; + long nextWrite = 0; + while (true) { int maxFd = getMaxFd(); if (maxFd > enableThreshold) { @@ -556,12 +558,30 @@ public final class SystemServer implements Dumpable { if (maxFd > enableThreshold && !enabled) { Slog.i("System", "fdtrack enable threshold reached, enabling"); + FrameworkStatsLog.write(FrameworkStatsLog.FDTRACK_EVENT_OCCURRED, + FrameworkStatsLog.FDTRACK_EVENT_OCCURRED__EVENT__ENABLED, + maxFd); + System.loadLibrary("fdtrack"); enabled = true; } else if (maxFd > abortThreshold) { Slog.i("System", "fdtrack abort threshold reached, dumping and aborting"); + FrameworkStatsLog.write(FrameworkStatsLog.FDTRACK_EVENT_OCCURRED, + FrameworkStatsLog.FDTRACK_EVENT_OCCURRED__EVENT__ABORTING, + maxFd); + dumpHprof(); fdtrackAbort(); + } else { + // Limit this to once per hour. + long now = SystemClock.elapsedRealtime(); + if (now > nextWrite) { + nextWrite = now + 60 * 60 * 1000; + FrameworkStatsLog.write(FrameworkStatsLog.FDTRACK_EVENT_OCCURRED, + enabled ? FrameworkStatsLog.FDTRACK_EVENT_OCCURRED__EVENT__ENABLED + : FrameworkStatsLog.FDTRACK_EVENT_OCCURRED__EVENT__DISABLED, + maxFd); + } } try { |