Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp539543imm; Wed, 18 Jul 2018 06:38:42 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfC5CLFW083aJnjmNm+uet3CidbdmABuAhI9qFrHQ16OWRY5AahDMmdlkgyQ1IvNuCi7DmD X-Received: by 2002:a17:902:7086:: with SMTP id z6-v6mr6102212plk.330.1531921122363; Wed, 18 Jul 2018 06:38:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531921122; cv=none; d=google.com; s=arc-20160816; b=KdCWTNLnBZB28ryxeF2z9gYL+RguhYf5U3Q5rZMuZSroJKC6xAVXWmKoIR2v0K5eSk I2Bq4DtW7KeNnWBwV/GoxvHNtMwOHB8XxoN3dYqIZcraa710XX7gbQzNzP3nDz/QLOn1 NaPbJ26Z9GcyHk5r5hU/GZVhbE3BCTilLrMt061LTPse2ycQwXNr/ulKXwRDhTs1I67+ Z4BasC4feDiTaX0BS6a9fypGxEMkiVeKS+dFYgsk0ezHFOrXimYLoKNCe0YKduMFENUG ECMlIqsQSGp0AouW1XxMGbMPU2Qpi+eXL17wf8hQ90vu55Fm2XMyn0f1/A3amSeEWVQR ExNA== 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=XYVC7J1U0fCfNO1jgh8P96lXF8mh05W798S5ejdLW1w=; b=TOMmi2yppBagkvrZ1loTBVTTBqtCptT+Ptv/AdwnISNn+1Cy5HPPgvu1BpCM/KHi0i p2Rv6WLHubjanNEaj4YS6XP/CMLHE9B7VvK7RIrScwRjJ9/GF/zQ+Y1UeaOoAyjwHPtN ecqOTz77SD2jYKZqOMPF5Tl+trQfLo1+j+/BkWQFHX5ziXiiVcmVtQj3RBliWKptsNQ2 EdOQjKedzoKYAmciKOML5Xja6EXsL9kdEzreqhpj+xUlGHyo8ZwDkd8hGxmAWU+x527B hmMEFpoC9KWbZ9622P1ZiXQwGUXKwq7kUckUrKRA1erJlxaMgv7Zjr+nGfdEpWmX+EwU D9Ow== 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 38-v6si3243645plc.446.2018.07.18.06.38.27; Wed, 18 Jul 2018 06:38:42 -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 S1731699AbeGROPM (ORCPT + 99 others); Wed, 18 Jul 2018 10:15:12 -0400 Received: from mx2.suse.de ([195.135.220.15]:38104 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731249AbeGROO3 (ORCPT ); Wed, 18 Jul 2018 10:14:29 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id E16D1AE20; Wed, 18 Jul 2018 13:36:28 +0000 (UTC) From: Vlastimil Babka To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, Roman Gushchin , Michal Hocko , Johannes Weiner , Christoph Lameter , David Rientjes , Joonsoo Kim , Mel Gorman , Matthew Wilcox , Vlastimil Babka Subject: [PATCH v3 7/7] mm, slab: shorten kmalloc cache names for large sizes Date: Wed, 18 Jul 2018 15:36:20 +0200 Message-Id: <20180718133620.6205-8-vbabka@suse.cz> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180718133620.6205-1-vbabka@suse.cz> References: <20180718133620.6205-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 614fb7ab8312..04d71ead7d12 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -1049,15 +1049,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} }; /* @@ -1107,6 +1107,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) { @@ -1114,7 +1129,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 { @@ -1163,8 +1178,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.18.0