Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3690589imm; Mon, 18 Jun 2018 02:21:55 -0700 (PDT) X-Google-Smtp-Source: ADUXVKK/CQFIElIpERIencmvup9NFd8CytQBt3izV6xixg8uWH2HkI5DS3YgM+gXThLQkQ7Y/tdg X-Received: by 2002:a62:119d:: with SMTP id 29-v6mr12704340pfr.102.1529313715942; Mon, 18 Jun 2018 02:21:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529313715; cv=none; d=google.com; s=arc-20160816; b=ul2FzL5uxK1bWT3Kri/U76J7N9Gq+r5cN/09vxhTOy/B6ravmF4Uxaz87J0lP060CQ bokCQUgU5q6E5oNEYowxAEDv5aD2jLY1W8hb696mOHoGvmtRgRdj3mPqsA4ekf+hxu2N IORBu6uocUEus41aGMsidL6VpcNmsE/TqqOz7cEOd/5EUGsQdhlL2Dd9yT58PRPBRhHW e54Zpc2GclERAghZ70yZC50jTEcTjaw9YN9eJO0UK5fjUDqrYlJFyDevGlOwPB1ZoAPe 2T/Lc9uj5ruoIG+H4u00Y9uBHzi7tiDm68TZmR9j1FMOQ0w9YOk4Dmf+psdQtZ1QISoh 5Rfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=fp6+t6mBoBDIs63II/jtj9NitcOikokCQoqwqYQKgb8=; b=u3xSyh9yvfxBG5b9HsijSL2d/l361eW1mLkF8gaj5Dgv7N8+wZijGiFgVWXZ+Jc9u4 BpHjLMMM4v/sDlrQz6akjIkXo5PKn5i22C/JeUyd3MWGQC0hgzbXzzzYo4ogVRas0Af9 /WO7inF1GoaZ0v3hV34CJqpzDVfz72C2MgVD0kmkxNPvMk/+RnU/VHCqjF3IZI1jPz7/ ak1FU1yahpWhuPfq3vONJtvbgdTVPxoykAUPoUyc7TonjO7u3Oy1KbWV8+bE1yzM6cfP Pp1iFl+vqUyoaLNYQADwDt10kFTJm+ECFRHH9cJWFm5soH71nlg98e/cbYgtyztkhrP3 8sWQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g2-v6si11790168pgo.367.2018.06.18.02.21.35; Mon, 18 Jun 2018 02:21:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966620AbeFRJTa (ORCPT + 99 others); Mon, 18 Jun 2018 05:19:30 -0400 Received: from mx2.suse.de ([195.135.220.15]:38532 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936545AbeFRJS3 (ORCPT ); Mon, 18 Jun 2018 05:18:29 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext-too.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id E829FAE14; Mon, 18 Jun 2018 09:18:27 +0000 (UTC) From: Vlastimil Babka To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Roman Gushchin , Michal Hocko , Johannes Weiner , linux-api@vger.kernel.org, Christoph Lameter , David Rientjes , Mel Gorman , Matthew Wilcox , Vlastimil Babka Subject: [PATCH v2 7/7] mm, slab: shorten kmalloc cache names for large sizes Date: Mon, 18 Jun 2018 11:18:08 +0200 Message-Id: <20180618091808.4419-8-vbabka@suse.cz> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180618091808.4419-1-vbabka@suse.cz> References: <20180618091808.4419-1-vbabka@suse.cz> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Kmalloc cache names can get quite long for large object sizes, when the sizes are expressed in bytes. Use 'k' and 'M' prefixes to make the names as short as possible e.g. in /proc/slabinfo. This works, as we mostly use power-of-two sizes, with exceptions only below 1k. Example: 'kmalloc-4194304' becomes 'kmalloc-4M' Suggested-by: Matthew Wilcox Signed-off-by: Vlastimil Babka --- mm/slab_common.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/mm/slab_common.c b/mm/slab_common.c index 8a30d6979936..462509978ec0 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1045,15 +1045,15 @@ const struct kmalloc_info_struct kmalloc_info[] __initconst = { {"kmalloc-16", 16}, {"kmalloc-32", 32}, {"kmalloc-64", 64}, {"kmalloc-128", 128}, {"kmalloc-256", 256}, {"kmalloc-512", 512}, - {"kmalloc-1024", 1024}, {"kmalloc-2048", 2048}, - {"kmalloc-4096", 4096}, {"kmalloc-8192", 8192}, - {"kmalloc-16384", 16384}, {"kmalloc-32768", 32768}, - {"kmalloc-65536", 65536}, {"kmalloc-131072", 131072}, - {"kmalloc-262144", 262144}, {"kmalloc-524288", 524288}, - {"kmalloc-1048576", 1048576}, {"kmalloc-2097152", 2097152}, - {"kmalloc-4194304", 4194304}, {"kmalloc-8388608", 8388608}, - {"kmalloc-16777216", 16777216}, {"kmalloc-33554432", 33554432}, - {"kmalloc-67108864", 67108864} + {"kmalloc-1k", 1024}, {"kmalloc-2k", 2048}, + {"kmalloc-4k", 4096}, {"kmalloc-8k", 8192}, + {"kmalloc-16k", 16384}, {"kmalloc-32k", 32768}, + {"kmalloc-64k", 65536}, {"kmalloc-128k", 131072}, + {"kmalloc-256k", 262144}, {"kmalloc-512k", 524288}, + {"kmalloc-1M", 1048576}, {"kmalloc-2M", 2097152}, + {"kmalloc-4M", 4194304}, {"kmalloc-8M", 8388608}, + {"kmalloc-16M", 16777216}, {"kmalloc-32M", 33554432}, + {"kmalloc-64M", 67108864} }; /* @@ -1103,6 +1103,21 @@ void __init setup_kmalloc_cache_index_table(void) } } +static const char * +kmalloc_cache_name(const char *prefix, unsigned int size) +{ + + static const char units[3] = "\0kM"; + int idx = 0; + + while (size >= 1024 && (size % 1024 == 0)) { + size /= 1024; + idx++; + } + + return kasprintf(GFP_NOWAIT, "%s-%u%c", prefix, size, units[idx]); +} + static void __init new_kmalloc_cache(int idx, int type, slab_flags_t flags) { @@ -1110,7 +1125,7 @@ new_kmalloc_cache(int idx, int type, slab_flags_t flags) if (type == KMALLOC_RECLAIM) { flags |= SLAB_RECLAIM_ACCOUNT; - name = kasprintf(GFP_NOWAIT, "kmalloc-rcl-%u", + name = kmalloc_cache_name("kmalloc-rcl", kmalloc_info[idx].size); BUG_ON(!name); } else { @@ -1159,8 +1174,7 @@ void __init create_kmalloc_caches(slab_flags_t flags) if (s) { unsigned int size = kmalloc_size(i); - char *n = kasprintf(GFP_NOWAIT, - "dma-kmalloc-%u", size); + const char *n = kmalloc_cache_name("dma-kmalloc", size); BUG_ON(!n); kmalloc_caches[KMALLOC_DMA][i] = create_kmalloc_cache( -- 2.17.1