Commit Graph

221 Commits

Author SHA1 Message Date
Suren Baghdasaryan c750961a19 Merge "libpsi: initial revision"
am: bb405bf986

Change-Id: I7dde222de933f7f52d4d7e09a6d3806d88e23a69
2019-01-29 21:04:17 -08:00
Tim Murray d6348dfa08 libpsi: initial revision
New library to create, register and destroy PSI monitors in a consistent
way with lmkd.

Test: used within lmkd
Bug: 111308141
Change-Id: If243a97f178e90fe41e2de90c7b858ba82440279
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-01-30 04:47:28 +00:00
Suren Baghdasaryan 86f94e0e4a [automerger skipped] DO NOT MERGE: Revert "Revert "Add dependencies on libprocessgroup for sched_policy users""
am: 9491078300 -s ours
am skip reason: subject contains skip directive

Change-Id: I6a090381ab3764d9ea2a5bed1de39aef1872b6a7
2019-01-25 09:21:34 -08:00
Suren Baghdasaryan de92718882 DO NOT MERGE: Revert "Revert "Add dependencies on libprocessgroup for sched_policy users""
This reverts commit 1bef8c550c6c9118969a93f14d9c5933cb7b2811.

Reason for revert: AOSP is fixed with new vendor image

Change-Id: Ib341ac80e2f88c13a7815a490ea2d9422ebdf55f
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-01-25 16:49:18 +00:00
Suren Baghdasaryan 87cbcdc3fe [automerger skipped] DO NOT MERGE: Revert "Add libprocessgroup into VNDK"
am: c4a02d25a9 -s ours
am skip reason: subject contains skip directive

Change-Id: I9131c17d5fc372db05699f1aca5138fba1237c7a
2019-01-23 23:08:47 -08:00
Suren Baghdasaryan efeeaafc9b DO NOT MERGE: Revert "Add dependencies on libprocessgroup for sched_policy users"
This reverts commit 02843339f998f05c712549658c9f8f8bc14ff57d.

Reason for revert: Broke AOSP

Change-Id: I62f91c0adf440b5da0a145862b04dd27a7016faf
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-01-23 20:43:28 -08:00
Suren Baghdasaryan 8d13df7d38 Merge changes from topic "move sched_policy functions"
am: ca50ee91b5

Change-Id: I92310f7dd60384b95c056c98cdc616857ebcd1ec
2019-01-22 13:03:07 -08:00
Suren Baghdasaryan fb99b0a5f9 Add dependencies on libprocessgroup for sched_policy users
After moving sched_policy functions into libprocessgroup its users require
additional dependency and inclusion of sched_policy_ctrl.h header.

Exempt-From-Owner-Approval: janitorial

Bug: 111307099
Test: builds, boots

Merged-In: Icc052080e1bce46ce06f7264446950cab0490a95
Change-Id: Icc052080e1bce46ce06f7264446950cab0490a95
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-01-22 18:19:45 +00:00
Wei Wang 2b34702a8b Merge "lmkd: bump process priority and set to FOREGROUND group before kill"
am: 3f4b005022

Change-Id: Ib77699153224bcc95c0929bc59361702c50bce94
2019-01-15 19:13:21 -08:00
Wei Wang 8c55f2b664 Merge "lmkd: bump process priority and set to FOREGROUND group before kill" 2019-01-16 03:06:21 +00:00
Tom Cherry ef9cbe71b2 Merge "lmkd: add missing libcutils library to test"
am: 173a02b439

Change-Id: Ib3dc6e124cfc129145e43ae806de73061652cb08
2019-01-15 17:03:49 -08:00
Wei Wang f1ee2e1505 lmkd: bump process priority and set to FOREGROUND group before kill
This should help speed up reclaim memory.

Bug: 118468011
Test: run mem-pressure with lmkd
Change-Id: Iae7aa35483eb0e8bbeccaa425559c6021c845ee1
2019-01-15 14:50:19 -08:00
Tom Cherry 4a28d2a270 lmkd: add missing libcutils library to test
lmkd's test depends on the socket_local_client() function from
libcutils, but since liblog also exposes this symbol weakly, that is
the symbol that gets used instead of the intended libcutil's copy of
the symbol.

Test: build
Change-Id: I294fa157a7f50881bf6360922419976eb1ee3ac7
2019-01-15 14:14:20 -08:00
Jim Blackler 350fecb560 Merge "Add start time to LmkKillOccurred"
am: 34f55bd45a

Change-Id: I912af2f3ac71fda3d949deb5189ff1834340f08f
2019-01-09 00:57:22 -08:00
Jim Blackler f52bcb9c8f Add start time to LmkKillOccurred
This is to measure an application's behavior with respect to being LMKed
(the longer an app lives before being LMKed, the better).

Bug: 119854389
Test: Manual
Change-Id: I4ef6433391c8758626334731d2b5de038e4468ae
Merged-In: I4ef6433391c8758626334731d2b5de038e4468ae
(cherry picked from I4ef6433391c8758626334731d2b5de038e4468ae)
2019-01-04 11:36:54 +00:00
Xin Li d45d6e6326 [automerger skipped] DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master
am: 2f2f638fdf  -s ours

Change-Id: Ieb3bb5fae81eebeca7596ca4901c2dc77ec8733e
2018-12-13 11:26:27 -08:00
Xin Li 85e4ce5ac7 DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into master
Bug: 120502534
Change-Id: Id4f4f66ffb8104d953957f1c44dff6f549a387bb
2018-12-11 14:46:12 -08:00
Xin Li 6778a6c07b DO NOT MERGE - Merge pie-platform-release (PPRL.181205.001) into stage-aosp-master
Bug: 120502534
Change-Id: I0ab5735530d24f669cc43c961cf2118427b32a7b
2018-12-11 20:23:55 +00:00
Bill Rassieur 6bb974bc2a Merge PQ1A.181205.006 from Pi-QPR1-Release into ToT for Pi-Platform release.\n\nBUG: 120448245
Change-Id: Ia66dd2a90e074d2fcb0dbaeb424031a41752dd03
2018-12-04 17:00:05 +00:00
Suren Baghdasaryan 68fe0cbc93 Merge "lmkd: Cleanup unused code for killing processes in bulk"
am: d04b38b0e5

Change-Id: Icbbc888b5a2049a94e55e48eaa9510981c114ebf
2018-10-29 13:31:26 -07:00
Suren Baghdasaryan f12fdbe1d6 Merge "lmkd: retune rate at which processes are killed"
am: d5eaeffcf3

Change-Id: I5012c959668b9bf2f6ea055e6186be551bf5db20
2018-10-29 13:30:42 -07:00
Suren Baghdasaryan 85c31b57c4 lmkd: Cleanup unused code for killing processes in bulk
find_and_kill_processes() does not kill multiple processes at a time
anymore. Remove support for bulk process killing.

Change-Id: Id09132a9cebe44589a1a3ebcbff800a16fa56557
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-10-29 16:20:50 +00:00
Tim Murray a79ec0f5bf lmkd: retune rate at which processes are killed
Kill a single process at a time and try to wait up to 100ms for
that process to reclaim memory before triggering another kill.

Test: boots, works
bug: 116877958
Change-Id: I6775d0534b3e3728c04389d3eae1a00e3cbf9f27
2018-10-29 16:20:29 +00:00
Tim Murray 9752ee8b29 DO NOT MERGE: lmkd: retune rate at which processes are killed
Kill a single process at a time and try to wait up to 100ms for
that process to reclaim memory before triggering another kill.

Test: boots, works
bug: 116877958
Change-Id: I6775d0534b3e3728c04389d3eae1a00e3cbf9f27
(cherry picked from commit afb3a15f39e73978c071a58d3466993293c6d3b1)
2018-10-26 20:57:25 +00:00
Suren Baghdasaryan d4dbf08947 lmkd: rate-limit and cleanup failed kill reports
Excessive number of failed kill reports when lmkd can't find an eligible
process to kill or frees not enough memory pollutes logs and bugreports.
Cleanup kill reports to remove duplicate information and rate limit failed
kill attempts at 1 report per sec. The number of suppressed failed kills
will be reported in the next lmkd report.

Bug: 113864581
Test: Verified using lmkd_unit_test
Change-Id: I67fa1fec97613f136c7582115edcbc56b1503c9c
Merged-In: I67fa1fec97613f136c7582115edcbc56b1503c9c
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
(cherry picked from commit d6cbf3f41d7cb54e7dc62f4c29f7a7cba05aa28b)
2018-10-26 20:57:23 +00:00
Bill Yi a6426eb63b [automerger skipped] Merge pie-platform-release to aosp-master - DO NOT MERGE
am: d4e20cd0f9  -s ours

Change-Id: Ie17a382505e1b8f6fb135a415f6fa8c9671354e4
2018-10-24 16:38:21 -07:00
Bill Yi 5b3b22bbc2 Merge pie-platform-release to aosp-master - DO NOT MERGE
Change-Id: I413bb086f5ff064430c061bdd5d0fe3d02925304
2018-10-24 14:48:45 -07:00
Suren Baghdasaryan 301581b8af Merge "lmkd: Add command to get number of kills"
am: a1c684be4f

Change-Id: I0e22129a27765cacb7840a3c60b95b20c9d0d42d
2018-10-24 14:45:11 -07:00
Suren Baghdasaryan a7394ea37f lmkd: Add command to get number of kills
Intrduce LMK_GETKILLCNT command for ActivityManager to get the number of
kills from lmkd.

Bug: 117126077
Test: used lmkd_unit_test to verify correct reporting
Change-Id: I09c720a7176b4df95efc544177cd2694f8d791be
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-10-24 17:18:32 +00:00
Bill Yi 850ee989e4 Merge pi-platform-release to stage-aosp-master - DO NOT MERGE
Change-Id: Ibdbef72fcbee2eb6688f526e353f7244b93df734
2018-10-24 09:18:47 -07:00
Srinivas Paladugu bab828217f Merge "lmkd: increase the soft limit for keyboard"
am: 618be4c225

Change-Id: Ia475bcd0feaaeaf0ea9cb2a8af9bc12e020532fd
2018-10-16 13:31:00 -07:00
Srinivas Paladugu a453f0b9ee lmkd: increase the soft limit for keyboard
lmkd sets the soft limit parameters for Go devices.
The limit for apps in the perceptible group is set to 16M.
However this limit is not sufficient for the keyboard app to
prevent pages from being re-claimed quickly. The mem usage of
the keyboard app is around 55M most cases with some occasional
spikes to 70-80M. Increasing the limit to 64M improves the warm
startup latency for keyboard. It is still lower than the limits
set for foreground and visible apps.

Test: Go device (1G)
Bug: 117517805
Merged-In: Id50e49327cfd76126e41ef6503971845f29196af
Change-Id: Id50e49327cfd76126e41ef6503971845f29196af
2018-10-16 18:58:01 +00:00
Suren Baghdasaryan fee8b42c10 Merge "lmkd: Implement pid purge command to clear old pids when zygote restarts"
am: 79e5b550ce

Change-Id: I054cc48a4f9106f0a4e9f313bf997facac9c1b1e
2018-10-15 13:07:28 -07:00
Suren Baghdasaryan 83df0088a3 lmkd: Implement pid purge command to clear old pids when zygote restarts
lmkd keeps a list of pids registered by ActivityManager, however on rare
occasions when framework restarts and lmkd survives that list has to be
purged. Implement a command that can be used to clear the pid list.

Bug: 116801366
Test: locally by killing zygote process
Change-Id: I71d6012f86bb83a73edd5b687e05a0848e0569b1
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-10-15 16:22:17 +00:00
Suren Baghdasaryan fd42ffb457 Merge "lmkd: Fix an invalid access to a pointer after it's freed"
am: 1f149d8d2a

Change-Id: I3bd979baf13d574b0f3f6eef1236512d9342640e
2018-10-12 14:39:28 -07:00
Suren Baghdasaryan 8b00c6d79a lmkd: Fix an invalid access to a pointer after it's freed
pid_remove() frees a structure representing registered process and the
pointer can't be used anymore. This change fixes an instance when pointer
was used after it was freed. pid_remove() is moved to the end of the
function and comments are added to prevent similar situation in the future.

Bug: 117625315

Change-Id: I6a922952a31232497b3f9caf87d5a21bd402db94
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-10-12 11:28:33 -07:00
Rajeev Kumar 2b07944e79 Read memory stats from /proc/pid/stat file.
(cherry pick from commit 0301683e49ab255769b15469487feaab3466167a)
Bug: 117333340
Test: Manual testing using alloc-stress tool
Merged-In: Ie555933aafa6a6b7aa1dbf5518ebe804376e0afd
Change-Id: Ie555933aafa6a6b7aa1dbf5518ebe804376e0afd
2018-10-10 18:20:10 -07:00
Rajeev Kumar 6a4ee28b85 [automerger skipped] Merge "Read memory stats from /proc/pid/stat file."
am: d936e628a3  -s ours

Change-Id: Ifcc16f31ad7dc9b9a6f7071dbbb5741fc96c064d
2018-10-10 17:50:52 -07:00
Rajeev Kumar 2534d2e54d Read memory stats from /proc/pid/stat file.
(cherry pick from commit 0301683e49ab255769b15469487feaab3466167a)
Bug: 117333340
Test: Manual testing using alloc-stress tool
Merged-In: Ie555933aafa6a6b7aa1dbf5518ebe804376e0afd
Change-Id: Ie555933aafa6a6b7aa1dbf5518ebe804376e0afd
2018-10-10 22:23:25 +00:00
Suren Baghdasaryan ba497f0324 Merge "lmkd: rate-limit and cleanup failed kill reports"
am: 83193c6c78

Change-Id: I087c782727e8c83afe606e0c23b42aa2e048e11b
2018-09-06 12:33:33 -07:00
Suren Baghdasaryan 53be36e6d8 lmkd: rate-limit and cleanup failed kill reports
Excessive number of failed kill reports when lmkd can't find an eligible
process to kill or frees not enough memory pollutes logs and bugreports.
Cleanup kill reports to remove duplicate information and rate limit failed
kill attempts at 1 report per sec. The number of suppressed failed kills
will be reported in the next lmkd report.

Bug: 113864581
Test: Verified using lmkd_unit_test
Change-Id: I67fa1fec97613f136c7582115edcbc56b1503c9c
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-09-06 01:59:49 +00:00
Suren Baghdasaryan 3e81b52bb8 Merge "lmkd: Introduce system property to get minfree and oom_adj levels"
am: ca2d03ebdb

Change-Id: I8cfbfb8ec49336820692d04af6efc8adae23820d
2018-09-05 17:08:24 -07:00
Suren Baghdasaryan 1ed0db1a19 lmkd: Introduce system property to get minfree and oom_adj levels
Introduce sys.lmk.minfree_levels system property to allow minfree level
reporting. The format for this property is:

<minfree 1>:<oom_adj 1>, <minfree 2>:<oom_adj 2>, ...

Max number of minfree levels is 6 and they are specified in the
increasing order. For example:

sys.lmk.minfree_levels=18432:0,23040:100,27648:200,32256:300,55296:900,80640:906

sys.lmk.minfree_levels updates are ratelimited to once per second in order
to prevent DoS attacks.

Bug: 111521182
Test: getprop sys.lmk.minfree_levels returns expected value
Change-Id: I80d75d6836650b12457d6a99ca88898535837a97
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-09-05 10:54:22 -07:00
Vic Yang 19a9c239ba Merge "lmkd: Do not downgrade/ignore events when swap is full"
am: c48943165d

Change-Id: Id9497112443f9a11cbf2368dd10019359c4fc3ee
2018-08-14 16:10:18 -07:00
Treehugger Robot ac26903b12 Merge "lmkd: Do not downgrade/ignore events when swap is full" 2018-08-14 21:31:56 +00:00
Suren Baghdasaryan dcc35528fc Merge "lmkd: Add meminfo logging after each kill for easy troubleshooting"
am: 7bb1ae2d88

Change-Id: Ie54654d0dd35b9549b017a7e2d10b80536e4a3af
2018-08-10 18:57:09 -07:00
Suren Baghdasaryan 08bfa985d1 lmkd: Add meminfo logging after each kill for easy troubleshooting
While troubleshooting memory pressure related issues it's hard to get a
good view of the memory state when lmkd kill happens. Logging relevant
information from /proc/meminfo file that was used to make a kill decision
is very helpful for further analysis. To do this efficiently we are using
Android Logger event library functions and log the data used for kill
decision after the kill signal was issued.

Test: Run lmkd_unit_test and logcat -b events -v descriptive
Change-Id: Id5de41b9d91a04dd5d3eb9b85d4e1babe9755628
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-08-10 14:21:31 -07:00
Suren Baghdasaryan 456cdfd896 [automerger skipped] Merge "lmkd: Skip memory.stat usage when per-app memcgs are not used"
am: 1e0e1b44bd  -s ours

Change-Id: Ic2a13be530643b3b30c69587ec7dfbe76725474b
2018-08-08 11:38:50 -07:00
Vic Yang 65680690d7 lmkd: Do not downgrade/ignore events when swap is full
When the swap space is full, a pressure event is unlikely to resolve by
itself.  In this case, do not downgrade or ignore the events.

Bug: 112056451
Test: Fill up swap on a 1GB device and check critical vmpressure events
      are not downgraded.
Change-Id: If154dc364711bf7c86f32e24ddcd10be359386de
2018-08-08 10:00:06 -07:00
Suren Baghdasaryan 2f81a77326 lmkd: Skip memory.stat usage when per-app memcgs are not used
Initial change to remove memory.stat usage when per-application memcgs
are disabled was partially merged into AOSP under the following id:
Ib6dd7586d3ef1c64cb04d16e2d2b21fa9c8e6a3a
This change adds the missing parts.

Bug: 110384555
Change-Id: I1265021b1ede0e68efbf80d6430a959eaf46a69a
Merged-In: Ib6dd7586d3ef1c64cb04d16e2d2b21fa9c8e6a3a
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2018-08-08 01:18:38 +00:00