2013-09-06 05:17:59

by Weijie Yang

[permalink] [raw]
Subject: [PATCH v2 3/4] mm/zswap: avoid unnecessary page scanning

add SetPageReclaim before __swap_writepage so that page can be moved to the
tail of the inactive list, which can avoid unnecessary page scanning as this
page was reclaimed by swap subsystem before.

Signed-off-by: Weijie Yang <[email protected]>
---
mm/zswap.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/mm/zswap.c b/mm/zswap.c
index 1be7b90..cc40e6a 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -556,6 +556,9 @@ static int zswap_writeback_entry(struct zbud_pool *pool, unsigned long handle)
SetPageUptodate(page);
}

+ /* move it to the tail of the inactive list after end_writeback */
+ SetPageReclaim(page);
+
/* start writeback */
__swap_writepage(page, &wbc, end_swap_bio_write);
page_cache_release(page);
--
1.7.10.4


2013-09-06 06:32:12

by Bob Liu

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] mm/zswap: avoid unnecessary page scanning


On 09/06/2013 01:16 PM, Weijie Yang wrote:
> add SetPageReclaim before __swap_writepage so that page can be moved to the
> tail of the inactive list, which can avoid unnecessary page scanning as this
> page was reclaimed by swap subsystem before.
>
> Signed-off-by: Weijie Yang <[email protected]>

Reviewed-by: Bob Liu <[email protected]>

> ---
> mm/zswap.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/mm/zswap.c b/mm/zswap.c
> index 1be7b90..cc40e6a 100644
> --- a/mm/zswap.c
> +++ b/mm/zswap.c
> @@ -556,6 +556,9 @@ static int zswap_writeback_entry(struct zbud_pool *pool, unsigned long handle)
> SetPageUptodate(page);
> }
>
> + /* move it to the tail of the inactive list after end_writeback */
> + SetPageReclaim(page);
> +
> /* start writeback */
> __swap_writepage(page, &wbc, end_swap_bio_write);
> page_cache_release(page);
>

--
Regards,
-Bob

2013-09-09 16:30:30

by Seth Jennings

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] mm/zswap: avoid unnecessary page scanning

On Fri, Sep 06, 2013 at 01:16:45PM +0800, Weijie Yang wrote:
> add SetPageReclaim before __swap_writepage so that page can be moved to the
> tail of the inactive list, which can avoid unnecessary page scanning as this
> page was reclaimed by swap subsystem before.
>
> Signed-off-by: Weijie Yang <[email protected]>

Acked-by: Seth Jennings <[email protected]>

2013-09-23 02:07:03

by Bob Liu

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] mm/zswap: avoid unnecessary page scanning


On 09/10/2013 12:29 AM, Seth Jennings wrote:
> On Fri, Sep 06, 2013 at 01:16:45PM +0800, Weijie Yang wrote:
>> add SetPageReclaim before __swap_writepage so that page can be moved to the
>> tail of the inactive list, which can avoid unnecessary page scanning as this
>> page was reclaimed by swap subsystem before.
>>
>> Signed-off-by: Weijie Yang <[email protected]>
>
> Acked-by: Seth Jennings <[email protected]>
>

Below is a reply from Mel in original thread "[PATCHv11 3/4] zswap: add
to mm/"
------------------
> + /* start writeback */
> + SetPageReclaim(page);
> + __swap_writepage(page, &wbc, end_swap_bio_write);
> + page_cache_release(page);
> + zswap_written_back_pages++;
> +

SetPageReclaim? Why?. If the page is under writeback then why do you not
mark it as that? Do not free pages that are currently under writeback
obviously. It's likely that it was PageWriteback you wanted in zbud.c too.
--------------------

--
Regards,
-Bob

2013-09-23 06:08:02

by Weijie Yang

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] mm/zswap: avoid unnecessary page scanning

On Mon, Sep 23, 2013 at 10:06 AM, Bob Liu <[email protected]> wrote:
>
> On 09/10/2013 12:29 AM, Seth Jennings wrote:
>> On Fri, Sep 06, 2013 at 01:16:45PM +0800, Weijie Yang wrote:
>>> add SetPageReclaim before __swap_writepage so that page can be moved to the
>>> tail of the inactive list, which can avoid unnecessary page scanning as this
>>> page was reclaimed by swap subsystem before.
>>>
>>> Signed-off-by: Weijie Yang <[email protected]>
>>
>> Acked-by: Seth Jennings <[email protected]>
>>
>
> Below is a reply from Mel in original thread "[PATCHv11 3/4] zswap: add
> to mm/"
> ------------------
>> + /* start writeback */
>> + SetPageReclaim(page);
>> + __swap_writepage(page, &wbc, end_swap_bio_write);
>> + page_cache_release(page);
>> + zswap_written_back_pages++;
>> +
>
> SetPageReclaim? Why?. If the page is under writeback then why do you not
> mark it as that? Do not free pages that are currently under writeback
> obviously. It's likely that it was PageWriteback you wanted in zbud.c too.
> --------------------

Thanks for reminding this.

The purpose of using this flag in PATCHv11 and this patch is different.

In PATCHv11, it was repurposed to protect zbud page against free,
and now it is replaced with zhdr->under_reclaim.

In this patch, this flag is for its original purpose(to be reclaimed asap)

> --
> Regards,
> -Bob