Re: [PATCH] mm/gup: don't check page lru flag before draining it

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 17.06.24 11:50, yangge1116 wrote:


在 2024/6/12 下午3:32, David Hildenbrand 写道:
On 11.06.24 13:20, yangge1116 wrote:


在 2024/6/9 上午12:03, David Hildenbrand 写道:
On 08.06.24 17:15, Matthew Wilcox wrote:
On Sat, Jun 08, 2024 at 12:38:49PM +0800, yangge1116 wrote:
Can we add a PG_lru_batch flag to determine whether a page is in lru
batch?
If we can, seems this problem will be easier.

Page flags are in short supply.  You'd need a really good
justification.


A flag would not be able to handle the "part of multiple LRU batches"
that should currently possible (when to clear the flag?). Well, if we
have to keep supporting that. If we only to be part in a single LRU
batch, a new flag could work and we could still allow isolating a folio
from LRU while in some LRU batch.

Yes, before adding a folio to LRU batch, check whether the folio has
been added. Add the folio to LRU batch only if the folio has not been
added.


If we could handle it using the existing flags, that would of course be
better (wondering if we could store more information in the existing
flags by using a different encoding for the different states).

If a folio contains more than one page, the folio will not be added to
LRU batch. Can we use folio_test_large(folio) to filter?

if (!folio_test_large(folio) && drain_allow) {
     lru_add_drain_all();
     drain_allow = false;
}

I think we should do better than this, and not do arbitrary
lru_add_drain_all() calls.


Thanks, I've got another idea.

If we add GUP_PIN_COUNTING_BIAS to folio's ref count before adding to
LRU batch, we can use folio_maybe_dma_pinned(folio) to check whether the
folio is in LRU batch. I wonder if it's feasible?

Why would we want to make folio_maybe_dma_pinned() detection that worse?

--
Cheers,

David / dhildenb





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux