Add missing libbatteryservice_headers dependency.
It used to use global header include dirs, which is bad.
Add old transitive dependency from libbatteryservice_headers
as well.
Test: builds
Bug: 68724651
Change-Id: Idcc4452160dce70b4f8b48e2d809dcd5744b93b4
Merged-In: Idcc4452160dce70b4f8b48e2d809dcd5744b93b4
(cherry picked from commit 0b31908912)
Lower storaged's capabilities to DAC_READ_SEARCH as an initial step
toward running it non-root.
Bug: 77634061
Test: storaged still runs and its /proc/pid/status has lower CapPrms
Change-Id: Ibfe0349fc059e2f37efba33f587176e8ce6be9fe
Added salyzyn@ for final owner review on adjustments to storaged.
Test: none
Signed-off-by: Mark Salyzyn <salyzyn@google.com>
Change-Id: Iac73403ea416a4820f72689f5860aa88931def06
storaged_t has more fields that depend on the health service;
they should be initialized in the new init() function.
Test: storaged unit tests
Change-Id: I70d41e5d0a0ef20c39c41c7539a284937bd21ad5
Put AIDL files into a filegroup so they can be imported as sources
for framework.jar.
Test: m checkbuild
Change-Id: I1a5335384e9291af1f26e7418f15fcfa082ee356
protobuf is only needed when serializing/deserializing data. Instead of
maintaining a permanent buffer in storaged object, move the container to
stack so that the buffer is released when we don't need it. In addition,
we don't need to clear the buffer before updating it.
Also added a function to clear user io history when the user is removed.
Bug: 63740245
Change-Id: Ia5d19b9a0c3f92a93b061a56be89bb0b958a2a29
Use user_id (from app uid) to determine file location.
/data/misc_ce/<user_id>/storaged/storaged.proto
Vold notifies storaged when a user's CE area becomes available.
Then storaged restores data from the proto in that area and
combines them into IO history.
Vold also notifies storaged when the CE area is being deleted.
Storaged clears internal history about this user and deletes the
proto file.
IO perf is stored in user_0 area since it's not user related.
Test: dumpsys storaged before/after multiple users' unlock
Bug: 63740245
Change-Id: I39f923f6b09e9f2a29e9286ce02b3b3bcbfb9f94
Use proto_stat to indicate status of CE area. Before user_0 unlocks,
storaged detects CE NOT_AVAILABLE when attempting to read the proto
file. It then skips reading/writting the proto.
When user_0 logs in, vold calls onUserStart in storaged, which sets
proto_stat to AVAILABLE. At next event, storaged tries to read the
proto. If it's a success, proto_stat is changed to LOADED. After that,
storaged reads and writes proto normally.
Test: adb shell storaged -u -p
Bug: 63740245
Change-Id: I1fdd42c430e91682f6cc07497fcad5be52489b4e
Split binder calls into two separate services.
"storaged" service will be used by external clients, e.g. vold.
- Added stub onUserStarted/onUserStopped to prepare for moving
storaged.proto into ce area.
"storaged_pri" private service will be used by storaged cmdline,
e.g. adb shell storaged -u
- Added parcelable UidInfo for private service.
- Change format of perf history to one vector with first 3 elements
showing size of recent/daily/weekly perf history.
Test: adb shell storaged -u -p
Bug: 63740245
Change-Id: Ib0367282a95b6cb0a38f064f0456e849ecccc210
Record the bandwidth when writing storaged.proto to monitor system
storage performance.
The history is maintained in 3 catergories.
1. samples of last 24 hours.
2. daily average of last 7 days.
3. weekly average of last 52 weeks.
Sampling frequency of the first catergory is set to once every hour.
Storaged also flushes proto at same frequency.
The proto file is padded to reach a minimal size of 128KB. Storaged
writes 16KB at a time. Bandwidth calculation ignores time spent in
the first write and writes smaller than 16KB.
bandwidth = total size of 16KB writes / time spent in 16KB writes
Restructured the code so that storaged.cpp handles proto load/flush.
It calls individual module to sync proto with internal data
structures.
Added a cmdline argument to dump perf history.
adb shell storaged -p
I/O perf history (KB/s) : most_recent <--------- least_recent
last 24 hours : 5315 3775 3659 2042 3890 5652 3649 3696 6023
last 7 days : 4648 3532 3828 3567 3841 3359 4676
last 52 weeks : 3817 4275 3836 3766 4280 0 0 0 0 0 ...
Test: adb shell storaged -p
atp:asit/perf/jank_systemui_test
atp:asit/perf/appstartup_hermetic_cyclic_dropcache_test
atp:asit/perf/appstartup_non_hermetic_cyclic_dropcache_test
Bug: 63629306
Change-Id: Ie7051e7a8df883d4a6818ea9a54a10f4dccb4843
Merged disk_stats_publisher into disk_stats_monitor class.
Moved proc file check to disk_stats class instead of doing so in
storaged, same for uid_io.
Added is_zero function to check zero disk_stats.
Added operators to compute disk_stats.
Change-Id: I277ae51f6fe18464f92e45c03471343784e67093
comm field in task io stats string can have comma since this field
includes task arguments. As a result, splitting the string by comma
doesn't always give 13 fields. Parse the string in following way to
fix that.
last 11 fields -> pid and io stats
Second field to 12th from last -> comm
Bug: 63739275
Change-Id: I6a2418260444c71d6492fc6cbd639d3cc54ceaed
Convert storaged internal io_history to protobuf format and serialize
it to userdata partition. Also load this file during storaged startup
to reconstruct io history.
Bug: 63740245
Change-Id: I0697525df1c31fdec20f5ed4e3e9363e2dde244f
Rank uids by io stats and display their tasks. Can either rank by combining
io stats for same uids or io stats for the last appearing uid.
See python ranker.py -h for details.
Test: python ranker.py -i io.txt -o output.txt -u 20 -cnt
Bug: 63739275
Change-Id: Ieee1d7a9bf190266fc6a055c0922434fcd9099c6
Calls getNamesForUids when one of the two conditions are true.
1. entries for new uids are reported from io stats
2. previous getNamesForUids failed
Bug: 62805090
Merged-In: I120b81e1857b2aa0a90d0fb85c8d749e985df78e
Change-Id: I120b81e1857b2aa0a90d0fb85c8d749e985df78e
Calls getNamesForUids when one of the two conditions are true.
1. entries for new uids are reported from io stats
2. previous getNamesForUids failed
Bug: 62805090
Change-Id: I120b81e1857b2aa0a90d0fb85c8d749e985df78e
When current io bytes are smaller than previous bytes, add 0 to delta
instead of adding current io bytes.
Bug: 64317562
Merged-In: If0c9814892ad61b790baa6395649af10b11d5b7c
Change-Id: I1ffd7ac33649ab3b8405c83b1328fa9bf49702c0
Display task io in dump service when both kernel logs task io to
proc/uid_io/stats and when debug flag is enabled.
Also add -t flag to display both uid and task io for storaged.
Tests:
adb shell
dumpsys storaged --debug
storaged -t
Bug: 63739275
Change-Id: If0c9814892ad61b790baa6395649af10b11d5b7c
Update disk space utilization together with diskstats since we will
use free space size to co-relate disk performance.
Bug: 63629306
Change-Id: I4e5694aaff3b71aa56db451f1bc92ccfb07e5086
storaged relies on batteryproperties service (healthd) to provide
charger stats. If healthd is killed, kill storaged as well. Both
will be restarted by init process anyway to restore a correct state.
Test: kill healthd when storaged is running
Bug: 36652060
Merged-In: Ia785bb6f5ea259aa43cd1efab9505ebefaf3db12
Change-Id: Ia785bb6f5ea259aa43cd1efab9505ebefaf3db12
BatteryListener takes sp<> as parameter. Passing raw storaged_t ptr
to BatteryListener will cause the ptr to be freed when BatteryListener
releases the sp<>. Keep a refcount in storaged to prevent this from
happening.
Test: kill healthd while storaged is running
Bug: 36652060
Change-Id: I96bc45a3bedb39eb7158b8f6c86334b5b31c9346
uid_monitor is the only user of batteryproperties, no need to register
a callback if uid_io not enabled.
Test: run storaged without uid_io, plug/unplug usb cable
Merged-In: If890a93fec155b67c450341c54b44bb18d3aae3d
Change-Id: If890a93fec155b67c450341c54b44bb18d3aae3d