When opening and closing activities in Settings, a measurably
significant amount of CPU time is spent processing and logging stats
events in statsd:
0.02% /apex/com.android.os.statsd/lib64/libstatspull.so @plt
0.01% /apex/com.android.os.statsd/bin/statsd @plt
0.01% /apex/com.android.os.statsd/bin/statsd SocketListener::runListener()
0.01% /apex/com.android.os.statsd/bin/statsd android::os::statsd::LogEvent::parseBuffer(unsigned char*, unsigned long)
0.01% /apex/com.android.os.statsd/bin/statsd android::os::statsd::LogEvent::parseAnnotations(unsigned char, int)
Over longer device uptimes with real-world usage, statsd uses a
substantial amount of total CPU time. We have no use for the stats
recorded by statsd, so disable the service entirely to save CPU in
potential hotpaths.
This is the system/core part of the change; changes to frameworks/base
are also required.
Test: simpleperf record -a; verify that statsd no longer appears in
sample hits
Change-Id: Idf6fdb0eff987169bd5f370dd72315e831a669e6
Signed-off-by: Hưng Phan <phandinhhungvp2001@gmail.com>
Signed-off-by: Dmitrii <bankersenator@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
Signed-off-by: rmp22 <195054967+rmp22@users.noreply.github.com>
To relieve memory pressure on Android, we should start writing
dirty data sooner than later.
The Linux kernel's default is way too conservative on Android.
Android doesn't have a good reason to delay writing dirty data
anyways.
This change will make the kernel start writing dirty data when
it reaches 50M and switch to synchronous on 200M, which is far
more sensible values than 1.2G and 2.4G respectively on a device
with 12G of RAM.
Change-Id: I22f9ec9010dd028710a1a5c2e3d26d8444a4c914
Signed-off-by: Juhyung Park <qkrwngud825@gmail.com>
In a previous commit bb0838b511, the gc_urgent_sleep_time for F2FS was aggressively set to 50ms to optimize GC.
This change, however, led to performance regressions on most devices, particularly of those running in 4.19+ kernels.
From our tests, the heightened CPU and I/O activity from this aggressive garbage collection setting is the likely cause.
To address this, we're revising the gc_urgent_sleep_time parameter to strike a balance between aggressive GC and device performance, taking
bb0838b511 goal into consideration.
Furthermore, the dirty writeout policy has been aligned with the latest configurations used in Pixel devices,
and cp_interval has been adjusted to surpass dirty_expire_centisecs for improved power efficiency during idle times.
Test: booted partner device, monitor performance
Change-Id: Ie4d0c870d734e915aaebcc53e64acdabac47b6dc
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Set swappiness of apps and system under /dev/memcg from init.rc
CRs-Fixed: 2791027
Change-Id: I90e5feb8e52f9e98582b8d8666537b12d4864ce8
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
It is only intended for performance analysis and can
impact I/O throughput.
Change-Id: Ia7d3a449d52625d911e2cea16249972d01e5cfcf
Signed-off-by: Adithya <gh0strider.2k18.reborn@gmail.com>
Signed-off-by: Nishant Kumar <www.rajsonu13@gmail.com>
Former-commit-id: a766ea9189219e8ff4450bf86358f6f9c20cc7eb
Change-Id: I202956b4427b4ae7f88df496a108d717a6b8be57
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
Set ipv4 min/default/max write and read memory size and socket max send/receive memory size to values that are high enough to reach 1+Gbps over wifi and cellular. Moving forward there is no need to override them in per device init.rc or framework config file.
Bug: 213596972
Test: manual test to confirm TCP memory size is increased and wifi TCP throughput with default TCP window size can reach 700Mbps in HE80 mode.
Change-Id: I0eb644453ab44804d33e3ed21e64aaccdc8c1ecd
Signed-off-by: Juhyung Park <qkrwngud825@gmail.com>
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This can have a major impact on performance.
We don't want this, even on userdebug/eng builds.
Use the new property "ro.console.enable" to
enable the console service explicitly.
Change-Id: I93e7c65e92261443d1c9c70cfef9aa2ed5ff328a
Signed-off-by: Alex Naidis <alex.naidis@linux.com>
Signed-off-by: Jason Edson <jaysonedson@gmail.com>
Signed-off-by: Dmitrii <bankersenator@gmail.com>
Signed-off-by: Joey Huab <joey@evolution-x.org>
Former-commit-id: 4d36ac6b9fe0a26dcfa4fc32de377c502f49eb3e
Former-commit-id: 1dc24bca6c98f3a9a23ce5ec3bf76c2019973694
Former-commit-id: c31e332873ff454d4203da5c67188a79260d2c1c
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This reverts commit f9b38f91ac.
Reason for revert: <Froidmonitor created revert due to b/382795480.Will be verified through ABTD for standard invesigation.>
Change-Id: Ib6f759fc3dee7800acf9a2c1e24eea2962730167
By removing `recovery_available` property from "ueventd.rc" and
defining a dedicated recovery-specific module for "ueventd.rc".
`recovery_available` property should be used to allow the reverse
dependencies recovery modules to depend on the module, not to
install the module to the recovery partition.
Test: m soong_generated_recovery_filesystem_test
Bug: 381888358
Change-Id: I6921cae72a1757e065003efc9d77241625f645e9
Context: to have better future updatability. The responsiblity of
managing mainline module storage files and a socket service for flag
overrides will be moved to the configinfra mainline module. Later,
aconfigd on /system will only be repsopnsbile for managing platform
partition storage files.
Bug: b/369810972
Test: m, launch avd and then inspect the logcat log to confirm the
service is launched.
Change-Id: I490e5aa432fa4afa236689ad0999e5602f7d297e
cc_binary aconfigd is replaced with rust_binary aconfigd-system. The
replacement is flag guarded and is already in TF full for more than a
week. Thus delete the flag and deprecate old cc_binary aconfigd.
Test: m
Change-Id: Ib128adc2ef8178e02222f77e6b89bcc7ac83c1da
Bug: 362507272
Test: Verify directory is created in /metadata
Change-Id: Ie1c2312f405d4b41e06a248e4d2b93cd8fc62a93
Signed-off-by: Akilesh Kailash <akailash@google.com>
The default permission of "/sys/block/zram0/idle" and
"/sys/block/zram0/writeback" are "0200".
Adding read permission to the files does not make sense because reading
those files fail as EIO error.
We should keep permission as minimum as possible.
Bug: 117682284
Bug: 375432468
Test: ls -la /sys/block/zram0
Change-Id: I11ed5d9eee257002f4698edcd81de39d2c317ea1
during initialization.
Bug: 365585450
Test: Manual test - verify that the mainline
supplicant can add/remove interfaces
Change-Id: Ib41b361a8b032c04586f108be9d1933214934286
This removes the error log when apexd-bootstrap starts:
cutils-trace: Error opening trace file: No such file or directory (2)
Bug: 376150518
Test: boot-time trace shows apexd-bootstrap
see https://source.android.com/docs/core/perf/boot-times#systrace
Change-Id: I5feaece50663a602b61377cee034060fd30217f9
Schedtune was an out of tree cgroup controller present in Android
kernels up to 4.19. It was replaced with uclamp and the cpu controller.
Now that 4.19 is EOL and unsupported, and schedtune is not present in
any supported Android kernels, remove the userspace support for
schedtune.
Bug: 362504801
Change-Id: Iab7b7295d1fb443209d5868ac5c65dca0aabfbab
Changes the owner of the following files to system:system:
* /sys/firmware/acpi/tables
* /sys/firmware/acpi/tables/BERT
* /sys/firmware/acpi/tables/data/BERT
This allows the bert_collector deamon to read these files for error reporting.
Bug: 357626966
Test: m && atest bert_collector_test
Change-Id: Iba3a169f1851566ee6fed6d41b538dae448bf811
This modifies first-stage init to check for /metadata/tradeinmode/wipe
as soon as /metadata is mounted. If the file exists, we issue a request
to the bootloader to reboot to recovery and wipe /data. Since this also
wipes /metadata, the wipe indicator will be removed too.
In case some kind of failure happens in recovery, this also implements a
quick-and-dirty counter mechanism to fallback to the recovery menu.
Bug: 307713521
Test: touch /metadata/tradeinmode/wipe && adb reboot
Change-Id: I2d05903cadcdadf9c05f6736454db790a9e6b5bb
The trigger name should be load-bpf-programs, not load_bpf_programs.
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I00cff0a3dd971de39dfc3226b140be972854ea28
In this change we're moving the asynchronous netd startup ahead of
the async statd and *synchronous* update_verifier.
This is desirable as we want a netd failure (which could
happen due to some mainline incompatibility wrt. bpf
or mainline shipped shared libs: resolver or netd updatable)
to be considered a signal for a bad boot.
It's still asynchronous though, so it's not ideal.
Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ib3e252f085f569864feddaf20ac80858a3bb969d
The linker.config.json file is required for soong to generate a
system image.
Bug: 365670526
Test: lunch aosp_cf_x86_64_phone_soong_system-trunk_staging-userdebug
&& m
Change-Id: I86389e4143cd2fc08b812d50962bf7ec007894ab
Since Soong currently doesn't support the `install_directory`
functionality, this file cannot be directly converted to Android.bp.
Moreover, the main content of `system/core/rootdir/Android.mk` is to
create directories and symlinks for the root file system. Therefore,
we'll first rename it and move it to build/core/main.mk for handling.
In addition, consolidate the handling of `meta-lic` related parts into
build/core/tasks/meta-lic.mk.
Bug: 353642907
Test: m -j init.environ.rc
Change-Id: I356c4b05c56b02b0243c12dbeddd4653ba4e137c
/adb_keys will be moved to /product/etc/security as it's a
product-specific file. To prevent regression, /adb_keys will be a
symlink to the new location.
Bug: 353430323
Test: boot and connect adb with ADB_VENDOR_KEYS
Change-Id: I3dd200a1583be8f99bd5c30ecfed1bdc544ca783
Init is responsible for initializing the /dev/[u]random entropy
pool, to ensure that high quality random numbers are available
to all Android processes. Previously Android mixed in data
from /system/etc/prop.default, which included properties which
differed on a device-by-device basis. That file no longer exists,
and init generates the following error at boot:
init: Command 'copy /system/etc/prop.default /dev/urandom'
action=init (/system/etc/init/hw/init.rc:106) took 0ms and
failed: Could not read input file '/system/etc/prop.default':
open() failed: No such file or directory
Instead of reading a property file, this change modifies init.rc
to read from /proc/bootconfig. The bootconfig file contains
per-device data which was previously on the command line, such
as androidboot.serialno. Additionally, it contains device-class
information such as androidboot.hardware,
androidboot.hardware.platform, and data which frequently churns
such as androidboot.vbmeta.digest. These help ensure that the
random number initialization is at least unique on a per
device-class basis.
Relying on /proc/bootconfig accomplishes the same goal that
relying on /system/etc/prop.default was intended to accomplish.
And /proc/bootconfig is in a more stable location than
/system/etc/prop.default, hopefully preventing future regressions.
Bug: 361624398
Test: Device boots and error above goes away
Change-Id: Id5c891e871217d62ff6517c5804b4acc2d723622
post_data was used by Userspace Reboot, which was removed.
Bug: 293377020
Test: atest CtsInitTestCases
Change-Id: I1a5bf328f62b8afbe58eef62c64689471e6b018c
`ramdisk_node_list` is a hardcoded dependency in
`build/make/core/Makefile`, but it only serves as an input for
generating `ramdisk.img` and isn't installed on the device.
Therefore, we can directly use a `filegroup` and set
`export_to_make_var` for use in build/make/core/Makefile.
In addition, since there are no `Android.mk` files in the
subdirectories of `system/core/rootdir/`,
`include (callall−makefiles−under,(LOCAL_PATH))` can also be
deleted.
Bug: 359423289
Test: m -j $(PRODUCT_OUT)/ramdisk.img
Change-Id: Ia2bf636bfd7917bf7044d9726b4b52932bb161c8
In multi-window mode, currently the focused window will be top-app,
and others will be foreground. However, the cpu resource we assign to
typical foreground group may not meet the performance need of those
windows. Therefore, create a new group for them so that we could
distinguish their performance need.
Bug: 200769420
Test: group created
Change-Id: I84c61f9ed4d167e156dafb7a816b6482e80a8523
Makefile module still remains to handle post install commands. We're
going to move that to somewhere else as a followup.
Relanding with a fix for hwasan build.
HWADDRESS_SANITIZER_GLOBAL_OPTIONS is set by Soong's MakeVars, so we
can't refer the variable on soong config modules. Instead, as the
variable is hard-coded, this change hard-codes options in Android.bp.
Bug: 353429422
Test: boot cuttlefish w/ and w/o USE_SOONG_DEFINED_SYSTEM_IMAGE
Test: boot shiba with SANITIZE_TARGET=hwaddress
Change-Id: I4f61d7f800e0563c49dec0151d4a648ce9814bc9
Revert submission 3197177-init_environ_rc_soong
Reason for revert: DroidMonitor: Potential culprit for b/356587212 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.
Reverted changes: /q/submissionid:3197177-init_environ_rc_soong
Change-Id: I3834d7f76f4baef747f3536167ad9bd2d2a474b4
Makefile module still remains to handle post install commands. We're
going to move that to somewhere else as a followup.
Bug: 353429422
Test: boot with and without USE_SOONG_DEFINED_SYSTEM_IMAGE
Change-Id: I85ec048e6e57981ad4496ea90762aa34bd9a5ca1