summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author yawanng <yawanng@google.com> 2020-12-01 23:59:17 +0000
committer yawanng <yawanng@google.com> 2020-12-04 07:26:59 +0000
commitda5dcf7b72c8350ff73bd8c4cbfa7fccfd9aea49 (patch)
treed847d82934dc3f339f9f1f14ccdbcf3b18054064
parenta046679e13a33461e8543033169c10ca077b2c07 (diff)
iorap: Terminate iorapd process when both tracing and prefetching are off.
Purge spam log when iorapd process is not alive. Turn off the Iorap Service when both tracing and prefetching are not alive. Bug: 174588448 Test: set the flags via mendel and check the log Change-Id: I8d4e0c869dec5e7dc5016622b154aef46e1d4f02
-rw-r--r--startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java29
1 files changed, 26 insertions, 3 deletions
diff --git a/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java b/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java
index df28cea30956..1a0e5269d51a 100644
--- a/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java
+++ b/startop/iorap/src/com/google/android/startop/iorap/IorapForwardingService.java
@@ -34,6 +34,7 @@ import android.os.Parcel;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
+import android.provider.DeviceConfig;
import android.util.ArraySet;
import android.util.Log;
@@ -166,9 +167,27 @@ public class IorapForwardingService extends SystemService {
@VisibleForTesting
protected boolean isIorapEnabled() {
+ // These two mendel flags should match those in iorapd native process
+ // system/iorapd/src/common/property.h
+ boolean isTracingEnabled =
+ getMendelFlag("iorap_perfetto_enable", "iorapd.perfetto.enable", false);
+ boolean isReadAheadEnabled =
+ getMendelFlag("iorap_readahead_enable", "iorapd.readahead.enable", false);
// Same as the property in iorapd.rc -- disabling this will mean the 'iorapd' binder process
// never comes up, so all binder connections will fail indefinitely.
- return IS_ENABLED;
+ return IS_ENABLED && (isTracingEnabled || isReadAheadEnabled);
+ }
+
+ private boolean getMendelFlag(String mendelFlag, String sysProperty, boolean defaultValue) {
+ // TODO(yawanng) use DeviceConfig to get mendel property.
+ // DeviceConfig doesn't work and the reason is not clear.
+ // Provider service is already up before IORapForwardService.
+ String mendelProperty = "persist.device_config."
+ + DeviceConfig.NAMESPACE_RUNTIME_NATIVE_BOOT
+ + "."
+ + mendelFlag;
+ return SystemProperties.getBoolean(mendelProperty,
+ SystemProperties.getBoolean(sysProperty, defaultValue));
}
//</editor-fold>
@@ -251,7 +270,9 @@ public class IorapForwardingService extends SystemService {
//
// TODO: it would be good to get nodified of 'adb shell stop iorapd' to avoid
// printing this warning.
- Log.w(TAG, "Failed to connect to iorapd, is it down? Delay for " + sleepTime);
+ if (DEBUG) {
+ Log.v(TAG, "Failed to connect to iorapd, is it down? Delay for " + sleepTime);
+ }
// Use a handler instead of Thread#sleep to avoid backing up the binder thread
// when this is called from the death recipient callback.
@@ -287,7 +308,9 @@ public class IorapForwardingService extends SystemService {
// Connect to the native binder service.
mIorapRemote = provideIorapRemote();
if (mIorapRemote == null) {
- Log.e(TAG, "connectToRemoteAndConfigure - null iorap remote. check for Log.wtf?");
+ if (DEBUG) {
+ Log.e(TAG, "connectToRemoteAndConfigure - null iorap remote. check for Log.wtf?");
+ }
return false;
}
invokeRemote(mIorapRemote,