wire up sampling profiler to dropbox
When system property "persist.sys.profiler_hz" > 0, SamplingProfilerService is loaded to SystemServer. It creates a FileObserver, watching any new file in the snapshot directory. When a snapshot is found, it is put in dropbox and deleted after that. SamplingProfilerIntegration writes snapshots with headers. Headers are <name, value> pairs, instantiated by caller. Currently header format is (also in source comment): Version: <version number of profiler>\n Process: <process name>\n Package: <package name, if exists>\n Package-Version: <version number of the package, if exists>\n Build: <fingerprint>\n \n <the actual snapshot content begins here...> BUG=2732642 Change-Id: I2c1699f1728e603de13dbd38f9d8443cd3eecc06
This commit is contained in:
@@ -77,7 +77,7 @@ class ServerThread extends Thread {
|
||||
android.os.Process.THREAD_PRIORITY_FOREGROUND);
|
||||
|
||||
BinderInternal.disableBackgroundScheduling(true);
|
||||
|
||||
|
||||
String factoryTestStr = SystemProperties.get("ro.factorytest");
|
||||
int factoryTest = "".equals(factoryTestStr) ? SystemServer.FACTORY_TEST_OFF
|
||||
: Integer.parseInt(factoryTestStr);
|
||||
@@ -401,6 +401,18 @@ class ServerThread extends Thread {
|
||||
} catch (Throwable e) {
|
||||
Slog.e(TAG, "Failure starting DiskStats Service", e);
|
||||
}
|
||||
|
||||
try {
|
||||
// need to add this service even if SamplingProfilerIntegration.isEnabled()
|
||||
// is false, because it is this service that detects system property change and
|
||||
// turns on SamplingProfilerIntegration. Plus, when sampling profiler doesn't work,
|
||||
// there is little overhead for running this service.
|
||||
Slog.i(TAG, "SamplingProfiler Service");
|
||||
ServiceManager.addService("samplingprofiler",
|
||||
new SamplingProfilerService(context));
|
||||
} catch (Throwable e) {
|
||||
Slog.e(TAG, "Failure starting SamplingProfiler Service", e);
|
||||
}
|
||||
}
|
||||
|
||||
// make sure the ADB_ENABLED setting value matches the secure property value
|
||||
@@ -519,7 +531,7 @@ public class SystemServer {
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
SamplingProfilerIntegration.writeSnapshot("system_server");
|
||||
SamplingProfilerIntegration.writeSnapshot("system_server", null);
|
||||
}
|
||||
}, SNAPSHOT_INTERVAL, SNAPSHOT_INTERVAL);
|
||||
}
|
||||
@@ -527,7 +539,7 @@ public class SystemServer {
|
||||
// The system server has to run all of the time, so it needs to be
|
||||
// as efficient as possible with its memory usage.
|
||||
VMRuntime.getRuntime().setTargetHeapUtilization(0.8f);
|
||||
|
||||
|
||||
System.loadLibrary("android_servers");
|
||||
init1(args);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user