Commit Graph

503 Commits

Author SHA1 Message Date
Ioannis Ilkos 30240af1f0 Emit swap size in the killed process' statsd atoms am: 279268a07f
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1398492

Change-Id: I1a3e6a035e60cd15ff6723ffcdcdc6e01262ccc0
2020-08-13 07:51:07 +00:00
Ioannis Ilkos 279268a07f Emit swap size in the killed process' statsd atoms
Changes:
- We are already reading /proc/pid/status to resolve the tgid. While we
are at it, also parse RSS and swap values.
- Use the RSS and swap values for non memcg builds when creating the
statsd outputs
- Given we already read RSS, remove the separate read of /proc/pid/statm
that used to get tasksize.

Bug: 163116785
Test: manual, out/host/linux-x86/bin/statsd_testdrive 51
Change-Id: I9d98b9ffe8be0b014bb09174ec9532382cae1f38
2020-08-12 20:24:56 +01:00
Suren Baghdasaryan 403c7fd536 lmkd: Add lmkd wakeup information into killinfo logs am: d7b4fcb8a5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1371804

Change-Id: I99560d361860d3c4d1e83f7b8ac219d57824f817
2020-07-26 17:32:08 +00:00
Suren Baghdasaryan d7b4fcb8a5 lmkd: Add lmkd wakeup information into killinfo logs
Oftentimes while investigating bugreports it's unclear whether lmkd
was active between kills. To provide visibility into lmkd activity
adding the following fields into killinfo reports:
MsSinceEvent - number of msecs since the last PSI/vmpressure event
MsSincePrevWakeup - number of msecs since the previous wakeup
WakeupsSinceEvent - number of wakeups since the last PSI/vmpressure
event
SkippedWakeups - number of wakeups that were skipped due to an
incomplete kill

Bug: 162034541
Test: lmkd_unit_test
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I0356c27515132ff0dd309b59a8bf907acbd67cd8
2020-07-24 19:31:03 +00:00
Suren Baghdasaryan 93060362b5 lmkd: Set default kill timeout to limit waits for uninterruptible processes am: 7d1f4f0047
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/1358623

Change-Id: Iffcb4cbd88d44df216fce44c37ecace082df7d69
2020-07-11 03:07:04 +00:00
Suren Baghdasaryan 7d1f4f0047 lmkd: Set default kill timeout to limit waits for uninterruptible processes
When lmkd tries to kill a process in uninterruptible sleep state, it may
need to wait for a long time. To prevent this set the default kill timeout
to 100ms which should work for majority of the devices.

Bug: 160295034
Test: lmkd_unit_test
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ia280dc095df9ca8494278e0a75b976ed93fc04ae
2020-07-08 11:41:14 -07:00
Martin Liu ff6ad5cd06 lmkd: Fix do not kill perceptible apps due to low swap if above min wmark am: 3185c2d096
Original change: undetermined

Change-Id: I1cb82bf5ff5da1dd29876354a54b2dd963088b37
2020-06-02 17:09:23 +00:00
Martin Liu 3185c2d096 lmkd: Fix do not kill perceptible apps due to low swap if above min wmark
Fix code logic to obey our intetion of not killing perceptible apps
due to low swap if above min wmark.

Bug: 155709603
Test: boot
Signed-off-by: Martin Liu <liumartin@google.com>
Merged-In: Ifc09c2a1fe7e21faa096988f471644f63951d81c
Change-Id: Ifc09c2a1fe7e21faa096988f471644f63951d81c
2020-06-02 23:43:49 +08:00
Suren Baghdasaryan d6d8a3dc55 lmkd: Do not kill perceptible apps due to low swap if above min wmark am: 48135c4cba
Change-Id: I3ba7b9a0cab86a185cfc3c6d9f23d5ad677a0251
2020-05-20 20:59:14 +00:00
Suren Baghdasaryan 5132481e15 lmkd: Set the default free swap threshold to 10% for all devices am: fb1f592602
Change-Id: I52ada975e99ccf8d26091afbc8953ee40c491fd5
2020-05-20 20:59:13 +00:00
Suren Baghdasaryan d9ba0c99ae lmkd: Fix min_score_adj to exclude killing foreground processes am: 5c039b53d8
Change-Id: Iebe3f5c02c882cc47e5fb25cd14bff4ee9667482
2020-05-20 20:59:11 +00:00
Suren Baghdasaryan 48135c4cba lmkd: Do not kill perceptible apps due to low swap if above min wmark
Prevent kills of perceptible apps due to swap shortages unless system
free memory is below the min watermark. This prevents kills of important
apps when the system is recovering from the memory pressure.

Bug: 155709603
Test: memory stress test with multiple foreground apps
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I6beb4b55f8b4f7bc22818b5a7bdfa3adc6cd31c1
2020-05-20 12:22:07 -07:00
Suren Baghdasaryan fb1f592602 lmkd: Set the default free swap threshold to 10% for all devices
Lower the min swap threshold to 10% for all devices to limit kills while
swap still has enough space.

Bug: 155709603
Test: memory stress test with multiple foreground apps
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Merged-In: I443486763c034ed0603ea52b81c060c3969af9a5
Change-Id: I443486763c034ed0603ea52b81c060c3969af9a5
2020-05-20 12:21:34 -07:00
Suren Baghdasaryan 5c039b53d8 lmkd: Fix min_score_adj to exclude killing foreground processes
In the cases when foreground processes should not be killed
min_score_adjust should be set above PERCEPTIBLE_APP_ADJ to prevent such
kills.

Bug: 155709603
Test: memory stress test with multiple foreground apps
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Merged-In: If187654b8001ce843ec6085ccd2042d75a986dae
Change-Id: If187654b8001ce843ec6085ccd2042d75a986dae
2020-05-20 12:21:10 -07:00
Kyeongdon Kim c93040a423 lmkd: fix type warning from static analysis tools am: 65857db6a9
Change-Id: Ie174a997b4f41b0d582893182b15039d8638f9ee
2020-05-12 20:09:12 +00:00
Kyeongdon Kim 65857db6a9 lmkd: fix type warning from static analysis tools
In memcg process stat path,
%u in format string (no.2) requires 'unsigned int'
but the argument type is 'signed int'.

Bug: NA
Test: check statslog with lmkd operation
Signed-off-by: Kyeongdon Kim <kyeongdon.kim@lge.com>
Change-Id: I3fcee57efbf26724878a81c8e1acd419aab8b95b
2020-05-12 19:56:46 +00:00
Suren Baghdasaryan 38855fe192 lmkd: Enable stricter compiler checks am: e538ba2df6
Change-Id: Ife625c2ab0886cd9333269edb92d5e39447b15f8
2020-05-12 19:19:55 +00:00
Suren Baghdasaryan 8fa0ac5c64 lmkd: Remove unused variables and fix type mismatches am: ed715a3424
Change-Id: Ibcce20a6b9d724e102740683df45a16a0dfb3708
2020-05-12 19:19:53 +00:00
Suren Baghdasaryan e538ba2df6 lmkd: Enable stricter compiler checks
Enable -Wall and -Wextra compiler flags to catch compilation warnings.

Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ia802dbd7abb167d66b76390e269e4a4418ca5def
2020-05-12 02:56:41 +00:00
Suren Baghdasaryan ed715a3424 lmkd: Remove unused variables and fix type mismatches
Fix compilation warnings by removing unused variables and add typecasting
whenever mixed type comparisons are performed.

Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I7f0839d803a6bf6532f077208ce54aba761dc9fe
2020-05-11 19:52:52 -07:00
Suren Baghdasaryan 4434ef0223 lmkd: Add property re-initialization support am: 1d0ebeaa9c
Change-Id: I0d29bf11bb96a7b97174a0def2753ea169835802
2020-05-07 16:00:43 +00:00
Suren Baghdasaryan 1d0ebeaa9c lmkd: Add property re-initialization support
Add --reinit command-line option to allow updating lmkd properties. For
example to enable debug logging in the running lmkd process user should
issue:

setprop ro.lmk.debug true
lmkd --reinit

Bug: 155149944
Test: lmkd_unit_test after resetting lmkd properties
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ic60331f3368f5a7fdfe09ad7d47c7ccf0a497685
2020-05-06 15:05:04 -07:00
Suren Baghdasaryan d77a36e91b lmkd: enable ro.lmk.kill_timeout_ms to be used with kill notifications am: 03dccf35a1
Change-Id: I564cf2f1f21481b13f53df0606d03226c444ef19
2020-04-30 00:17:07 +00:00
Suren Baghdasaryan 63123e1b84 lmkd: polling code cleanup am: 9ca5334683
Change-Id: I4cf6a8f55d9fc127d80686c07ce2893f3146f0da
2020-04-30 00:17:01 +00:00
Suren Baghdasaryan 45737af035 lmkd: add kill when swap utilization is too high am: 51ee4c505f
Change-Id: If8e5648ae6965d1f26c0032aa0ca548695d2b33f
2020-04-30 00:16:54 +00:00
Suren Baghdasaryan 03dccf35a1 lmkd: enable ro.lmk.kill_timeout_ms to be used with kill notifications
Allow lmkd to stop waiting for a kill notification if a kill takes longer
than ro.lmk.kill_timeout_ms.

Bug: 147315292
Test: lmkd_unit_test with ro.lmk.kill_timeout_ms set to 100
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: Ia3eed3448fd6928a5e634c2737044722048b3578
2020-04-29 15:11:36 -07:00
Suren Baghdasaryan 9ca5334683 lmkd: polling code cleanup
- Remove unused POLLING_STOP state
- Simplify POLLING_DO_NOT_CHANGE state handling
- Correct last_poll_tm assignment logic

Bug: 147315292
Test: lmkd_unit_test
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: If0674eda954a25f0f6c9188501ff77db8ba0813b
2020-04-29 15:11:15 -07:00
Suren Baghdasaryan 51ee4c505f lmkd: add kill when swap utilization is too high
When non-swappable allocations cause memory pressure swap will not be
depleted, however a high percentage of the swappable memory will be
pushed into swap. Detect this condition and kill a process when swap
utilization is too high while under memory pressure.
Introduce ro.lmk.swap_util_max property to represent max percentage of
the overall swappable memory that can be swapped under memory pressure
without triggering a kill. ro.lmk.swap_util_max is set to 100 by default
which disables kills due to the swap utilization.

Bug: 147315292
Test: ION memory hogger with ro.lmk.swap_util_max set to 95
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I6dbf124bb24b220d136e8f16b3dae0c0c30d32ca
2020-04-29 15:11:02 -07:00
Tom Cherry e3858891a4 Include what you use: <stdio.h> and <unistd.h> am: 24b31dced5
Change-Id: Id5cebf4c2e8e268d8b64c30c02cc5265190677ca
2020-04-14 01:13:01 +00:00
Tom Cherry 24b31dced5 Include what you use: <stdio.h> and <unistd.h>
These were transitively included, but no longer are, so they must be
explicitly included.

Exempt-From-Owner-Approval: Janitorial
Test: build
Change-Id: Ic0896401d148b22f33d6edb1fac377208e437565
2020-04-13 15:21:09 -07:00
Tom Cherry 8ba967fb30 Include what you use: <fcntl.h> am: 0ebe6800bc
Change-Id: I9cec3a4d2e00e996880beaaacf55d74a12f6a016
2020-04-13 19:36:16 +00:00
Tom Cherry 0ebe6800bc Include what you use: <fcntl.h>
This was transitively included, but no longer is, so it must be
explicitly included.

Exempt-From-Owner-Approval: Janitorial
Test: build
Change-Id: I89657fa33df4bc0f92685012b3ab9b24d55d1619
2020-04-13 11:10:12 -07:00
Xin Li ee05bc2f99 DO NOT MERGE - Empty merge qt-qpr1-dev-plus-aosp into stag-aosp-master
Bug: 151763422
Change-Id: I4d701ead7b0d88ae89575f79844557290e109f66
2020-04-09 17:51:29 -07:00
Xin Li 3313cbce58 DO NOT MERGE - Empty merge qt-qpr1-dev-plus-aosp@6304901 into stag-aosp-master am: a28018dcb9
Change-Id: I38113dd9d2071de5be0e90bab55297d00a5b5d35
2020-03-19 04:22:52 +00:00
Xin Li a28018dcb9 DO NOT MERGE - Empty merge qt-qpr1-dev-plus-aosp@6304901 into stag-aosp-master
Bug: 151763422
Change-Id: I3ea7e3bb734ff3fb28e34c7b246065541c62c23b
2020-03-18 19:40:58 -07:00
Automerger Merge Worker 23a9195feb lmkd_test: set process types am: fce58e9165 am: 8b760ee3d4
Change-Id: Ib2981a1ee5dfd276dee992e8fb599e0a3d591eec
2020-03-09 20:19:04 +00:00
Automerger Merge Worker 8b760ee3d4 lmkd_test: set process types am: fce58e9165
Change-Id: Icdfe43af674d3643a3c304c16bc827762151f050
2020-03-09 20:03:53 +00:00
Martin Liu fce58e9165 lmkd_test: set process types
We introduced supporting process type while
registering a process in lmkd. Thus we need
to set process type when registering the test
unit or lmkd would not be able to kill it.

Bug: 143857475
Test: Verified using lmkd_unit_test
Change-Id: I7bf2b552c242dbdc13bb431248ec9182dccaa599
2020-03-09 13:17:51 +08:00
Muhammad Qureshi e18b6d0b90 Link libstatssocket as a shared library. am: 87168c0e26 am: 2171a0c2f4
Change-Id: Idb85f7875499f727744bd7b6cbe2f40ff7991efe
2020-02-14 22:19:30 +00:00
Muhammad Qureshi 2171a0c2f4 Link libstatssocket as a shared library. am: 87168c0e26
Change-Id: I02b53349508cfead1d6a43704b39ad648bf8e3f0
2020-02-14 22:00:51 +00:00
Muhammad Qureshi 87168c0e26 Link libstatssocket as a shared library.
As part of moving libstatssocket into statsd apex, libstatssocket will
only be available as a shared library.

Bug: 145923416
Test: m
Change-Id: Ia6b13dcd378011c201b2595d2b3f3fc14213011b
2020-02-12 16:42:53 -08:00
Automerger Merge Worker 5759b94152 DO NOT MERGE - Empty merge qt-qpr1-dev-plus-aosp-without-vendor (6129114) into stage-aosp-master am: 45cb77c5bc
Change-Id: Id74bdff1f30e8a1a6da7ddd6c2c989eb1e0f889e
2020-01-16 01:46:18 +00:00
Xin Li 45cb77c5bc DO NOT MERGE - Empty merge qt-qpr1-dev-plus-aosp-without-vendor (6129114) into stage-aosp-master
Bug: 146167222
Change-Id: I0adb962a42c190f863a301731f8cf53237821555
2020-01-15 15:59:17 -08:00
Automerger Merge Worker 08a1f55b5c Use generated code for logging events to statsd am: ed8fe8465a am: 0ecafff527
Change-Id: I3a438b1f43acd9e02031f1da3c66927ace16e607
2020-01-15 23:21:52 +00:00
Muhammad Qureshi 0ecafff527 Use generated code for logging events to statsd
am: ed8fe8465a

Change-Id: I7c80056a8453345552042728e3eea7c5ef5ccdca
2020-01-15 15:03:59 -08:00
Muhammad Qureshi ed8fe8465a Use generated code for logging events to statsd
Use the autogenerated libstatslog_lmkd to send events to statsd

The logging schema for statsd is changing as part of statsd becoming
a Mainline module in R. The autogenerated code will handle the schema
change.

Bug: 145887874
Test: m -j
Test: atest android.cts.statsd.atom.UidAtomTests#testLmkKillOccurred

Change-Id: Ibae4cd822807369a799d5c1f6a9c51272e38a074
2020-01-13 12:16:47 -08:00
Automerger Merge Worker 1c18c3396b lmkd: Restrict lmkd unsolicited notifications only to subscribed recipients am: 36baf44179 am: 9c7233e6c7
Change-Id: Ib77c400f901477dce48127fc87e3531c113db2d9
2019-12-23 23:15:52 +00:00
Suren Baghdasaryan 9c7233e6c7 lmkd: Restrict lmkd unsolicited notifications only to subscribed recipients
am: 36baf44179

Change-Id: Iccb0b07c089bcf345e2dd8b5b08f412f3a891b9a
2019-12-23 15:02:33 -08:00
Suren Baghdasaryan 36baf44179 lmkd: Restrict lmkd unsolicited notifications only to subscribed recipients
lmkd unsolicited notifications can cause lmkd to block if clients are not
consuming them. Fix that by sending notifications to only subscribed
clients. Introduce LMK_SUBSCRIBE command to allow lmkd clients to subscribe
to event notifications. The only asynchronous event currently supported is
LMK_ASYNC_EVENT_KILL.

Bug: 146597855
Test: fill up send buffer using lmkd_unit_test
Test: confirm lmkd does not block after the fix
Change-Id: I014159aa55b59081f4b9ed53ecd160a49c0682bb
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2019-12-23 12:35:29 -08:00
Automerger Merge Worker 6b9bcd6944 lmkd_test: align proc_name with lmkd am: f2ead0ca1a am: 3cfaed6e43
Change-Id: I78837e4a72b0086498a5b6824d2a7c4ad5b86e86
2019-12-21 04:22:51 +00:00