From patchwork Wed Jul 18 13:36:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlastimil Babka X-Patchwork-Id: 10532481 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 43D7660547 for ; Wed, 18 Jul 2018 13:36:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 34BBA292E3 for ; Wed, 18 Jul 2018 13:36:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 291D529343; Wed, 18 Jul 2018 13:36:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AC7CF293BB for ; Wed, 18 Jul 2018 13:36:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4AFD36B000C; Wed, 18 Jul 2018 09:36:32 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 38F136B0266; Wed, 18 Jul 2018 09:36:32 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 235F56B0010; Wed, 18 Jul 2018 09:36:32 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by kanga.kvack.org (Postfix) with ESMTP id B21406B0008 for ; Wed, 18 Jul 2018 09:36:31 -0400 (EDT) Received: by mail-ed1-f70.google.com with SMTP id d30-v6so1953611edd.0 for ; Wed, 18 Jul 2018 06:36:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=XYVC7J1U0fCfNO1jgh8P96lXF8mh05W798S5ejdLW1w=; b=lFkCCqa7gfU4xYS//WkU1DKcnClcEBEJzrfOtqg7rtRRIEOge+gQtQnu/agI4bHHHM O/qifBOz4z/w7m3duTFpThRfJYUtazvEf9gb2ef0oDrWtp9YQS33E7XDge3ETk3dUMAW LxoYdqd7QjC8qItIWadkSlXH8raMFXPF+jwzV078yN0Ujr/pUXVegXt9s2BWJ4aebs2b 9ZNx2Gq0lGbAeCXyPhnLejwhxa/DqlEq6E2I+AoITffa41Pzpe7xxLijRQUz54nyp8DZ PPwPbGBHximU5jOsXjEnQtjnYxG5L2ejVn0guegyN6NTIud3HACzCZZlkpDbpav+nyTC eBwg== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of vbabka@suse.cz designates 195.135.220.15 as permitted sender) smtp.mailfrom=vbabka@suse.cz X-Gm-Message-State: AOUpUlEPRrPz8zuTRiTe69XFXMR+b847eAyiyaChRbWhKT3et98cGsYo r/xRaDgc+Ckh3oYgc+eG+vtg8bipfdnL0PCc52o8jtFnb5o3BrQMeyogBywNfxO2lEXmO9za3sC p5c1YQcMfxtgjctK0IdMrDFQ45xbnoU6YJgUX0zdJiQQAbZmq58sKj9/UsxaLbESHXQ== X-Received: by 2002:a50:940b:: with SMTP id p11-v6mr7049494eda.107.1531920991190; Wed, 18 Jul 2018 06:36:31 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf6Uwpnvi9NN/pkL+49go3v1KMAYbuha8TKRuFIAM3N+NLOchFek65bub8L5hjjgfFX/sGc X-Received: by 2002:a50:940b:: with SMTP id p11-v6mr7049413eda.107.1531920990011; Wed, 18 Jul 2018 06:36:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531920989; cv=none; d=google.com; s=arc-20160816; b=W9NQoDdPbaoCRGkW9NfVaqtfMyWIyQaIphxG1nbb4SDilpB6pAcmZUtQoE8DlC6/a8 SPqkOhcuDULSRx6Hu1A9EFISePAbyoK/YL7TpF13IRBDo2nbe4byO2FcLrKlX0Mw4Ehr rwv8WD1qu8sQReMh94vzc5T78oNj2eHmbQjLaXEY44HdSj1y7kPpEwsMXuU0qXRNkzRT r6VycODRRcPrBlJP7eS2C++kcWU20oTKEHx+w85vMkts4BXOezUn4Z8nKuhSO3a6UdAm NDvVIGxcMTQc08NNXSy5rAkMjTCpSBs9YADdNuDRK4nL8MBgX+4GzZRbPe65uiYX0ePP foqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=XYVC7J1U0fCfNO1jgh8P96lXF8mh05W798S5ejdLW1w=; b=GSdVUwOHm2R8Ags5C5wgGYPrzaocKSaIjARCH4TzJkOfZTO7eYznp/Pdsx/Ur2OsoM +W9Jr1Yqia884AaDfXcAl8fJYzl33sgc3KNrZfEDlkcXBQqKbn1F9lbaC2Cl8rTetoOz k28FGMamNJ+SoYjc1f5qzSCdJZRizRcrQS2Jdns/GDoXvpBMxSC70tOi7PYjheSk5NV9 +gtyuDNa8OHOCYWO8XvzXl8W/Ns2aE8Hc96dTpF6CpVa/hgIaRqlBvdiSkjTLeMaa0Ok 9amoiLqUcWE8V3rjv5zAJ5CjtMm41TYN3KYX3SXTQQFcQTho6TBbo/v/gd1GTvG1wVVp xJ0Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of vbabka@suse.cz designates 195.135.220.15 as permitted sender) smtp.mailfrom=vbabka@suse.cz Received: from mx1.suse.de (mx2.suse.de. [195.135.220.15]) by mx.google.com with ESMTPS id 47-v6si2886016edz.8.2018.07.18.06.36.29 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Jul 2018 06:36:29 -0700 (PDT) Received-SPF: pass (google.com: domain of vbabka@suse.cz designates 195.135.220.15 as permitted sender) client-ip=195.135.220.15; Authentication-Results: mx.google.com; spf=pass (google.com: domain of vbabka@suse.cz designates 195.135.220.15 as permitted sender) smtp.mailfrom=vbabka@suse.cz 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> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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 Acked-by: Mel Gorman Acked-by: Christoph Lameter --- 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(