From mboxrd@z Thu Jan 1 00:00:00 1970 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 409F0C433EF for ; Wed, 13 Jul 2022 09:39:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A944F94011C; Wed, 13 Jul 2022 05:39:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A43809400E5; Wed, 13 Jul 2022 05:39:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 90A8D94011C; Wed, 13 Jul 2022 05:39:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 818EB9400E5 for ; Wed, 13 Jul 2022 05:39:55 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 4A38C3374E for ; Wed, 13 Jul 2022 09:39:55 +0000 (UTC) X-FDA: 79681579950.13.D79F4DB Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf30.hostedemail.com (Postfix) with ESMTP id E3A848007C for ; Wed, 13 Jul 2022 09:39:54 +0000 (UTC) Received: by mail-pf1-f177.google.com with SMTP id g126so9763788pfb.3 for ; Wed, 13 Jul 2022 02:39:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=J2J2u1LkrsbKi6YvldfMoSvbAoYgO95fp1M0s8Wr27g=; b=q3Ou4++fA1E2GW1K5dfL+/AMScnGCdQYEknNYdOhQfS2mca12EWg6stFGOlyqhACDx k9c6851FVlb/I+2EbEH2vk4abOpPhBNTeqS+AvSdFmbd0rr1sXumTOnhx+t85req/oQZ 7D8u6VwHoMJYWsGu/PUtFaAKyS5Ph29TpNxqXkXEPO+EoPGW46bDfz7+PNyFyRx9qulq Yt2mUCrwsGhPtcO+IboNh8xwBdtuaKcpp8uqeg5ULghfTggd2AfXE/dWB3KsMVFtkW6M ZXb34Pa82FmnmzLydjm9jQIAZrAhgvzXV6AIMKeIgqlR7i3xQIZkvuu0cUfdDrJpa8Go 1gpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=J2J2u1LkrsbKi6YvldfMoSvbAoYgO95fp1M0s8Wr27g=; b=TiQE1ALIjLTPYGflWWB40j+juOmJXaa5W4V6NXjnUZIOVYrhInQB14UBMyXLTqBmSL b45d2Ln3D67jELxe/5HEJEDqsVgtuzXA/s57OjrXWENT59njOIqPGLaZRKAZvRh9/4b+ VyBVmIFPwnFcRJXF8AsofvxYhzZ8npGOfosc//Wfffo4g8KdvTqYDptj5302fRW+uFFI G5zVxIL8Hd4ylfORoS81+LL9C2+R0hFm7uBJSTwYeomBKFl6+jzusg6OEvx4wWNcQc1H KCuE8O7ODblcBS9EGjM59rg4rlO3wb2cfNu1gl25SIGyhJ7g668+ABr/i3bFb7GVzPX9 s7XQ== X-Gm-Message-State: AJIora84ya0khFt75ZlM6zbPxl5vnCS1+rJ3cDric/iC82jFhCE7MBB/ iSMTrwCPAV+c5/e5dZ98aTo= X-Google-Smtp-Source: AGRyM1seFzWdcIfrPjmiqtO38PN1ilMVEJJ4f2IK2QQJ04vBjZCyutuvF1ySjmoy7Fu7GgsTchsKGA== X-Received: by 2002:a05:6a00:889:b0:510:91e6:6463 with SMTP id q9-20020a056a00088900b0051091e66463mr2516118pfj.58.1657705193789; Wed, 13 Jul 2022 02:39:53 -0700 (PDT) Received: from ip-172-31-24-42.ap-northeast-1.compute.internal (ec2-35-77-58-189.ap-northeast-1.compute.amazonaws.com. [35.77.58.189]) by smtp.gmail.com with ESMTPSA id a3-20020a170902ee8300b001640aad2f71sm8335113pld.180.2022.07.13.02.39.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Jul 2022 02:39:53 -0700 (PDT) Date: Wed, 13 Jul 2022 09:39:48 +0000 From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: Christoph Lameter Cc: Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Vlastimil Babka , Roman Gushchin , Joe Perches , Vasily Averin , Matthew WilCox , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v3 1/15] mm/slab: move NUMA-related code to __do_cache_alloc() Message-ID: References: <20220712133946.307181-1-42.hyeyoo@gmail.com> <20220712133946.307181-2-42.hyeyoo@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1657705195; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=J2J2u1LkrsbKi6YvldfMoSvbAoYgO95fp1M0s8Wr27g=; b=O8r2grVtNHWrAVu9tX3AnAIospLRNwIgcomYIEYH9WyeYnLpTaAcYA2lJDFBAAU4o0+LLG cXqd7URS610F0Y5mP2WYGIQyysirk//HhDXzKoW5dP7EP8kH9YoplvizSiZpORzqz/ELRk lL/Pf0SjoCBI9V3yMvKyBRxMO4rWC18= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=q3Ou4++f; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1657705195; a=rsa-sha256; cv=none; b=QoYoBuUBV3S5VpbXKzer1sXe7tdC1jaAIBUUJIv+hZkEFwZwBtZfJFEIqLlEXNdcbJXf24 p89a1PVxqDBPrFbnmZ5emShMegImghDp4SzMtClhG+2wlUpre29nt3/xETqmPkHHpSEHPE Ps3oLuHbPx9ti5eCtS6bbl9DYQ9ZR2E= X-Stat-Signature: ubmkquqs9pzsee7591ksqkoaqair3nde X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: E3A848007C Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=q3Ou4++f; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.210.177 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com X-Rspam-User: X-HE-Tag: 1657705194-912184 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: On Tue, Jul 12, 2022 at 04:29:10PM +0200, Christoph Lameter wrote: > On Tue, 12 Jul 2022, Hyeonggon Yoo wrote: > > > @@ -3241,31 +3219,46 @@ slab_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid, size_t orig_ > > } > > > > static __always_inline void * > > -__do_cache_alloc(struct kmem_cache *cache, gfp_t flags) > > +__do_cache_alloc(struct kmem_cache *cachep, gfp_t flags, int nodeid) > > { > > - void *objp; > > + void *objp = NULL; > > + int slab_node = numa_mem_id(); > > > > - if (current->mempolicy || cpuset_do_slab_mem_spread()) { > > - objp = alternate_node_alloc(cache, flags); > > - if (objp) > > - goto out; > > + if (nodeid == NUMA_NO_NODE) { > > + if (current->mempolicy || cpuset_do_slab_mem_spread()) { > > + objp = alternate_node_alloc(cachep, flags); > > + if (objp) > > + goto out; > > + } > > + /* > > + * Use the locally cached objects if possible. > > + * However ____cache_alloc does not allow fallback > > + * to other nodes. It may fail while we still have > > + * objects on other nodes available. > > + */ > > + objp = ____cache_alloc(cachep, flags); > > + nodeid = slab_node; > > + } else if (nodeid == slab_node) { > > + objp = ____cache_alloc(cachep, flags); > > + } else if (!get_node(cachep, nodeid)) { > > + /* Node not bootstrapped yet */ > > + objp = fallback_alloc(cachep, flags); > > + goto out; > > } > > - objp = ____cache_alloc(cache, flags); > > > > /* > > * We may just have run out of memory on the local node. > > * ____cache_alloc_node() knows how to locate memory on other nodes > > */ > > if (!objp) > > - objp = ____cache_alloc_node(cache, flags, numa_mem_id()); > > - > > + objp = ____cache_alloc_node(cachep, flags, nodeid); > > > Does this preserve the original behavior? nodeid is the parameter passed > to __do_cache_alloc(). numa_mem_id() is the nearest memory node. Yes it does preserve the original behavior. nodeid equals to value of numa_mem_id() when nodeid was NUMA_NO_NODE and ____cache_alloc() failed to allocate.