PackageManager Handler Thread Priorities adjustment.

Primary handler thread priority changed to DEFAULT from BACKGROUND.
Secondary handler thread priority changed to BACKGROUND from DEFAULT.

There are a few write* operations which include IO, but they are
executed under mLock and we want them to complete ASAP.
If at some point they are made lockless then we will move them to the
secondary thread.

Bug: 230521658
Fixes: 230521658
Test: presubmit
Change-Id: I4d0c6ea696e31976216c69b9be10a8f3f5efd833
This commit is contained in:
Alex Buynytskyy
2022-04-27 09:47:23 -07:00
parent 3ce32193f0
commit 4e729acd16
3 changed files with 5 additions and 11 deletions

View File

@@ -2545,7 +2545,6 @@ final class InstallPackageHelper {
ArrayList<String>[] components;
int size = 0;
int[] uids;
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
synchronized (mPm.mLock) {
final SparseArray<ArrayMap<String, ArrayList<String>>> userIdToPackagesToComponents =
@@ -2584,7 +2583,6 @@ final class InstallPackageHelper {
mPm.sendPackageChangedBroadcast(snapshot, packages[i], true /* dontKillApp */,
components[i], uids[i], null /* reason */);
}
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
}
void handlePackagePostInstall(PackageInstalledInfo res, InstallArgs installArgs,

View File

@@ -75,7 +75,7 @@ final class PackageHandler extends Handler {
try {
doHandleMessage(msg);
} finally {
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
}
}
@@ -136,19 +136,13 @@ final class PackageHandler extends Handler {
}
} break;
case WRITE_SETTINGS: {
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
mPm.writeSettings();
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
} break;
case WRITE_PACKAGE_RESTRICTIONS: {
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
mPm.writePendingRestrictions();
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
} break;
case WRITE_PACKAGE_LIST: {
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
mPm.writePackageList(msg.arg1);
Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
} break;
case CHECK_PENDING_VERIFICATION: {
final int verificationId = msg.arg1;

View File

@@ -1413,7 +1413,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService
t.traceBegin("create package manager");
final PackageManagerTracedLock lock = new PackageManagerTracedLock();
final Object installLock = new Object();
HandlerThread backgroundThread = new HandlerThread("PackageManagerBg");
HandlerThread backgroundThread = new ServiceThread("PackageManagerBg",
Process.THREAD_PRIORITY_BACKGROUND, true /*allowIo*/);
backgroundThread.start();
Handler backgroundHandler = new Handler(backgroundThread.getLooper());
@@ -1467,7 +1469,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
(i, pm) -> domainVerificationService,
(i, pm) -> {
HandlerThread thread = new ServiceThread(TAG,
Process.THREAD_PRIORITY_BACKGROUND, true /*allowIo*/);
Process.THREAD_PRIORITY_DEFAULT, true /*allowIo*/);
thread.start();
return new PackageHandler(thread.getLooper(), pm);
},