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

Commit 53731ea9 authored by Josh Gao's avatar Josh Gao
Browse files

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
parent 6cbc4013
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -545,6 +545,8 @@ public final class SystemServer implements Dumpable {

        new Thread(() -> {
            boolean enabled = false;
            long nextWrite = 0;

            while (true) {
                int maxFd = getMaxFd();
                if (maxFd > enableThreshold) {
@@ -555,12 +557,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 {