linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 0/3] Ignore non-LRU-based reclaim in memcg reclaim
@ 2023-04-13 10:40 Yosry Ahmed
  2023-04-13 10:40 ` [PATCH v6 1/3] mm: vmscan: ignore " Yosry Ahmed
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Yosry Ahmed @ 2023-04-13 10:40 UTC (permalink / raw)
  To: Andrew Morton, Alexander Viro, Darrick J. Wong,
	Christoph Lameter, David Rientjes, Joonsoo Kim, Vlastimil Babka,
	Roman Gushchin, Hyeonggon Yoo, Matthew Wilcox (Oracle),
	Miaohe Lin, David Hildenbrand, Johannes Weiner, Peter Xu,
	NeilBrown, Shakeel Butt, Michal Hocko, Yu Zhao, Dave Chinner,
	Tim Chen
  Cc: linux-fsdevel, linux-kernel, linux-xfs, linux-mm, Yosry Ahmed

Upon running some proactive reclaim tests using memory.reclaim, we
noticed some tests flaking where writing to memory.reclaim would be
successful even though we did not reclaim the requested amount fully
Looking further into it, I discovered that *sometimes* we overestimate
the number of reclaimed pages in memcg reclaim.

Reclaimed pages through other means than LRU-based reclaim are tracked
through reclaim_state in struct scan_control, which is stashed in
current task_struct. These pages are added to the number of reclaimed
pages through LRUs. For memcg reclaim, these pages generally cannot be
linked to the memcg under reclaim and can cause an overestimated count
of reclaimed pages. This short series tries to address that.

Patch 1 ignores pages reclaimed outside of LRU reclaim in memcg reclaim.
The pages are uncharged anyway, so even if we end up under-reporting
reclaimed pages we will still succeed in making progress during
charging.

Patches 2-3 are just refactoring. Patch 2 moves set_reclaim_state()
helper next to flush_reclaim_state(). Patch 3 adds a helper that wraps
updating current->reclaim_state, and renames
reclaim_state->reclaimed_slab to reclaim_state->reclaimed.

v5 -> v6:
- Re-arranged the patches:
  - Pulled flush_reclaim_state() helper with the clarifyng comment to
    the first patch so that the patch is clear on its own (David
    Hildenbrand).
  - Separated moving set_reclaim_state() to a separate patch so that we
    can easily drop it if deemed unnecessary (Questioned by Peter Xu).
- Added a fixes tag (David Hildenbrand).
- Reworded comment in flush_reclaim_state() (David Hildenbrand and Tim
  Chen).
- Dropped reclaim_state argument to flush_reclaim_state() and use
  current->reclaim_state directly instead (Peter Xu).

v5: https://lore.kernel.org/linux-mm/20230405185427.1246289-1-yosryahmed@google.com/

Yosry Ahmed (3):
  mm: vmscan: ignore non-LRU-based reclaim in memcg reclaim
  mm: vmscan: move set_task_reclaim_state() near flush_reclaim_state()
  mm: vmscan: refactor updating current->reclaim_state

 fs/inode.c           |  3 +-
 fs/xfs/xfs_buf.c     |  3 +-
 include/linux/swap.h | 17 ++++++++++-
 mm/slab.c            |  3 +-
 mm/slob.c            |  6 ++--
 mm/slub.c            |  5 ++-
 mm/vmscan.c          | 72 ++++++++++++++++++++++++++++++++------------
 7 files changed, 76 insertions(+), 33 deletions(-)

-- 
2.40.0.577.gac1e443424-goog



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

end of thread, other threads:[~2023-05-01 10:13 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-13 10:40 [PATCH v6 0/3] Ignore non-LRU-based reclaim in memcg reclaim Yosry Ahmed
2023-04-13 10:40 ` [PATCH v6 1/3] mm: vmscan: ignore " Yosry Ahmed
2023-04-13 10:45   ` Yosry Ahmed
2023-04-13 11:16   ` David Hildenbrand
2023-04-13 11:25     ` Yosry Ahmed
2023-04-14  8:15   ` Michal Hocko
2023-05-01 10:12   ` Yosry Ahmed
2023-04-13 10:40 ` [PATCH v6 2/3] mm: vmscan: move set_task_reclaim_state() near flush_reclaim_state() Yosry Ahmed
2023-04-13 11:19   ` David Hildenbrand
2023-04-13 11:26     ` Yosry Ahmed
2023-04-14  8:16   ` Michal Hocko
2023-04-13 10:40 ` [PATCH v6 3/3] mm: vmscan: refactor updating current->reclaim_state Yosry Ahmed
2023-04-13 11:20   ` David Hildenbrand
2023-04-13 11:29     ` Yosry Ahmed
2023-04-13 11:31       ` David Hildenbrand
2023-04-13 21:00       ` Dave Chinner
2023-04-13 21:38         ` Yosry Ahmed
2023-04-14 21:47           ` Andrew Morton
2023-04-14 23:11             ` Yosry Ahmed
2023-04-14  8:18   ` Michal Hocko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox