| From: Charan Teja Kalla <quic_charante@quicinc.com> |
| Subject: Multi-gen LRU: skip CMA pages when they are not eligible |
| Date: Wed, 9 Aug 2023 13:35:44 +0530 |
| |
| This patch is based on the commit 5da226dbfce3("mm: skip CMA pages when |
| they are not available") which skips cma pages reclaim when they are not |
| eligible for the current allocation context. In mglru, such pages are |
| added to the tail of the immediate generation to maintain better LRU |
| order, which is unlike the case of conventional LRU where such pages are |
| directly added to the head of the LRU list(akin to adding to head of the |
| youngest generation in mglru). |
| |
| No observable issue without this patch on MGLRU, but logically it make |
| sense to skip the CMA page reclaim when those pages can't be satisfied for |
| the current allocation context. |
| |
| Link: https://lkml.kernel.org/r/1691568344-13475-1-git-send-email-quic_charante@quicinc.com |
| Fixes: ac35a4902374 ("mm: multi-gen LRU: minimal implementation") |
| Signed-off-by: Charan Teja Kalla <quic_charante@quicinc.com> |
| Reviewed-by: Kalesh Singh <kaleshsingh@google.com> |
| Cc: David Hildenbrand <david@redhat.com> |
| Cc: Suren Baghdasaryan <surenb@google.com> |
| Cc: Yu Zhao <yuzhao@google.com> |
| Cc: Zhaoyang Huang <zhaoyang.huang@unisoc.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/vmscan.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/mm/vmscan.c~multi-gen-lru-skip-cma-pages-when-they-are-not-eligible |
| +++ a/mm/vmscan.c |
| @@ -4943,7 +4943,7 @@ static bool sort_folio(struct lruvec *lr |
| } |
| |
| /* ineligible */ |
| - if (zone > sc->reclaim_idx) { |
| + if (zone > sc->reclaim_idx || skip_cma(folio, sc)) { |
| gen = folio_inc_gen(lruvec, folio, false); |
| list_move_tail(&folio->lru, &lrugen->folios[gen][type][zone]); |
| return true; |
| _ |