linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vaneet Narang <v.narang@samsung.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	"dsterba@suse.cz" <dsterba@suse.cz>
Cc: Maninder Singh <maninder1.s@samsung.com>,
	"herbert@gondor.apana.org.au" <herbert@gondor.apana.org.au>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"keescook@chromium.org" <keescook@chromium.org>,
	"gustavo@embeddedor.com" <gustavo@embeddedor.com>,
	"joe@perches.com" <joe@perches.com>,
	"linux-crypto@vger.kernel.org" <linux-crypto@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	AMIT SAHRAWAT <a.sahrawat@samsung.com>,
	PANKAJ MISHRA <pankaj.m@samsung.com>,
	Vaneet Narang <v.narang@samsung.com>, Chris Mason <clm@fb.com>,
	Josef Bacik <josef@toxicpanda.com>,
	David Sterba <dsterba@suse.com>,
	"linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>,
	"terrelln@fb.com" <terrelln@fb.com>
Subject: RE:(2) [PATCH 1/4] zstd: pass pointer rathen than structure to functions
Date: Thu, 06 Jun 2019 19:40:19 +0530	[thread overview]
Message-ID: <20190606141019epcms5p1e9c394d2c2ef37506c8004fe48edd29f@epcms5p1> (raw)
In-Reply-To: <20190605143219.248ca514546f69946aa2e07e@linux-foundation.org>

Hi Andrew / David,

 
>> > > -        ZSTD_parameters params = ZSTD_getParams(level, src_len, 0);
>> > > +        static ZSTD_parameters params;
>> > 
>> > > +
>> > > +        params = ZSTD_getParams(level, src_len, 0);
>> > 
>> > No thats' broken, the params can't be static as it depends on level and
>> > src_len. What happens if there are several requests in parallel with
>> > eg. different levels?

There is no need to make static for btrfs. We can keep it as a stack variable.
This patch set  focussed on reducing stack usage of zstd compression when triggered
through zram. ZRAM internally uses crypto and currently crpto uses fixed level and also
not dependent upon source length.

crypto/zstd.c:  
static ZSTD_parameters zstd_params(void)
{
        return ZSTD_getParams(ZSTD_DEF_LEVEL, 0, 0);
}


Actually high stack usage problem with zstd compression patch gets exploited more incase of 
shrink path which gets triggered randomly from any call flow in case of low memory and adds overhead
of more than 2000 byte of stack and results in stack overflow.

Stack usage of alloc_page in case of low memory

   72   HUF_compressWeights_wksp+0x140/0x200  
   64   HUF_writeCTable_wksp+0xdc/0x1c8      
   88   HUF_compress4X_repeat+0x214/0x450     
  208   ZSTD_compressBlock_internal+0x224/0x137c
  136   ZSTD_compressContinue_internal+0x210/0x3b0
  192   ZSTD_compressCCtx+0x6c/0x144
  144   zstd_compress+0x40/0x58
   32   crypto_compress+0x2c/0x34
   32   zcomp_compress+0x3c/0x44
   80   zram_bvec_rw+0x2f8/0xa7c
   64   zram_rw_page+0x104/0x170
   48   bdev_write_page+0x80/0xb4
  112   __swap_writepage+0x160/0x29c
   24   swap_writepage+0x3c/0x58
  160   shrink_page_list+0x788/0xae0
  128   shrink_inactive_list+0x210/0x4a8
  184   shrink_zone+0x53c/0x7c0
  160   try_to_free_pages+0x2fc/0x7cc
   80   __alloc_pages_nodemask+0x534/0x91c

Thanks & Regards,
Vaneet Narang 
 

  parent reply	other threads:[~2019-06-06 14:22 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20190603090227epcas5p348327061a3facbb9dfcf662bf2bc196e@epcas5p3.samsung.com>
2019-06-03  9:02 ` [PATCH 0/4] zstd: reduce stack usage Maninder Singh
     [not found]   ` <CGME20190603090232epcas5p1630d0584e8a1aa9495edc819605664fc@epcas5p1.samsung.com>
2019-06-03  9:02     ` [PATCH 1/4] zstd: pass pointer rathen than structure to functions Maninder Singh
2019-06-03 21:41       ` Andrew Morton
2019-06-04 22:43       ` Andrew Morton
2019-06-05 11:57         ` David Sterba
2019-06-05 12:32           ` David Sterba
2019-06-05 21:32             ` Andrew Morton
     [not found]       ` <CGME20190603090232epcas5p1630d0584e8a1aa9495edc819605664fc@epcms5p1>
2019-06-04 13:19         ` Vaneet Narang
2019-06-06 14:10         ` Vaneet Narang [this message]
2019-06-06 20:14           ` (2) " Nick Terrell
     [not found]   ` <CGME20190603090236epcas5p1bf0733024f7fb52f8129157b11c8f882@epcas5p1.samsung.com>
2019-06-03  9:02     ` [PATCH 2/4] zstd: use U16 data type for rankPos Maninder Singh
     [not found]   ` <CGME20190603090240epcas5p17d0881686df3fa3042d0b2d659e925b3@epcas5p1.samsung.com>
2019-06-03  9:02     ` [PATCH 3/4] zstd: move params structure to global variable to reduce stack usage Maninder Singh
2019-06-03 21:47       ` Andrew Morton
     [not found]   ` <CGME20190603090245epcas5p4a6cdfdb7ef72bfd36472f43bb4e1e0f1@epcas5p4.samsung.com>
2019-06-03  9:02     ` [PATCH 4/4] zstd: change structure variable from int to char Maninder Singh
2019-06-03 21:49   ` [PATCH 0/4] zstd: reduce stack usage Andrew Morton
     [not found]   ` <CGME20190603090227epcas5p348327061a3facbb9dfcf662bf2bc196e@epcms5p3>
2019-06-04 12:06     ` Vaneet Narang

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=20190606141019epcms5p1e9c394d2c2ef37506c8004fe48edd29f@epcms5p1 \
    --to=v.narang@samsung.com \
    --cc=a.sahrawat@samsung.com \
    --cc=akpm@linux-foundation.org \
    --cc=clm@fb.com \
    --cc=davem@davemloft.net \
    --cc=dsterba@suse.com \
    --cc=dsterba@suse.cz \
    --cc=gustavo@embeddedor.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=joe@perches.com \
    --cc=josef@toxicpanda.com \
    --cc=keescook@chromium.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maninder1.s@samsung.com \
    --cc=pankaj.m@samsung.com \
    --cc=terrelln@fb.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).