From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933454AbcBABBh (ORCPT ); Sun, 31 Jan 2016 20:01:37 -0500 Received: from mail-pf0-f180.google.com ([209.85.192.180]:34890 "EHLO mail-pf0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932824AbcBABBg (ORCPT ); Sun, 31 Jan 2016 20:01:36 -0500 Date: Mon, 1 Feb 2016 10:02:48 +0900 From: Sergey Senozhatsky To: Minchan Kim Cc: Sergey Senozhatsky , Andrew Morton , linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: Re: [PATCH] zram: export the number of available comp streams Message-ID: <20160201010157.GA1033@swordfish> References: <1453809839-21705-1-git-send-email-sergey.senozhatsky@gmail.com> <20160129072842.GA30072@bbox> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160129072842.GA30072@bbox> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello Minchan, On (01/29/16 16:28), Minchan Kim wrote: > Hello Sergey, > > Sorry to late response. Thesedays, I'm really busy with personal > stuff. sure, no worries :) > On Tue, Jan 26, 2016 at 09:03:59PM +0900, Sergey Senozhatsky wrote: > > I've been asked several very simple questions: > > a) How can I ensure that zram uses (or used) several compression > > streams? > > Why does he want to ensure several compression streams? > As you know well, zram handle it dynamically. > > If zram cannot allocate more streams, it means the system is > heavily fragmented or memory pressure at that time so there > is no worth to add more stream, I think. > > Could you elaborate it more why he want to know it and what > he expect from that? good questions. I believe mostly it's about fine-tuning on a per-device basis, which is getting especially tricky when zram devices are used as a sort of in-memory tmp storage for various applications (black boxen). > > b) What is the current number of comp streams (how much memory > > does zram *actually* use for compression streams, if there are > > more than one stream)? > > Hmm, in the kernel, there are lots of example subsystem > we cannot know exact memory usage. Why does the user want > to know exact memory usage of zram? What is his concern? certainly true. probably some of those sub-systems/drivers have some sort of LRU, or shrinker callbacks, to release unneeded memory back. zram only allocates streams, and it basically hard to tell how many: up to max_comp_streams, which can be larger than the number of cpus on the system; because we keep preemption enabled (I didn't realize that until I played with the patch) around zcomp_strm_find()/zcomp_strm_release(): zram_bvec_write() { ... zstrm = zcomp_strm_find(zram->comp); >> can preempt user_mem = kmap_atomic(page); >> now atomic zcomp_compress() ... kunmap_atomic() >> can preempt zcomp_strm_release() ... } so how many streams I can have on my old 4-cpus x86_64 box? 10? yes. # cat /sys/block/zram0/mm_stat 630484992 9288707 13103104 0 13103104 16240 0 10 16? yes. # cat /sys/block/zram0/mm_stat 1893117952 25296718 31354880 0 31354880 15342 0 16 21? yes. # cat /sys/block/zram0/mm_stat 1893167104 28499936 46616576 0 46616576 15330 0 21 do I need 21? may be no. do I nede 18? if 18 streams are needed only 10% of the time (I can figure it out by doing repetitive cat zramX/mm_stat), then I can set max_comp_streams to make 90% of applications happy, e.g. max_comp_streams to 10, and save some memory. 10 echo X > /sys/block/zramX/max_comp_streams 20 do tests 30 cat /sys/block/zramX/mm_stat 40 update X (increase/decrease) if needed, otherwise break 50 goto 10 > In advance, sorry for slow response. no prob, my response wasn't super fast either :) -ss