All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mm: memcg: Fix memcg reclaim soft lockup
@ 2020-08-26  7:27 Xunlei Pang
  2020-08-26  8:11 ` Michal Hocko
  0 siblings, 1 reply; 13+ messages in thread
From: Xunlei Pang @ 2020-08-26  7:27 UTC (permalink / raw)
  To: Johannes Weiner, Michal Hocko, Andrew Morton, Vladimir Davydov
  Cc: Xunlei Pang, linux-kernel, linux-mm

We've met softlockup with "CONFIG_PREEMPT_NONE=y", when
the target memcg doesn't have any reclaimable memory.

It can be easily reproduced as below:
 watchdog: BUG: soft lockup - CPU#0 stuck for 111s![memcg_test:2204]
 CPU: 0 PID: 2204 Comm: memcg_test Not tainted 5.9.0-rc2+ #12
 Call Trace:
  shrink_lruvec+0x49f/0x640
  shrink_node+0x2a6/0x6f0
  do_try_to_free_pages+0xe9/0x3e0
  try_to_free_mem_cgroup_pages+0xef/0x1f0
  try_charge+0x2c1/0x750
  mem_cgroup_charge+0xd7/0x240
  __add_to_page_cache_locked+0x2fd/0x370
  add_to_page_cache_lru+0x4a/0xc0
  pagecache_get_page+0x10b/0x2f0
  filemap_fault+0x661/0xad0
  ext4_filemap_fault+0x2c/0x40
  __do_fault+0x4d/0xf9
  handle_mm_fault+0x1080/0x1790

It only happens on our 1-vcpu instances, because there's no chance
for oom reaper to run to reclaim the to-be-killed process.

Add cond_resched() in such cases at the beginning of shrink_lruvec()
to give up the cpu to others.

Signed-off-by: Xunlei Pang <xlpang@linux.alibaba.com>
---
 mm/vmscan.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 99e1796..349a88e 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2449,6 +2449,12 @@ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 	scan_adjusted = (!cgroup_reclaim(sc) && !current_is_kswapd() &&
 			 sc->priority == DEF_PRIORITY);
 
+	/* memcg reclaim may run into no reclaimable lru pages */
+	if (nr[LRU_ACTIVE_FILE] == 0 &&
+	    nr[LRU_INACTIVE_FILE] == 0 &&
+	    nr[LRU_INACTIVE_ANON] == 0)
+		cond_resched();
+
 	blk_start_plug(&plug);
 	while (nr[LRU_INACTIVE_ANON] || nr[LRU_ACTIVE_FILE] ||
 					nr[LRU_INACTIVE_FILE]) {
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2020-08-26 13:49 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26  7:27 [PATCH] mm: memcg: Fix memcg reclaim soft lockup Xunlei Pang
2020-08-26  8:11 ` Michal Hocko
2020-08-26 10:41   ` xunlei
2020-08-26 11:00     ` Michal Hocko
2020-08-26 11:45       ` xunlei
2020-08-26 11:54         ` Xunlei Pang
2020-08-26 12:00       ` xunlei
2020-08-26 12:07         ` Michal Hocko
2020-08-26 12:21           ` xunlei
2020-08-26 12:48             ` Michal Hocko
2020-08-26 13:16               ` xunlei
2020-08-26 13:26                 ` Michal Hocko
2020-08-26 13:48                   ` xunlei

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.