Commit Graph

1543 Commits

Author SHA1 Message Date
Suren Baghdasaryan 8aec07bbe0 lmkd: Do not treat RSS=0 as a sign of a process being dead am: 5263aa7800
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1690656

Change-Id: I785575f6428b89bb59df690828fb60dc73f7d6e7
2021-04-30 00:35:22 +00:00
Suren Baghdasaryan 5263aa7800 lmkd: Do not treat RSS=0 as a sign of a process being dead
With kernel SPLIT_RSS_COUNTING feature it is possible for a valid
process to report RSS of 0 size when reading /proc/pid/statm. This
happens because split RSS accounting aggregates per-thread counters
asynchronously and depending on the timing of the read, reported
value can be inaccurate and occasionally be 0.
lmkd currently treats processes reporting RSS of 0 as dead and
removes them from the list of processes being tracked. This might
lead to a valid process becoming unkillable.
Change lmkd to stop treating RSS of 0 as a sign of a dead process.

Bug: 160199622
Test: set ro.lmk.kill_heaviest_task=true and hack kernel to report RSS=0
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ia311d2f98649c92d1a487657f94ea51f57813b73
2021-04-29 15:33:06 -07:00
Suren Baghdasaryan f42759567e lmkd: Handle cases when proc_get_name() might return NULL am: 9f1be12b9a am: d7838b8e06 am: c30dd665ba am: e67d7be9e4
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1685347

Change-Id: Id1b01af0d1c5b3655dae734a02dabc590b79ebce
2021-04-24 00:14:34 +00:00
Suren Baghdasaryan d9cae1e040 lmkd: Handle cases when proc_get_name() might return NULL am: 9f1be12b9a am: d7838b8e06 am: c30dd665ba am: e67d7be9e4
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1685347

Change-Id: Iabc973097334994ffbbc6111a3fa8f36b298f478
2021-04-24 00:14:25 +00:00
Suren Baghdasaryan 5800a8474d lmkd: Handle cases when proc_get_name() might return NULL am: 9f1be12b9a am: d7838b8e06 am: c30dd665ba am: e67d7be9e4
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1685347

Change-Id: I3ce5bfb7818f784db02ae6a4618edc3c2b8a4563
2021-04-24 00:11:49 +00:00
Suren Baghdasaryan e67d7be9e4 lmkd: Handle cases when proc_get_name() might return NULL am: 9f1be12b9a am: d7838b8e06 am: c30dd665ba
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1685347

Change-Id: I0b430aeda1892a8916ac2538824496b0132c551e
2021-04-23 23:48:05 +00:00
Suren Baghdasaryan c30dd665ba lmkd: Handle cases when proc_get_name() might return NULL am: 9f1be12b9a am: d7838b8e06
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1685347

Change-Id: I0ee304f6d85704ffdfe7868379a2dfe5ab28c22e
2021-04-23 23:25:43 +00:00
Suren Baghdasaryan d7838b8e06 lmkd: Handle cases when proc_get_name() might return NULL am: 9f1be12b9a
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1685347

Change-Id: I048051fbbcf880642206e0a219171e7474fc677d
2021-04-23 23:04:06 +00:00
Suren Baghdasaryan e5995b8269 lmkd: Handle cases when proc_get_name() might return NULL
proc_get_name() can return NULL if the corresponding process has died
or open fails with ENOMEM due to memory shortages.
Ensure such cases are handled without NULL pointer access.

Bug: 186157675
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I05b288e3808bec0bdb73db32de02ba3a322ca6e1
2021-04-23 21:18:35 +00:00
Suren Baghdasaryan 9f1be12b9a lmkd: Handle cases when proc_get_name() might return NULL
proc_get_name() can return NULL if the corresponding process has died
or open fails with ENOMEM due to memory shortages.
Ensure such cases are handled without NULL pointer access.

Bug: 186157675
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I05b288e3808bec0bdb73db32de02ba3a322ca6e1
2021-04-23 21:18:18 +00:00
android-build-team Robot 547707cc2e Snap for 7269201 from e68bfe9a73 to rvc-qpr3-release
Change-Id: I4121184ff7bb28e9ee2d7e029d6d875833c46504
2021-04-08 22:07:02 +00:00
Suren Baghdasaryan 78c0e9721a [automerger skipped] lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: e68bfe9a73 -s ours am: 0107f3c655 -s ours am: 3fc2bcd6ad -s ours
am skip reason: skip tag Change-Id Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0 with SHA-1 0142b3c166 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108657

Change-Id: I8cffc3dfa7b690bb7d6047c2673e73f9d3e7ddaa
2021-04-08 06:55:45 +00:00
Suren Baghdasaryan 3bb9e3613c [automerger skipped] lmkd: choose the heaviest task when killing perceptible processes am: 720abce177 -s ours am: c5bc8cb7fa -s ours am: 09a988ee63 -s ours
am skip reason: skip tag Change-Id I775ff774430b6fde4d619ede794825dbae59fd8e with SHA-1 858e8c6373 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108656

Change-Id: If0508ce65fa4f9d2b1d90c606253ac149fa80632
2021-04-08 06:55:43 +00:00
Suren Baghdasaryan 98aad848f9 [automerger skipped] lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: e68bfe9a73 -s ours am: 0107f3c655 -s ours am: 3fc2bcd6ad -s ours
am skip reason: skip tag Change-Id Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0 with SHA-1 0142b3c166 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108657

Change-Id: I9828fd3c371c2ba8eb1bdfcf11beb089340daf4f
2021-04-08 06:55:24 +00:00
Suren Baghdasaryan efd8fd8440 [automerger skipped] lmkd: choose the heaviest task when killing perceptible processes am: 720abce177 -s ours am: c5bc8cb7fa -s ours am: 09a988ee63 -s ours
am skip reason: skip tag Change-Id I775ff774430b6fde4d619ede794825dbae59fd8e with SHA-1 858e8c6373 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108656

Change-Id: I02cf9bcc8edec0fc114bb95020b88b5a051006ad
2021-04-08 06:55:23 +00:00
Suren Baghdasaryan 3fc2bcd6ad [automerger skipped] lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: e68bfe9a73 -s ours am: 0107f3c655 -s ours
am skip reason: skip tag Change-Id Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0 with SHA-1 0142b3c166 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108657

Change-Id: I166723399de996ccfcd2eececd6ad8bc7ae557e7
2021-04-08 06:20:01 +00:00
Suren Baghdasaryan 09a988ee63 [automerger skipped] lmkd: choose the heaviest task when killing perceptible processes am: 720abce177 -s ours am: c5bc8cb7fa -s ours
am skip reason: skip tag Change-Id I775ff774430b6fde4d619ede794825dbae59fd8e with SHA-1 858e8c6373 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108656

Change-Id: Ib28ff7ce4e4b7f20b2fb6758b9d50320d6d9afad
2021-04-08 06:20:01 +00:00
Suren Baghdasaryan 0107f3c655 [automerger skipped] lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: e68bfe9a73 -s ours
am skip reason: skip tag Change-Id Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0 with SHA-1 0142b3c166 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108657

Change-Id: Ic33eb574acd23965cb6f7742ccc2093b3e0033b3
2021-04-08 05:52:00 +00:00
Suren Baghdasaryan c5bc8cb7fa [automerger skipped] lmkd: choose the heaviest task when killing perceptible processes am: 720abce177 -s ours
am skip reason: skip tag Change-Id I775ff774430b6fde4d619ede794825dbae59fd8e with SHA-1 858e8c6373 is already in history

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/memory/lmkd/+/14108656

Change-Id: I38ceae15c85ab3e02f4bb3e25d88729ed779406e
2021-04-08 05:51:59 +00:00
Suren Baghdasaryan e68bfe9a73 lmkd: Allow lmkd to kill perceptible apps during heavy thrashing
Occasionally a system can get into heavy file cache thrashing situation
and become unresponsive. In these situations we observe lmkd wakeups,
however it does not kill because all non-perceptible apps are already
killed and the system manages to reclaim enough memory to stay above
min watermark.
Add ro.lmk.thrashing_limit_critical property which when breached will
allow lmkd to kill perceptible apps. The property represents the
percentage of refaulted workingset pages as a fraction of overall file
cache size. By default it is disabled.

Bug: 181778155
Test: thrashing.py 500 10 200
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Merged-In: Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0
Change-Id: Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0
2021-04-07 11:55:04 +08:00
Suren Baghdasaryan 720abce177 lmkd: choose the heaviest task when killing perceptible processes
When killing a task at or lower than oom_score_adj PERCEPTIBLE_APP_ADJ
choose the heaviest task among the ones at that level to try minimizing
the number of required kills. Because killing a perceptible app will
affect user experience anyway, it makes sense to choose the one that
will release the most memory and therefore no more kills might be
necessary.

Bug: 181778155
Test: running thrashing.py script
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Merged-In: I775ff774430b6fde4d619ede794825dbae59fd8e
Change-Id: I775ff774430b6fde4d619ede794825dbae59fd8e
2021-04-07 11:50:57 +08:00
Suren Baghdasaryan dda9c07f98 lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: 0142b3c166 am: 7ccd2c10ee am: eb09287574 am: dff35b7973
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1653491

Change-Id: I9bc8321ba0d306bac0a78693355501aaf80c44ef
2021-03-31 21:54:35 +00:00
Suren Baghdasaryan 87da516822 lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: 0142b3c166 am: 7ccd2c10ee am: eb09287574 am: dff35b7973
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1653491

Change-Id: I6d1a1ca31455c8da156b6527016ec484f709bfe3
2021-03-31 21:53:14 +00:00
Suren Baghdasaryan dff35b7973 lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: 0142b3c166 am: 7ccd2c10ee am: eb09287574
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1653491

Change-Id: I993499fa1c3b3fc8e0ff278ea31df8ff9c606af7
2021-03-31 21:18:13 +00:00
Suren Baghdasaryan eb09287574 lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: 0142b3c166 am: 7ccd2c10ee
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1653491

Change-Id: I3bd353b448a3a6f886805704d64ffd23bc8f46a4
2021-03-31 20:32:29 +00:00
Suren Baghdasaryan 7ccd2c10ee lmkd: Allow lmkd to kill perceptible apps during heavy thrashing am: 0142b3c166
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1653491

Change-Id: I1e014a9ccf2b1d6db1407c01feb3bc9794243c05
2021-03-31 19:56:50 +00:00
Suren Baghdasaryan 0142b3c166 lmkd: Allow lmkd to kill perceptible apps during heavy thrashing
Occasionally a system can get into heavy file cache thrashing situation
and become unresponsive. In these situations we observe lmkd wakeups,
however it does not kill because all non-perceptible apps are already
killed and the system manages to reclaim enough memory to stay above
min watermark.
Add ro.lmk.thrashing_limit_critical property which when breached will
allow lmkd to kill perceptible apps. The property represents the
percentage of refaulted workingset pages as a fraction of overall file
cache size. By default it is disabled.

Bug: 181778155
Test: thrashing.py 500 10 200
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Icb38ef6c90adaa4f5c956593b6ea0c4febc91dc0
2021-03-25 17:00:09 -07:00
Josh Gao 27e61cbf4a Switch to Bionic's pidfd wrappers. am: 84623bef7b am: 7e7793b48d am: 46b431749e am: dfd2dff7cb
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1646355

Change-Id: Ic36605f82ee6e0df8ce227fdc4cf52eff0dcc2d0
2021-03-19 19:58:06 +00:00
Josh Gao e3c33315f2 Switch to Bionic's pidfd wrappers. am: 84623bef7b am: 7e7793b48d am: 46b431749e am: dfd2dff7cb
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1646355

Change-Id: I150c51aa021f79b5597d5c472ca0561792312c4f
2021-03-19 19:57:58 +00:00
Josh Gao dfd2dff7cb Switch to Bionic's pidfd wrappers. am: 84623bef7b am: 7e7793b48d am: 46b431749e
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1646355

Change-Id: I7ea977c432125052ba7d845f3a59587806c355cb
2021-03-19 19:21:06 +00:00
Josh Gao 46b431749e Switch to Bionic's pidfd wrappers. am: 84623bef7b am: 7e7793b48d
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1646355

Change-Id: Ib9c7982acf005a17d113bd36d96635884d531bde
2021-03-19 18:58:24 +00:00
Josh Gao 7e7793b48d Switch to Bionic's pidfd wrappers. am: 84623bef7b
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1646355

Change-Id: I14598a17121770a9175b3ac1e6f46c31b21751de
2021-03-19 18:38:42 +00:00
Josh Gao 84623bef7b Switch to Bionic's pidfd wrappers.
Bug: http://b/172518739
Test: treehugger
Change-Id: Ib6cac8f31ec64343c6eec6b82dac52888890c688
2021-03-18 17:16:08 -07:00
Suren Baghdasaryan 488929daf0 lmkd: choose the heaviest task when killing perceptible processes am: 858e8c6373 am: c71ce3fed4 am: e1bfcc3cac am: 5498a6e98d
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619563

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I7adf5dae9b119e09cf8a116aed804d26abf75565
2021-03-05 20:35:03 +00:00
Suren Baghdasaryan f9d7b22e31 lmkd: fix log message reporting the breached watermark am: 236781873f am: e452c6be98 am: 4847bb51f5 am: 8d0351f6d5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619562

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I5170247334482f83a96062239535316ee01adfbc
2021-03-05 20:35:02 +00:00
Suren Baghdasaryan 094c37f632 lmkd: choose the heaviest task when killing perceptible processes am: 858e8c6373 am: c71ce3fed4 am: e1bfcc3cac am: 5498a6e98d
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619563

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I492d727e5ec65e6424b239078000680250f59497
2021-03-05 20:34:46 +00:00
Suren Baghdasaryan cf2926f976 lmkd: fix log message reporting the breached watermark am: 236781873f am: e452c6be98 am: 4847bb51f5 am: 8d0351f6d5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619562

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Iae33263d785c931a027d1d959ef50c7267af245b
2021-03-05 20:34:44 +00:00
Suren Baghdasaryan 5498a6e98d lmkd: choose the heaviest task when killing perceptible processes am: 858e8c6373 am: c71ce3fed4 am: e1bfcc3cac
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619563

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I537cdd9772fb16cc06a62c0865049dea06d5d70e
2021-03-05 20:01:44 +00:00
Suren Baghdasaryan 8d0351f6d5 lmkd: fix log message reporting the breached watermark am: 236781873f am: e452c6be98 am: 4847bb51f5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619562

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I45a8f6971ef73f2a53c1d5fd4fca6c0da52ba4b9
2021-03-05 20:01:43 +00:00
Suren Baghdasaryan e1bfcc3cac lmkd: choose the heaviest task when killing perceptible processes am: 858e8c6373 am: c71ce3fed4
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619563

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I95dc9527835a28e38feb689ba872ee1101eb5a1a
2021-03-05 19:10:12 +00:00
Suren Baghdasaryan 4847bb51f5 lmkd: fix log message reporting the breached watermark am: 236781873f am: e452c6be98
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619562

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I32a69fc6bcb77d5adfc426455e945c9bb047f9d5
2021-03-05 19:10:06 +00:00
Suren Baghdasaryan c71ce3fed4 lmkd: choose the heaviest task when killing perceptible processes am: 858e8c6373
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619563

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ib919f6de91c1634dd7c6cff70a23d17ac52b91e7
2021-03-05 18:27:14 +00:00
Suren Baghdasaryan e452c6be98 lmkd: fix log message reporting the breached watermark am: 236781873f
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619562

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I9e7f62d919466d83d5c3bf085f0b70b6c690cec5
2021-03-05 18:27:10 +00:00
Suren Baghdasaryan 858e8c6373 lmkd: choose the heaviest task when killing perceptible processes
When killing a task at or lower than oom_score_adj PERCEPTIBLE_APP_ADJ
choose the heaviest task among the ones at that level to try minimizing
the number of required kills. Because killing a perceptible app will
affect user experience anyway, it makes sense to choose the one that
will release the most memory and therefore no more kills might be
necessary.

Bug: 181778155
Test: running thrashing.py script
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I775ff774430b6fde4d619ede794825dbae59fd8e
2021-03-05 17:45:30 +00:00
Suren Baghdasaryan 236781873f lmkd: fix log message reporting the breached watermark
Wrong condition causes reporting low watermark breach when min watermark
is breached and visa versa. Fix the condition to make reporting correct.

Bug: 181778155
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I684141c38f961fce99d17cfb3a83706fcd84ea10
2021-03-05 17:45:10 +00:00
Ioannis Ilkos ed7e71b67b Reorder swap field in killinfo am: 282437fbbe am: b26c239bd9 am: 76b91a1a15 am: 47878e1ebb
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I5487ff58c0cb6e4ae655aa52f19f6520b4636c23
2021-03-05 07:04:14 +00:00
Ioannis Ilkos 95667efce8 Reorder swap field in killinfo am: 282437fbbe am: b26c239bd9 am: 76b91a1a15 am: 47878e1ebb
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I525415e8d90d8e1f09a48ee51056b80d52defed7
2021-03-05 07:04:14 +00:00
Ioannis Ilkos 47878e1ebb Reorder swap field in killinfo am: 282437fbbe am: b26c239bd9 am: 76b91a1a15
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia04ebf15d391b1b114e720606f04560775027039
2021-03-05 06:22:44 +00:00
Ioannis Ilkos 76b91a1a15 Reorder swap field in killinfo am: 282437fbbe am: b26c239bd9
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ic4923c5e286c873dcfcba276440f6aeb1e819b9a
2021-03-05 05:42:29 +00:00
Ioannis Ilkos b26c239bd9 Reorder swap field in killinfo am: 282437fbbe
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1619719

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0fc10cfb4dfcee922cb43a11660538b974b9e2b9
2021-03-05 04:53:55 +00:00