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.