Commit Graph

1614 Commits

Author SHA1 Message Date
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 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 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 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 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 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 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 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 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
Martin Liu d10742025b lmkd: handle missing process' information case
When we get nothing from /proc/<PID>/status and /proc/<PID>/cmdline,
we should return NULL or False because this usually indicates the
process has already terminated. We should avoid attempting
to kill a non-existent process, as it's an unnecessary waste
of kill timeout.

Bug: 331612600
Test: give memory pressure to trigger LMKD
Change-Id: I468ff25012f9bb6fc842a7fad268ebcad0de4690
Signed-off-by: Martin Liu <liumartin@google.com>
2024-06-27 15:17:05 +00:00
Suren Baghdasaryan 61adbf3b67 Revert "lmkd: change default lowmem_min_oom_score for low-RAM devices" am: ee6412ebf0
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3147096

Change-Id: Id35e2263ddafe50b2f46b52011fcb7d0b96600cf
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-25 22:23:27 +00:00
Suren Baghdasaryan ee6412ebf0 Revert "lmkd: change default lowmem_min_oom_score for low-RAM devices"
This reverts commit 686abc4e2b.

Reason for revert: regressing wear device tests
Bug: 349256852

Change-Id: I6c38c11dcad38bfba93609f476745513798c8e0b
2024-06-25 20:13:06 +00:00
Suren Baghdasaryan c98f8bdf4d lmkd: change default lowmem_min_oom_score for low-RAM devices am: 686abc4e2b
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3123213

Change-Id: I55f5b0ce7457370c514bd2f0cba2a15d22c2e4b0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-24 17:25:33 +00:00
Suren Baghdasaryan 686abc4e2b lmkd: change default lowmem_min_oom_score for low-RAM devices
Experiments on low-RAM devices indicate regressions due to the new low
memory kill reason which cause LMKD to kill too many processes. Change
ro.lmk.lowmem_min_oom_score to disable kills for this reason by default.

Bug: 341257415
Change-Id: Id7137c4c8d888061353b253dc6906d2854e31b1d
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
2024-06-24 16:14:27 +00:00
Patrick Rohr e15214ea24 Remove usage of BPF_FD_JUST_USE_INT in favor of unique_fd
We are trying to remove BPF_FD_JUST_USE_INT since we now have access to
libbase everywhere.

Test: builds
Change-Id: Ie9445d3d648e6837deb718aa38ebef3c936653d6
2024-06-14 14:55:36 -07:00
Treehugger Robot 893827fb61 Merge "Fix format warning in direct reclaim length kill strategy" into main am: 3641d12083 am: e4d7e850a5
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3101418

Change-Id: Ife40736e38982b79f1c7169cb11826a1179cc642
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:43:21 +00:00
Treehugger Robot e4d7e850a5 Merge "Fix format warning in direct reclaim length kill strategy" into main am: 3641d12083
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3101418

Change-Id: Ica2395ad87f98446c3c90aca8d31d11bde63c6f0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:35:09 +00:00
Carlos Galo adc9429e80 Adding io_uring for batching PROCS_PRIO cmd am: af79337d51 am: a11f18de9f
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3081144

Change-Id: Ib2e1dc978230143226f0abb4e0dca386a8586005
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:26:01 +00:00
Carlos Galo c7fb753102 Integration PROCS_PRIO cmd in lmkd am: 2f00c03379 am: dc126e3c57
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3056977

Change-Id: I493339842351c5380fa03ef60df858ee7ad9629d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:25:58 +00:00
Carlos Galo e676be6b78 Splitting logic from cmd PROC_PRIO am: 19b5892ba8 am: baad4601eb
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3077890

Change-Id: I43d760b6e7dfa6aaab29da46f452a34cb0ddbc22
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:25:56 +00:00
Carlos Galo 0359abe3f7 liblmkd_utils: Adding get kill count interface am: 05e8c7bbda am: 3cd5c9cc3f
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3086709

Change-Id: I96e44c3bdc49c2cdda32bac211af65353e520f4b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:25:53 +00:00
Carlos Galo a11f18de9f Adding io_uring for batching PROCS_PRIO cmd am: af79337d51
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3081144

Change-Id: I7f8fe3846c8c7a59abec83666108c161044b1102
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:19:14 +00:00
Carlos Galo dc126e3c57 Integration PROCS_PRIO cmd in lmkd am: 2f00c03379
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3056977

Change-Id: Id86823f585927ab8955613769790a543bd640219
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:19:11 +00:00
Carlos Galo baad4601eb Splitting logic from cmd PROC_PRIO am: 19b5892ba8
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3077890

Change-Id: I61bbe3fd7c7f6ed5c2273c6c0ffdbf796f630fdf
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:19:03 +00:00
Carlos Galo 3cd5c9cc3f liblmkd_utils: Adding get kill count interface am: 05e8c7bbda
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3086709

Change-Id: I680a62c5cfb274b6a0dec1f49edf6fa41ff4580d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-06-01 00:18:59 +00:00
Treehugger Robot 3641d12083 Merge "Fix format warning in direct reclaim length kill strategy" into main 2024-06-01 00:14:46 +00:00
Carlos Galo af79337d51 Adding io_uring for batching PROCS_PRIO cmd
Integrate io_uring within LMKD to batch the read, and write, system
calls needed to process, and register, processes and adjust their OOM
scores.

Test: atest lmkd_tests
Bug: 325525024
Change-Id: I339be2b6f569189519e0e11d07cd6d7d1cf2566d
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-31 22:56:10 +00:00
Carlos Galo 2be06f4c78 Fix format warning in direct reclaim length kill strategy
Adjusting the string copy message to utiilize the correct format for
direct_reclaim_duration_ms.

Test: m
Bug: 244232958
Change-Id: I3fbfc33e2520ef38b829db67ddb59c636a2bc3e1
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-23 19:41:55 +00:00
Carlos Galo 2f00c03379 Integration PROCS_PRIO cmd in lmkd
Creating new cmd in LMKD to batch PROCPRIO requests.

Test: atest lmkd_tests
Bug: 325525024
Change-Id: I5460446d4e968e80263aa25298e2a893863eece4
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-23 17:42:38 +00:00
Carlos Galo 19b5892ba8 Splitting logic from cmd PROC_PRIO
Refactor cmd_procprio() to reuse its main functionality for bulk updates
later on.

Test: m
Bug: 295231583
Change-Id: Ic42de6e256b813349530f19a20e3ef9d484b20cf
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-21 23:05:28 +00:00
Carlos Galo 05e8c7bbda liblmkd_utils: Adding get kill count interface
Add new API to fetch the current kill count from lmkd.

Test: m
Bug: 325525024
Change-Id: I9289be653444c8641cd5a698049835c3ac271b56
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-21 23:03:04 +00:00
Carlos Galo 1211db6082 Applying clang-format suggestions in PROCPRIO cmd am: 8b5a67d35a am: a0e25cea31
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3073186

Change-Id: I01f2fa6d135c929641ca1f0ac748537b5a473469
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-03 17:45:02 +00:00
Carlos Galo f9421bdf21 Move register proc logic to prepare for new PROCS_PRIO cmd am: 7da353fb00 am: 4e801dde74
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3068766

Change-Id: I5ad9e36a6dcbbf3c216062a0a80345400ba3dbf0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-03 17:44:58 +00:00
Carlos Galo a0e25cea31 Applying clang-format suggestions in PROCPRIO cmd am: 8b5a67d35a
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3073186

Change-Id: I6fa4416ef3df2d7c05abe12a9867994f9cf6adf7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-03 17:31:45 +00:00
Carlos Galo 4e801dde74 Move register proc logic to prepare for new PROCS_PRIO cmd am: 7da353fb00
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3068766

Change-Id: I51557dc843ecb7b2518049d5afa17a07e244c821
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-03 17:31:41 +00:00
Carlos Galo 8b5a67d35a Applying clang-format suggestions in PROCPRIO cmd
Updating the cmd_procprio function with the clang-format suggestions. No logic changes.

Test: m
Bug: 325525024
Change-Id: Id6c1feb717259406d953e5e2a174398bccf65d23
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-03 17:02:10 +00:00
Carlos Galo 7da353fb00 Move register proc logic to prepare for new PROCS_PRIO cmd
Moving logic for registering proc, after oom adjustment, to its
own function. This work is for the introduction of the new
PROCS_PRIO cmd. This logic will be shared between the current PROCPRIO
and PROCS_PRIO cmd.

Test: m
Bug: 325525024
Change-Id: I0683f63faa3dfa2e4534cdfb8935b4d2f83a6af9
Signed-off-by: Carlos Galo <carlosgalo@google.com>
2024-05-03 17:01:09 +00:00
Treehugger Robot 76dd55c72c Merge "Replace PATH_MAX usages with smaller size" into main am: e1eb315723 am: 79b31d8bd1
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3072843

Change-Id: I5b55585b32621df49a260b35a68c84c494bc1b11
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-03 01:16:11 +00:00
Treehugger Robot 79b31d8bd1 Merge "Replace PATH_MAX usages with smaller size" into main am: e1eb315723
Original change: https://android-review.googlesource.com/c/platform/system/memory/lmkd/+/3072843

Change-Id: I213c3f0ef714c337032d418d24b0b4811cfb0ef1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-05-03 00:47:25 +00:00
Treehugger Robot e1eb315723 Merge "Replace PATH_MAX usages with smaller size" into main 2024-05-03 00:29:11 +00:00