linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Nhat Pham <nphamcs@gmail.com>,
	akpm@linux-foundation.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, minchan@kernel.org,
	ngupta@vflare.org, sjenning@redhat.com, ddstreet@ieee.org,
	vitaly.wool@konsulko.com
Subject: Re: [PATCH v6 4/6] zsmalloc: Add a LRU to zs_pool to keep track of zspages in LRU order
Date: Wed, 23 Nov 2022 12:50:47 +0900	[thread overview]
Message-ID: <Y32Yl/Emcw/2a51t@google.com> (raw)
In-Reply-To: <Y30KIbewtg+b5JTq@cmpxchg.org>

On (22/11/22 12:42), Johannes Weiner wrote:
> On Tue, Nov 22, 2022 at 10:52:58AM +0900, Sergey Senozhatsky wrote:
> > On (22/11/18 16:15), Nhat Pham wrote:
> > [..]
> > > @@ -1249,6 +1267,15 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle,
> > >  	obj_to_location(obj, &page, &obj_idx);
> > >  	zspage = get_zspage(page);
> > > 
> > > +#ifdef CONFIG_ZPOOL
> > > +	/* Move the zspage to front of pool's LRU */
> > > +	if (mm == ZS_MM_WO) {
> > > +		if (!list_empty(&zspage->lru))
> > > +			list_del(&zspage->lru);
> > > +		list_add(&zspage->lru, &pool->lru);
> > > +	}
> > > +#endif
> > 
> > Do we consider pages that were mapped for MM_RO/MM_RW as cold?
> > I wonder why, we use them, so technically they are not exactly
> > "least recently used".
> 
> This is a swap LRU. Per definition there are no ongoing accesses to
> the memory while the page is swapped out that would make it "hot".

Hmm. Not arguing, just trying to understand some things.

There are no accesses to swapped out pages yes, but zspage holds multiple
objects, which are compressed swapped out pages in this particular case.
For example, zspage in class size 176 (bytes) can hold 93 objects per-zspage,
that is 93 compressed swapped out pages. Consider ZS_FULL zspages which
is at the tail of the LRU list. Suppose that we page-faulted 20 times and
read 20 objects from that zspage, IOW zspage has been in use 20 times very
recently, while writeback still considers it to be "not-used" and will
evict it.

So if this works for you then I'm fine. But we probably, like you suggested,
can document a couple of things here - namely why WRITE access to zspage
counts as "zspage is in use" but READ access to the same zspage does not
count as "zspage is in use".


  reply	other threads:[~2022-11-23  3:50 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-19  0:15 [PATCH v6 0/6] Implement writeback for zsmalloc Nhat Pham
2022-11-19  0:15 ` [PATCH v6 1/6] zswap: fix writeback lock ordering " Nhat Pham
2022-11-22  1:43   ` Sergey Senozhatsky
2022-11-19  0:15 ` [PATCH v6 2/6] zpool: clean out dead code Nhat Pham
2022-11-22  1:46   ` Sergey Senozhatsky
2022-11-19  0:15 ` [PATCH v6 4/6] zsmalloc: Add a LRU to zs_pool to keep track of zspages in LRU order Nhat Pham
2022-11-19 16:38   ` Johannes Weiner
2022-11-19 17:34   ` Minchan Kim
2022-11-22  1:52   ` Sergey Senozhatsky
2022-11-22 17:42     ` Johannes Weiner
2022-11-23  3:50       ` Sergey Senozhatsky [this message]
2022-11-23  8:02         ` Yosry Ahmed
2022-11-23  8:11           ` Yosry Ahmed
2022-11-23 16:30             ` Johannes Weiner
2022-11-24  3:29               ` Sergey Senozhatsky
2022-11-24  3:21           ` Sergey Senozhatsky
2022-11-23  3:58   ` Sergey Senozhatsky
2022-11-19  0:15 ` [PATCH v6 5/6] zsmalloc: Add zpool_ops field to zs_pool to store evict handlers Nhat Pham
2022-11-19 16:39   ` Johannes Weiner
2022-11-22  1:11     ` Sergey Senozhatsky
2022-11-19  0:15 ` [PATCH v6 6/6] zsmalloc: Implement writeback mechanism for zsmalloc Nhat Pham
2022-11-19 16:45   ` Johannes Weiner
2022-11-19 17:35   ` Minchan Kim
2022-11-22  1:40   ` Sergey Senozhatsky
2022-11-22  2:00   ` Sergey Senozhatsky
2022-11-22  2:15   ` Sergey Senozhatsky
2022-11-22  3:12     ` Johannes Weiner
2022-11-22  3:42       ` Sergey Senozhatsky
2022-11-22  6:09         ` Johannes Weiner
2022-11-22  6:35           ` Sergey Senozhatsky
2022-11-22  7:10             ` Johannes Weiner
2022-11-22  7:19               ` Sergey Senozhatsky
2022-11-22  6:37   ` Sergey Senozhatsky
2022-11-23 16:30     ` Nhat Pham
2022-11-23 17:27       ` Johannes Weiner
2022-11-23 17:18     ` Johannes Weiner
2022-11-21 19:29 ` [PATCH v6 0/6] Implement writeback " Nhat Pham
2022-11-23 19:26   ` Nhat Pham

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y32Yl/Emcw/2a51t@google.com \
    --to=senozhatsky@chromium.org \
    --cc=akpm@linux-foundation.org \
    --cc=ddstreet@ieee.org \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=ngupta@vflare.org \
    --cc=nphamcs@gmail.com \
    --cc=sjenning@redhat.com \
    --cc=vitaly.wool@konsulko.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).