No description
Find a file
Akilesh Kailash 2c0161be6a Tune snapshot-merge performance
Currently, there is one thread per partition
for snapshot merge. When all these threads are
run in parallel, this may stress the system
as the merge threads are both CPU and I/O bound.

Allow only two merge threads to be in-flight
at any point in time. This will ensure that there
is forward progress done with respect to snapshot-merge
and only two cores are used as against using
5-6 cores.

Additionally, system and prodcut partitions are merged
first. This is primarily because /root is mounted
of system partition and faster the merge completes
on /system partition, we can switch the dm tables
immediately. There is no change in the merge phase
from libsnapshot perspective. This prioritization
is based on each merge phase. If the system partition
merge is in second phase, then it takes priority
in that phase.

As a side benefit, this should also
reduce the memory usage when merge is in-flight
given that we now limit the threads.

There is slight delay in overall merge time as
we now throttle the merge.

No boot time regressions observed.

Full OTA:

Merge time (Without this patch): 42 seconds
Merge time (With this patch): 46 seconds

Incremental OTA:

Merge time (Without this patch): 52 seconds
Merge time (With this patch): 57 seconds

system partition merge completes in the first ~12-16 seconds.

App-launch (COLD) on Pixel:

Baseline (After snapshot-merge is completed when there is no daemon):
==========================

Chrome: 250
youtube: 631
camera: 230

==========================

Without this patch when snapshot-merge is in-progress (in ms):

Full - OTA

Chrome: 1729
youtube: 3126
camera: 1525

==========================

With this patch when snapshot-merge is in-progress (in ms):


Full - OTA

Chrome:  1061
youtube: 820
camera: 1378

Incremental - OTA (350M)

Chrome: 495
youtube: 1442
camera: 641
=====================

Bug: 237490659
Ignore-AOSP-First: cherry-pick from aosp
Test: Full and incremental OTA
Signed-off-by: Akilesh Kailash <akailash@google.com>
Change-Id: I887d5073dba88e9a8a85ac10c771e4ccee7c84ff
2022-08-01 16:31:20 +00:00
bootstat bootstat: add more bootreasons 2022-06-28 13:21:03 +00:00
cli-test [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
code_coverage [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
debuggerd Fix check for thread unwind. 2022-05-24 21:31:03 -07:00
diagnose_usb Support building diagnose_usb against musl 2021-12-16 14:04:06 -08:00
fastboot fastboot: Add vendor_kernel_boot 2022-06-01 11:42:42 +08:00
fs_mgr Tune snapshot-merge performance 2022-08-01 16:31:20 +00:00
gatekeeperd Depend on KeyMint HAL via default 2021-12-02 08:16:25 +00:00
healthd Add healthd to hwasan-postsubmit 2022-03-18 21:19:00 +00:00
include Remove include/backtrace symlink. 2020-10-20 12:46:14 -07:00
init init: Set oom_score_adj to snapuserd process 2022-06-02 21:19:46 +00:00
janitors Add the two best build system janitors. 2019-03-25 10:25:13 -07:00
libappfuse [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
libasyncio Set min_sdk_version 2021-12-02 09:23:42 +09:00
libbinderwrapper [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
libcrypto_utils Set min_sdk_version 2021-12-02 09:23:42 +09:00
libcutils Updating async trace for track trace symbols from T/U to G/H 2022-06-22 19:09:06 +00:00
libdiskconfig Tweak linux_glibc properties for musl builds in system/core 2022-03-24 15:59:08 -07:00
libgrallocusage Make apex_available explicit 2022-02-09 11:37:19 -08:00
libkeyutils Make libfs_mgr dependencies vendor_ramdisk_available. 2021-07-23 16:50:06 -07:00
libmodprobe Merge "Load kernel modules in parallel" 2022-03-23 07:40:18 +00:00
libnetutils Move libipchecksum to frameworks/libs/net. 2021-12-16 19:38:01 +00:00
libpackagelistparser Add libpackagelistparser to hwasan-postsubmit 2022-03-18 21:41:03 +00:00
libprocessgroup Make VMCompilationPerformance an aggregated profile with default 2022-05-16 17:53:01 -07:00
libsparse Merge changes from topic "sparse-file-read-enum" 2022-01-28 05:28:04 +00:00
libstats Fix lints from Rust 1.60.0 2022-04-19 17:25:32 -07:00
libsuspend libsuspend: vendor_available. 2021-11-02 13:52:40 -07:00
libsync libsync: remove hridya@ from OWNERS file 2022-01-05 16:59:03 -08:00
libsystem Relax requirements on android_ycbcr to allow P010 2022-02-17 10:54:15 -08:00
libsysutils Fix 32-bit userspace on 64-bit kernel quota2 compatibility. 2021-10-25 16:24:49 -07:00
libusbhost libusbhost: factor out frameworks descriptors -> byte[] code. 2022-01-24 13:35:20 -08:00
libutils RESTRICT AUTOMERGE Ignore weak symbol difference in libutils ABI check 2022-05-26 15:20:06 +08:00
libvndksupport Add libvndksupport-tests to TEST_MAPPING 2022-03-08 09:53:55 +09:00
llkd llkd: Disable in userdebug builds by default 2021-11-04 16:21:46 -07:00
mini_keyctl Merge "Make libmini_keyctl_static available in recovery" 2021-11-23 17:54:31 +00:00
mkbootfs Rename system/cote/cpio/ -> system/core/mkbootfs/ 2021-05-05 19:03:36 +08:00
property_service Add property_service to hwasan-postsubmit 2022-03-18 21:47:10 +00:00
reboot [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
rootdir Revert "Add support for only starting 64 bit zygote." 2022-07-15 00:57:54 +00:00
run-as [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
sdcard [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
set-verity-state Remove support for AVB 1.0. 2021-11-30 00:57:49 -08:00
shell_and_utilities Update shell_and_utilities docs for T. 2022-03-05 08:12:29 -08:00
storaged storaged: Avoid divide-by-zero in performance measurement 2022-05-27 01:51:34 +00:00
toolbox toolbox/generate-input.h-labels.py: python3. 2021-08-17 14:34:55 -07:00
trusty Implement GetRootOfTrust 2022-06-14 10:22:43 +01:00
usbd usbd - remove unused libcutils dep 2021-06-28 23:56:29 +00:00
watchdogd [LSC] Add LOCAL_LICENSE_KINDS to system/core 2021-02-19 12:59:05 -08:00
.clang-format Add a 2 width option of clang format. 2017-03-10 13:01:39 -08:00
.clang-format-2 Move clang-formats to build. 2019-01-18 14:26:33 -08:00
.clang-format-4 Move clang-formats to build. 2019-01-18 14:26:33 -08:00
.gitignore Ignore adb/*.pyc files 2015-08-11 12:59:58 -07:00
CleanSpec.mk snapshotctl don't auto-merge. 2020-03-03 13:19:49 -08:00
METADATA Add METADATA to system/core: Apache2+BSD=NOTICE 2020-04-29 13:16:41 -07:00
MODULE_LICENSE_APACHE2 auto import from //depot/cupcake/@135843 2013-07-30 13:56:49 -07:00
OWNERS Remove baligh@ from owners. CodeShuffle done. 2020-10-17 00:28:10 +00:00
PREUPLOAD.cfg Configure rustfmt for preupload hook 2022-04-06 21:11:09 +00:00
rustfmt.toml Configure rustfmt for preupload hook 2022-04-06 21:11:09 +00:00