Commit Graph

1647 Commits

Author SHA1 Message Date
Treehugger Robot da6d947875 Merge "[Native Lint] Destination buffer is not null terminated explicitly. (strncpy)" into main am: 98ebe895e4
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3282994

Change-Id: Icfc5a72138a8a64fa24f1fff1261ed9b91f988db
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2025-01-16 10:56:40 -08:00
Treehugger Robot 98ebe895e4 Merge "[Native Lint] Destination buffer is not null terminated explicitly. (strncpy)" into main 2025-01-16 10:25:35 -08:00
Suren Baghdasaryan 810b69632d lmkd: fallback to reading procfs stats when failing to read cgroup stats am: dcd968db5e
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3454703

Change-Id: Ie11f16434a6192cceb2bbafd82a22931c29e93b9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2025-01-15 15:39:05 -08:00
Suren Baghdasaryan dcd968db5e lmkd: fallback to reading procfs stats when failing to read cgroup stats
If cgroup interface is unavailable and can't be used to obtain memory
stats we can fall back to reading procfs stats. Such failure would
indicate a misconfigured device with ro.config.per_app_memcg set but
memory cgroup not being mounted or enabled correctly. However stats
reporting should not suffer because of this misconfiguration. Allow
lmkd to fall back to reading stats from procfs interface when this
happens.

Bug: 388926998
Change-Id: Idfc777022c842b45a2640f04edb70de7ca6feac8
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2025-01-15 13:32:43 -08:00
Abdelrahman Daim 96f09654e4 [Native Lint] Destination buffer is not null terminated explicitly. (strncpy)
Summary: As a good practice, let's make sure that the "kill_desc" buffer is always null-terminated, even if its size changes in the future.

Test: Successful build on master.

Change-Id: I68a0dc346ea26126a1581994f9c508980a6ac408
Signed-off-by: Abdelrahman Daim <adaim@meta.com>
2025-01-08 04:08:23 -08:00
Elliott Hughes 9201a73bba Stop redefining __NR_process_mrelease. am: 50e484b980 am: efa3f840cf
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3390119

Change-Id: I820ec03b21398202a0310440ace09cd8b4a69034
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-04 15:57:23 +00:00
Elliott Hughes efa3f840cf Stop redefining __NR_process_mrelease. am: 50e484b980
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3390119

Change-Id: Id3d0bffe3836b81e1afb83a0d9f07b83109c238a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-12-04 15:21:14 +00:00
Elliott Hughes 50e484b980 Stop redefining __NR_process_mrelease.
Change-Id: Icc7ba982b3f47802685e8af40045367c627bf133
2024-12-03 19:13:32 +00:00
Treehugger Robot 6353dc6926 Merge "lmkd: count the number of times LMKD wakes up" into main am: 6a886a90ae am: 0b971a7057
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3259917

Change-Id: I3cfd3e6eb072b87201bb02a37ce1b35bf6065931
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-19 18:39:33 +00:00
Treehugger Robot 0b971a7057 Merge "lmkd: count the number of times LMKD wakes up" into main am: 6a886a90ae
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3259917

Change-Id: I5e53f6a45862babc5cdb0c47f8b532a1681124ac
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-19 17:52:58 +00:00
Treehugger Robot 6a886a90ae Merge "lmkd: count the number of times LMKD wakes up" into main 2024-11-19 17:29:23 +00:00
Treehugger Robot c2c7eb96e8 Merge "lmkd: Fix first poll of an event occuring sooner than intended." into main am: c1104f8127 am: b4a726f7a3
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3333495

Change-Id: I55c13586d691217977fd9510ec4b5d5648f9c477
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-19 01:57:52 +00:00
Divyanand Rangu ce5bc38327 lmkd: fix higher event being reset by lower and polling start am: c7eca43006 am: 534bf94822
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3322634

Change-Id: I7a7a4c767384868cfd4bb909941db83c8d480886
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-19 01:56:30 +00:00
Treehugger Robot b4a726f7a3 Merge "lmkd: Fix first poll of an event occuring sooner than intended." into main am: c1104f8127
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3333495

Change-Id: I8dd0c81573fae5a116c2846f843d7d1d59cf7aa1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-19 01:34:48 +00:00
Divyanand Rangu 534bf94822 lmkd: fix higher event being reset by lower and polling start am: c7eca43006
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3322634

Change-Id: I4056be703d748fe559b0f41cdeec20cd790d4b6f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-19 01:34:02 +00:00
Treehugger Robot c1104f8127 Merge "lmkd: Fix first poll of an event occuring sooner than intended." into main 2024-11-19 01:22:56 +00:00
JohnHsu a63948e455 lmkd: count the number of times LMKD wakes up
LMKD was woken up when the memory pressure was high enough either in
either the psi or the vmpressure mechanism. The memory reclaim ability
is based on CPUs' capacity of a chip and it is different from each
others. This patch can count the number of lmkd wake up when meet the
memory pressure threshold instead of heavy-loading logging. To show the
count, we can just re-init the lmkd, and it will print in the android
logcat and reset the count to zero.

Test: Run APP rotation

Bug: 365748420
Signed-off-by: JohnHsu <john.hsu@mediatek.com>
Change-Id: I3980d2a90a910c64449b4ad2b005e4d0437097e8
2024-11-13 16:41:18 +08:00
Divyanand Rangu c7eca43006 lmkd: fix higher event being reset by lower and polling start
When both Medium and Critical events occur at same time,
depending on how the events are queued, the later event
resets the former event.
We'd want the subsequent polling (till next event is triggered)
to happen with higher event.
So, it is fine if Critical event overrides Medium, but not other
way around.

Let's see below scenario where both Medium and Critical events
occur (at T0) and handled one after other
T0: critical event handled.
T0 + 2ms: medium event handled.
T0 + 102ms: medium event polling check. //This should be critical poll

Bug: 376003899
Change-Id: I16ff3b999d7531435324a628ac17968fd4cae8cf
2024-11-06 23:37:41 +05:30
Divyanand Rangu d155efb41b lmkd: Fix first poll of an event occuring sooner than intended.
When a new event occurs (could be of same level or different,
doesn't matter) after a event-poll is handled, poll of new event
waits only for "100ms - time since last poll is handled".
But new poll should start after 100ms of last triggered event.
T0: event-1 triggered.
T100: event-1 polled
T120: event-2 triggered.
T200: event-2 polled. (This poll should happen 100ms after T120, i.e., T220)

Bug: 377418039
Change-Id: I10aace061668adfed2594581b94cb9f1e745820b
2024-11-05 13:47:16 +05:30
Xin Li 3cc43abcbf [automerger skipped] Mark 24Q4 as merged in aosp-main-future am: 1bea3fe953 -s ours
am skip reason: Merged-In I5f002ab4b6968aceacf342e0424a4b0e3dc260e9 with SHA-1 853e5ac45a is already in history

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

Change-Id: I6b983a24c306ce7bb69c3c6200476a6ba0339864
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-10-19 22:40:56 +00:00
Xin Li 1bea3fe953 Mark 24Q4 as merged in aosp-main-future
Bug: 373937381
Merged-In: I5f002ab4b6968aceacf342e0424a4b0e3dc260e9
Change-Id: I5e5ba692fc340f3c5633b73803c79ce59d0b7fc6
2024-10-17 11:03:40 -07:00
Jaskaran Singh 853e5ac45a lmkd: Ensure node stats are being parsed am: f32fe4d7d3 am: 811f97adba
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/2719093

Change-Id: I5f002ab4b6968aceacf342e0424a4b0e3dc260e9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-10-17 08:20:25 +00:00
Jaskaran Singh 811f97adba lmkd: Ensure node stats are being parsed am: f32fe4d7d3
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/2719093

Change-Id: I55a7f2f4aaf07fd589fac07cf5bbdd06485c6c97
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-10-17 07:57:22 +00:00
Jaskaran Singh f32fe4d7d3 lmkd: Ensure node stats are being parsed
The kernel will print node stats within the first populated zone in the
zoneinfo file. The LMKD tries parsing node stats when it reads the first
"Node %d, zone %8s" line in zoneinfo.

However if the first zone is empty, LMKD could iterate over to the next
populated zone i.e. the next "Node %d, zone %8s" line while attempting
to read node stats. It thus reads the incorrect zone name for this next
zone.

To fix this, ensure whether node stats are indeed being parsed by
checking for the "  per node-stats" line.

Bug: 292476676
Change-Id: I72cd111dac9032de506e1ab7f1c4dc96585a1e80
Signed-off-by: Jaskaran Singh <quic_jasksing@quicinc.com>
2024-10-16 15:36:51 +00:00
Suren Baghdasaryan 9d0787ef90 lmkd: fix handling of EPOLLHUP for pidfd am: 667fdbfe92 am: b018e55b7b
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3268491

Change-Id: I613ee58987d09da8aa418c124aaf32e19824c868
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-09-26 09:26:16 +00:00
Suren Baghdasaryan b018e55b7b lmkd: fix handling of EPOLLHUP for pidfd am: 667fdbfe92
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3268491

Change-Id: I5269030e5878ed1ed1c3926dc9e73411a5a1c7a3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-09-26 09:09:02 +00:00
Suren Baghdasaryan 667fdbfe92 lmkd: fix handling of EPOLLHUP for pidfd
Recent kernel change [1] cause pidfd_wait() to receive EPOLLHUP when the
task exits. Current LMKD implementation expects to receive EPOLLHUP only
when socket connection gets dropped, therefore it gets confused by this
new kernel behavior. Adjust LMKD handling of EPOLLHUP to detect the case
when this event is generated by pidfd.

[1] https://lore.kernel.org/all/20240202131226.GA26018@redhat.com/

Bug: 352286227
Change-Id: Ibcf349ee3cc73551541d64975f0292d53c41d5c2
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2024-09-13 23:43:47 +00:00
David Stevens 7dff130d87 lmkd: Add hook for when there are no killable processes am: d256df3c5f am: 1683221f0d
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3249594

Change-Id: Ica82748265304f240cff3e2dc570fa12e9db4ac1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-29 15:50:21 +00:00
David Stevens 1683221f0d lmkd: Add hook for when there are no killable processes am: d256df3c5f
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3249594

Change-Id: I3d133ae960273e3063bc634222dc0bd1c66a47a3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-29 15:42:51 +00:00
David Stevens d256df3c5f lmkd: Add hook for when there are no killable processes
Add a hook that is invoked when there are no killable processes at any
priority. This allows ARCVM to send VMMMS's no kill candidates message,
which prevents thrashing without having to wait on a balloon stall.

Bug: 362383831
Test: cq
Change-Id: Iffb680a78025bd201932bd805ceeecfe07b1fac9
2024-08-29 15:15:07 +09:00
Carlos Galo a54cb7c846 Revert "Adding io_uring for batching PROCS_PRIO cmd" am: 4c589f32f5 am: 760b3e2d40
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3226117

Change-Id: I3e5be93395a015ee19d79eacbbc3f315fd955626
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-20 21:44:50 +00:00
Carlos Galo 760b3e2d40 Revert "Adding io_uring for batching PROCS_PRIO cmd" am: 4c589f32f5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3226117

Change-Id: Iffc6645ab76aad003852d003eceebfe0ed047602
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-20 06:54:03 +00:00
Carlos Galo 4c589f32f5 Revert "Adding io_uring for batching PROCS_PRIO cmd"
Revert submission 3038159-lmkd-procs-prio-cmd

Reason for revert: Reverting io_uring integration due to performance findings (b/360770761)

Reverted changes: /q/submissionid:3038159-lmkd-procs-prio-cmd

Test: atest lmkd_tests
Change-Id: I4a504a11d8daf2d056225dab630492dde51dda53
2024-08-19 08:20:14 +00:00
Suren Baghdasaryan 2606f9849b lmkd/tests: add 200ms wait for reaper to output its logs am: 753642e31a am: cad7196508
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3134321

Change-Id: I5e0ecf5684489208d36f1bb93f8a3b159077ebfa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-12 21:24:46 +00:00
Suren Baghdasaryan f7b4db5219 lmkd/tests: handle kill reports being confused with reap reports am: 13b5b0ce06 am: 72c26015dd
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3134320

Change-Id: I5db5a175f9fdec7c5b1d48c21148c7f7bf3fc7ce
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-12 21:24:43 +00:00
Suren Baghdasaryan cad7196508 lmkd/tests: add 200ms wait for reaper to output its logs am: 753642e31a
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3134321

Change-Id: I935c673210c05961ac121faf707adc4f174cd64e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-12 21:01:19 +00:00
Suren Baghdasaryan 72c26015dd lmkd/tests: handle kill reports being confused with reap reports am: 13b5b0ce06
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3134320

Change-Id: I5dc709c99cf789242aad16b7902f714bdb5cec51
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-12 21:01:14 +00:00
Suren Baghdasaryan 753642e31a lmkd/tests: add 200ms wait for reaper to output its logs
Occasionally the test reads logcat before lmkd reaper had a chance to
write into it, resulting in the expected report messages being missed.
Add a 200ms delay after lmkd kills the process to give lmkd reper thread
more time to write its reports.

Bug: 347296675
Bug: 358830454
Test: atest lmkd_tests
Change-Id: I2549e37f25c81c9add91f7ee450c4a96c8cf18e4
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2024-08-12 19:03:09 +00:00
Suren Baghdasaryan 13b5b0ce06 lmkd/tests: handle kill reports being confused with reap reports
The starting line for kill and reap reports are the same. Add additional
logic in the test to distinguish between them and retry if a kill report
is found.

Bug: 347296675
Bug: 358830454
Test: mock the input data where lmkd_tests failed
Change-Id: Idf83831e45e6682c1dfb6cde258d4ec631a5eb32
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2024-08-12 19:02:49 +00:00
Christopher Ferris a818a565ff Remove unused variable. am: b1d5c43490 am: ff8b8464d1
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3208315

Change-Id: I2f62da5664d711a6e055b2ec6f4feacfc4532050
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-07 02:22:19 +00:00
Christopher Ferris ff8b8464d1 Remove unused variable. am: b1d5c43490
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3208315

Change-Id: I75e856a6b7deafd46c86faa6b420af156d8136a0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-08-07 02:08:51 +00:00
Christopher Ferris b1d5c43490 Remove unused variable.
Test: treehugger
Change-Id: I07fe4a36004bdb12e80990f9d9c61a051140e263
2024-08-04 03:39:29 +00:00
Carlos Galo 2e78891823 Report up-to-date RSS in LMK_PROCKILL cmd am: 1e50c6ecc4 am: 36f19297e5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3164830

Change-Id: I5c7920d074c8c984595098b077fac2f58ca89803
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-24 20:22:21 +00:00
Carlos Galo 36f19297e5 Report up-to-date RSS in LMK_PROCKILL cmd am: 1e50c6ecc4
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3164830

Change-Id: I332814b281f325512639d22aa8f8c91ce35f4808
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-24 20:08:05 +00:00
Carlos Galo 1e50c6ecc4 Report up-to-date RSS in LMK_PROCKILL cmd
Add RSS field, in LMK_PROCKILL cmd, to report the latest memory usage of
the killed process.

Test: Verified RSS field is captured in ApplicationExitInfo
Bug: 322549716
Change-Id: Ic1788e8121da97cd879bd7e9d685c7b879ea5475
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-07-22 20:42:22 +00:00
Treehugger Robot 540ed179a7 Merge "Remove usage of BPF_FD_JUST_USE_INT in favor of unique_fd" into main am: 0aeff477af am: 8e4290acac
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3133997

Change-Id: I1d6c3e4db93f4b5c21548fecabdd193a5b3e2d61
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-12 21:37:00 +00:00
Treehugger Robot 8e4290acac Merge "Remove usage of BPF_FD_JUST_USE_INT in favor of unique_fd" into main am: 0aeff477af
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3133997

Change-Id: I0c20e77d2245d0cf7d1e598ee199b48aa16da276
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-07-12 21:14:46 +00:00
Treehugger Robot 0aeff477af Merge "Remove usage of BPF_FD_JUST_USE_INT in favor of unique_fd" into main 2024-07-12 20:56:03 +00:00
Martin Liu 573cc5af1b lmkd: handle missing process' information case am: d10742025b am: eec2abfee7
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3150836

Change-Id: Ibf44e7ba338eea663b0c35d77c49c3e2d8679a3e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-27 22:07:16 +00:00
Martin Liu eec2abfee7 lmkd: handle missing process' information case am: d10742025b
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3150836

Change-Id: I7f88bfcf140e538e0a521980b9632f36477dedf6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-27 21:51:34 +00:00