From: "Song Bao Hua (Barry Song)" <song.bao.hua@hisilicon.com>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Linuxarm <linuxarm@huawei.com>,
"Luis Claudio R . Goncalves" <lgoncalv@redhat.com>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
"David S . Miller" <davem@davemloft.net>,
"Mahipal Challa" <mahipalreddy2006@gmail.com>,
Seth Jennings <sjenning@redhat.com>,
"Dan Streetman" <ddstreet@ieee.org>,
Vitaly Wool <vitaly.wool@konsulko.com>,
"Wangzhou (B)" <wangzhou1@hisilicon.com>,
Colin Ian King <colin.king@canonical.com>
Subject: RE: [PATCH v3] mm/zswap: move to use crypto_acomp API for hardware acceleration
Date: Fri, 26 Jun 2020 08:22:00 +0000 [thread overview]
Message-ID: <B926444035E5E2439431908E3842AFD252473C@DGGEMI525-MBS.china.huawei.com> (raw)
In-Reply-To: <20200626072027.GA6153@gondor.apana.org.au>
> > -----Original Message-----
> > From: linux-kernel-owner@vger.kernel.org
> > [mailto:linux-kernel-owner@vger.kernel.org] On Behalf Of Herbert Xu
> > Sent: Friday, June 26, 2020 7:20 PM
> > To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>
> > Cc: akpm@linux-foundation.org; linux-mm@kvack.org;
> > linux-kernel@vger.kernel.org; Linuxarm <linuxarm@huawei.com>; Luis
> > Claudio R . Goncalves <lgoncalv@redhat.com>; Sebastian Andrzej Siewior
> > <bigeasy@linutronix.de>; David S . Miller <davem@davemloft.net>;
> > Mahipal Challa <mahipalreddy2006@gmail.com>; Seth Jennings
> > <sjenning@redhat.com>; Dan Streetman <ddstreet@ieee.org>; Vitaly Wool
> > <vitaly.wool@konsulko.com>; Wangzhou (B) <wangzhou1@hisilicon.com>;
> > Colin Ian King <colin.king@canonical.com>
> > Subject: Re: [PATCH v3] mm/zswap: move to use crypto_acomp API for
> > hardware acceleration
> >
> > On Fri, Jun 26, 2020 at 07:09:03PM +1200, Barry Song wrote:
> > >
> > > + mutex_lock(&acomp_ctx->mutex);
> > > +
> > > + src = kmap(page);
> > > + dst = acomp_ctx->dstmem;
> > > + sg_init_one(&input, src, PAGE_SIZE);
> > > + /* zswap_dstmem is of size (PAGE_SIZE * 2). Reflect same in sg_list */
> > > + sg_init_one(&output, dst, PAGE_SIZE * 2);
> > > + acomp_request_set_params(acomp_ctx->req, &input, &output,
> > PAGE_SIZE, dlen);
> > > + ret = crypto_wait_req(crypto_acomp_compress(acomp_ctx->req),
> > &acomp_ctx->wait);
> > > + dlen = acomp_ctx->req->dlen;
> > > + kunmap(page);
> >
> > Waiting on an async request like this is just silly. This defeats the
> > whole purpose of having a fallback.
>
> For this zswap case and for this moment, it is probably not.
> As for this case, there are no two parallel (de)compressions which can be done
> in parallel in a single (de)compressor instance.
> The original zswap code is doing all compression/decompression in atomic
> context.
> Right now, to use acomp api, the patch has moved to sleep-able context.
>
> However, compression/decompression can be done in parallel in different
> instances of acomp, also different cpus.
>
> If we want to do multiple (de)compressions simultaneously in one acomp
> instance by callbacks, it will ask a large changes in zswap.c not only using the
> new APIs. I think we can only achieve the ideal goal step by step.
On the other hand, I also don't think mm/frontswap.c supports async store. It is pretty much
a sync operation to call store callback of frontswap for every single page:
int __frontswap_store(struct page *page)
{
...
/* Try to store in each implementation, until one succeeds. */
for_each_frontswap_ops(ops) {
ret = ops->store(type, offset, page);
if (!ret) /* successful store */
break;
}
...
if (frontswap_writethrough_enabled)
/* report failure so swap also writes to swap device */
ret = -1;
return ret;
}
If we don't want to execute a sync wait in zswap, a lot of things need changes, not only zswap.
>
> >
> > Cheers,
> > --
> > Email: Herbert Xu <herbert@gondor.apana.org.au> Home Page:
> > http://gondor.apana.org.au/~herbert/
> > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
>
> -barry
Thanks
Barry
prev parent reply other threads:[~2020-06-26 8:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-26 7:09 Barry Song
2020-06-26 7:20 ` Herbert Xu
2020-06-26 7:54 ` Song Bao Hua (Barry Song)
2020-06-26 8:22 ` Song Bao Hua (Barry Song) [this message]
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=B926444035E5E2439431908E3842AFD252473C@DGGEMI525-MBS.china.huawei.com \
--to=song.bao.hua@hisilicon.com \
--cc=akpm@linux-foundation.org \
--cc=bigeasy@linutronix.de \
--cc=colin.king@canonical.com \
--cc=davem@davemloft.net \
--cc=ddstreet@ieee.org \
--cc=herbert@gondor.apana.org.au \
--cc=lgoncalv@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxarm@huawei.com \
--cc=mahipalreddy2006@gmail.com \
--cc=sjenning@redhat.com \
--cc=vitaly.wool@konsulko.com \
--cc=wangzhou1@hisilicon.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