From patchwork Tue Mar 8 11:41:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyeonggon Yoo <42.hyeyoo@gmail.com> X-Patchwork-Id: 12773561 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51F7AC433EF for ; Tue, 8 Mar 2022 11:42:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E11298D0003; Tue, 8 Mar 2022 06:42:19 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DBFEB8D0001; Tue, 8 Mar 2022 06:42:19 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB0268D0003; Tue, 8 Mar 2022 06:42:19 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.26]) by kanga.kvack.org (Postfix) with ESMTP id BEDC08D0001 for ; Tue, 8 Mar 2022 06:42:19 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 791B220384 for ; Tue, 8 Mar 2022 11:42:19 +0000 (UTC) X-FDA: 79221030798.12.0717CB7 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) by imf28.hostedemail.com (Postfix) with ESMTP id 067A6C0007 for ; Tue, 8 Mar 2022 11:42:18 +0000 (UTC) Received: by mail-pj1-f45.google.com with SMTP id mv5-20020a17090b198500b001bf2a039831so1939863pjb.5 for ; Tue, 08 Mar 2022 03:42:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=FUjyQO1QWOZK6I3n0yaGiQcdv54drlHJV5uk7w/YBv4=; b=AG0c0/5hAmXhvYYF4A05TJlfV2jBRnVhCvQolU4TWj5Ee4FJJqWj7yDX0kSgDpnPqF ZjPXygYCM4M4UeA8/ErrCOnXT+qoZQWdo8lYGfqZXWaLg37ogHF5WhMv36XKl4pxmgRy 9wehxLGeOUsYg2/MHesSCC2ZopWoPq60u8L4iD7E3PRlNOyIwggggPjAnbgWSPHYMv95 PBugSVdsmlzkIx6QARvnFFJuDQaidQ9KgCY8nUaNHZgIF+2mIA8pF0sP9rT1//RIPj7c qPDhErzyK5zkKAALRknZP2Oc4We4gDjGHMZBLMtmfbNRbuz/8Sl+h714bv4dEUgZLNZL f9Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=FUjyQO1QWOZK6I3n0yaGiQcdv54drlHJV5uk7w/YBv4=; b=SVzU9bJCu6HsvOv6KWQyX5+SrDQHohPpUMRgi3Z9th3ZqzHLHhuTLVk3mwjC2g7ZFK G7t+quR7XTtf0qwKzdWFattzYVCvbngDHY7kqb4a8s2sq+lv2gdpdfTpfeOFbttikuo3 P1peTdiapo6dC3TUXrdHm4iPSwzp8owOrlFIb1TeG8qelNWkvLSU2lgBbRz1UMVq1Te5 Gh8trARl4XOmn5fkYblMkyZnuEFBI25n4umcqJ5frjc8G2OWiW1h9Od1zbqgdMehcnXF OYIqo5y6uRM2fwFJj4h9IFuOUQPijMihOLWJB8qiTmDrumlN1bI3JNHavPg15ThbhmcY itqg== X-Gm-Message-State: AOAM532NterBRCcs3oSmVuu2mCfaI1RP8rFYLzQPtsS3djicJhbgJ/Mv VQHO7+Ev0/zvhQ4W6AYM4gByfaZvbrkYTw== X-Google-Smtp-Source: ABdhPJy/vjn08ZDcWASQhRetQX28DFSULO9BILKHMosppf0to/aF3AVlOJ+RxJv5Qd671iukFwwpXw== X-Received: by 2002:a17:902:f643:b0:14d:7b8f:14b3 with SMTP id m3-20020a170902f64300b0014d7b8f14b3mr16890881plg.19.1646739737550; Tue, 08 Mar 2022 03:42:17 -0800 (PST) Received: from ip-172-31-19-208.ap-northeast-1.compute.internal (ec2-18-181-137-102.ap-northeast-1.compute.amazonaws.com. [18.181.137.102]) by smtp.gmail.com with ESMTPSA id i2-20020a17090ac40200b001bd0e552d27sm2578285pjt.11.2022.03.08.03.42.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Mar 2022 03:42:17 -0800 (PST) From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: linux-mm@kvack.org Cc: Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Vlastimil Babka , Marco Elver , Matthew WilCox , Roman Gushchin , linux-kernel@vger.kernel.org, 42.hyeyoo@gmail.com Subject: [RFC PATCH v1 00/15] common kmalloc subsystem on SLAB/SLUB Date: Tue, 8 Mar 2022 11:41:27 +0000 Message-Id: <20220308114142.1744229-1-42.hyeyoo@gmail.com> X-Mailer: git-send-email 2.33.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: 067A6C0007 X-Stat-Signature: zeqbq4s1z1kysfarzctkdwj5n94e8jny Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="AG0c0/5h"; spf=pass (imf28.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.216.45 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1646739738-674219 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: Hello, this series is cleanup of slab common code. After this series, kmalloc subsystem is perfectly generalized between SLAB and SLUB. This series is not small, and some of review and discussion may be needed. But I bet you will like this! :D Many thanks to Matthew, Marco, Vlastimil who gave comments in previous series. Any feedbacks will be appreciated. Thanks! ========= series description ========== patch 1 makes slab_alloc_node() in SLAB available for non-NUMA configurations for further cleanup. patch 2-8 are cleanup of unnecessary CONFIG_TRACING/NUMA ifdefs and duplicate code. (and small optimization of kmalloc_node()) patch 9 makes SLAB pass requests larger than order-1 page to page allocator. This is useful for further generalization. patch 10-11 are cleanup of tracepoints. Currently there are five trace points in slab: kmalloc, kmalloc_node, kmem_cache_alloc, kmem_cahce_alloc_node, kmem_cache_free, kfree. patch 10-11 make tracepoints print cache name and convert every tracepoint to kmem_cache_alloc_node and kmem_cache_free. patch 12 generalizes whole kmalloc subsystem on SLAB and SLUB. patch 13 removes kmem_cache_alloc_node() that became useless after patch 12. patch 14-15 are small improvements of __ksize(). Hyeonggon Yoo (15): mm/slab: cleanup slab_alloc() and slab_alloc_node() mm/sl[auo]b: remove CONFIG_NUMA ifdefs for common functions mm/sl[au]b: remove CONFIG_TRACING ifdefs for tracing functions mm/sl[auo]b: fold kmalloc_order() into kmalloc_large() mm/slub: move kmalloc_large_node() to slab_common.c mm/slab_common: cleanup kmalloc_large() mm/sl[au]b: kmalloc_node: pass large requests to page allocator mm/sl[auo]b: cleanup kmalloc() mm/slab: kmalloc: pass requests larger than order-1 page to page allocator mm/sl[auo]b: print cache name in tracepoints mm/sl[auo]b: use same tracepoint in kmalloc and normal caches mm/sl[au]b: generalize kmalloc subsystem mm/sl[au]b: remove kmem_cache_alloc_node_trace() mm/sl[auo]b: move definition of __ksize() to mm/slab.h mm/sl[au]b: check if large object is valid in __ksize() include/linux/slab.h | 252 +++++++++++--------------- include/trace/events/kmem.h | 107 ++--------- mm/slab.c | 347 ++++++++---------------------------- mm/slab.h | 9 + mm/slab_common.c | 128 ++++++++++--- mm/slob.c | 69 +++---- mm/slub.c | 237 ++---------------------- 7 files changed, 346 insertions(+), 803 deletions(-)