From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757387AbcBSFxw (ORCPT ); Fri, 19 Feb 2016 00:53:52 -0500 Received: from mail-pf0-f182.google.com ([209.85.192.182]:36020 "EHLO mail-pf0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757339AbcBSFxv (ORCPT ); Fri, 19 Feb 2016 00:53:51 -0500 Date: Fri, 19 Feb 2016 14:55:07 +0900 From: Sergey Senozhatsky To: Sergey Senozhatsky Cc: Joonsoo Kim , Andrew Morton , Minchan Kim , Linux Memory Management List , LKML , Sergey Senozhatsky Subject: Re: [RFC PATCH 3/3] mm/zsmalloc: change ZS_MAX_PAGES_PER_ZSPAGE Message-ID: <20160219055507.GC16230@swordfish> References: <1455764556-13979-1-git-send-email-sergey.senozhatsky@gmail.com> <1455764556-13979-4-git-send-email-sergey.senozhatsky@gmail.com> <20160218095536.GA503@swordfish> <20160218101909.GB503@swordfish> <20160219041601.GA820@swordfish> <20160219044604.GA16230@swordfish> <20160219053814.GB16230@swordfish> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160219053814.GB16230@swordfish> 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 On (02/19/16 14:38), Sergey Senozhatsky wrote: [..] > #define OBJ_ALLOCATED_TAG 1 > #define OBJ_TAG_BITS 1 > #define OBJ_INDEX_BITS (BITS_PER_LONG - _PFN_BITS - OBJ_TAG_BITS) > #define OBJ_INDEX_MASK ((_AC(1, UL) << OBJ_INDEX_BITS) - 1) > > #define ZS_MIN_ALLOC_SIZE \ > MAX(32, (ZS_MAX_PAGES_PER_ZSPAGE << PAGE_SHIFT >> OBJ_INDEX_BITS)) [..] > -- on 32 bit system, PAGE_SHIFT 12 > > ZS_MAX_PAGES_PER_ZSPAGE 1 << 4 16 > OBJ_INDEX_BITS (32 - (32 - 12) - 1) 11 > OBJ_INDEX_MASK ((1 << (32 - (32 - 12) - 1)) - 1) 2047 > ZS_MIN_ALLOC_SIZE MAX(32, ((1 << 4) << 12 >> (32 - (32 - 12) - 1))) 32 > > -- on 64 bit system, PAGE_SHIFT 12 > > ZS_MAX_PAGES_PER_ZSPAGE 1 << 4 16 > OBJ_INDEX_BITS (64 - (64 - 12) - 1) 11 > OBJ_INDEX_MASK ((1 << (64 - (64 - 12) - 1)) - 1) 2047 > ZS_MIN_ALLOC_SIZE MAX(32, ((1 << 4) << 12 >> (64 - (64 - 12) - 1))) 32 even if it's missing "HANDLE_PIN_BIT 0", it's still OBJ_INDEX_BITS 10, 2<<10 should be enough to keep 32 bytes class around. > -- on 64 bit system, PAGE_SHIFT 14 > > ZS_MAX_PAGES_PER_ZSPAGE 1 << 4 16 > OBJ_INDEX_BITS (64 - (64 - 14) - 1) 13 > OBJ_INDEX_MASK ((1 << (64 - (64 - 14) - 1)) - 1) 8191 > ZS_MIN_ALLOC_SIZE MAX(32, ((1 << 4) << 14 >> (64 - (64 - 14) - 1))) 32 OBJ_INDEX_BITS 2<<12 still looks to be good enough. -ss