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 8CC40C02181 for ; Fri, 24 Jan 2025 12:11:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 09727280063; Fri, 24 Jan 2025 07:11:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 046DA280059; Fri, 24 Jan 2025 07:11:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E297D280063; Fri, 24 Jan 2025 07:11:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C3086280059 for ; Fri, 24 Jan 2025 07:11:09 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id E6E77B1883 for ; Fri, 24 Jan 2025 12:11:08 +0000 (UTC) X-FDA: 83042229816.23.74F9F47 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) by imf30.hostedemail.com (Postfix) with ESMTP id DBDCA80018 for ; Fri, 24 Jan 2025 12:11:06 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AbCKEPIs; spf=pass (imf30.hostedemail.com: domain of urezki@gmail.com designates 209.85.167.43 as permitted sender) smtp.mailfrom=urezki@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737720667; 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=CCFWsVUlTlzlODRazwy3FhP7ZwvGV/2uZu6VlfdPVtE=; b=08pTwe483/1cI7xnIH+2k9L4Swg+uLvUQJqQXRToojkXXavqe8QRQHR59WfHsNMC/aQ445 /jk0NZ81AVcYg4Gjk7BglHE8XILCeZ4iOZdjlJ4tL/RZR+xGhKD/CyQExriwqeesjHpaQ2 +DgGSBucqSPNoXxujXKb3U8fykXPD0Q= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AbCKEPIs; spf=pass (imf30.hostedemail.com: domain of urezki@gmail.com designates 209.85.167.43 as permitted sender) smtp.mailfrom=urezki@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737720667; a=rsa-sha256; cv=none; b=UNci8qwCD50Hgt4O0bvoj3B1TUtsLeG58Ic2C7SoxdZOoRMIr+3/HPSU3vxRX06/lh8F0Q z5ajHN6Ax1lOOd0tElQjVNzEDka7UXeS4H5CWsIMrru30D1bNbcc3y4zhmu+K3fAw7Ht1T Ar/qr67h966S42q92I6IWZBj2vaJb74= Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-540254357c8so2014592e87.1 for ; Fri, 24 Jan 2025 04:11:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737720665; x=1738325465; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=CCFWsVUlTlzlODRazwy3FhP7ZwvGV/2uZu6VlfdPVtE=; b=AbCKEPIsM6/p1Gt/LBnPPp9I+j5/IUFV4q5BOsXbBsTtNTtnkwinnfN9sALix0nWx/ U0MnkSW2MwETI7FR5d+LUVc6NfKNL4Z/QovAV65hHmjA2LJ5gBIR8/Ownw1MIEhjJzSv FrPOEa/q6fEAK23cVJTwBNI68MJBwdoJAz4cAChntV1jykiiuEIr9gB3yk14xpuXv5uL VrVTTon9iX5VzXDEgkLtrAtUkRZ53Gk6Gtlu7uzFM4GSGWf7RrsEPsx02fy6AVF+V8F0 KRFFltrSJNWTwLdgNL8neIxVoG9EEbXg18JLcTV0ks0vakA/5bMqD/gF3jVYr6NYfaxL TYsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737720665; x=1738325465; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CCFWsVUlTlzlODRazwy3FhP7ZwvGV/2uZu6VlfdPVtE=; b=EeDYCJD7T0vOXF0qaqEWld+qjJR01bGnvrgeMCmK3h9OHGLTvFTp1JWNWlEiCls4Nr f42lF/l06hKUapsHSZlHMH7D/I+DUwv9VMGUteBjQECBCUEs5VsAcn3Yy8bX13wWSywW +F1n9ggGm99TwSnW3IyCxyXOaj5BGiQ1VEaeyhTGpY7aH3U6/Oz1kKEpljpUEG0aGAmZ QAz5uJfVPKlab7ljAcGEltOtBPvPvHman8ztytXiql+x/lIWsXmmUFRbubAqZ7wAMthr sxh7eJq57J40EanfCi+qC/bsuZmRcmicTAaTchZSasBzA0/ZfWLQmoI7CEFGW3IOFXFl 6wQQ== X-Forwarded-Encrypted: i=1; AJvYcCUJ4Gc2i1Xf3CF+GgU/YV4VuPal9WS85jL5BAsbsWaf7oIEThEvU9AjngpGg+z9omWDN766obvX0g==@kvack.org X-Gm-Message-State: AOJu0YyYGd3nFo22clT2gVRg6HBVr99LsdSUNWstxHCUryXlSMjh5Qgs jV7HodDxRO5YXL8Wf1FchKoBEU4tEqFv4LXbQhBvtsXvY5kiVY3T X-Gm-Gg: ASbGncvMIexWW7keQIpTlybzXoc/+e4e35Cz6yJrZEtR41pYdynalzWlcG0p/OvdTJq lcJrbJu5dZ2rEE851YlHktJl9WcIXvTfwiKf9/8vPGDrYR4uAW9imBGieHv7JsNwHHB8KDQsa53 jiBBWKogtRVdRrcmJGY+3TOAwkj8YAOY7jHZF8h57vnuhaqeEyA880xl52tMLuvbrXtGXmrMqtN fIciesDKdWb6rPfQ/8+N2bZY+IL5J+SjJsf7nTELkWJRSUpFQuHbpHXZnMDSc3UxMAaGbbriAvn sM8nVNEd3Y05RswUA/KOOLHTbMRsJm1aEOg= X-Google-Smtp-Source: AGHT+IH20V+H9mL+BtrdGoQx/Z+iCvWoXKL/MKk3o1LRlvkK6XuwLhntzsnscxycRabVdx8Z6pXUbg== X-Received: by 2002:a05:6512:aca:b0:53e:37e4:1457 with SMTP id 2adb3069b0e04-5439c280723mr11508144e87.33.1737720664827; Fri, 24 Jan 2025 04:11:04 -0800 (PST) Received: from pc636 (host-217-213-93-172.mobileonline.telia.com. [217.213.93.172]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-543c836848bsm271613e87.126.2025.01.24.04.11.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 04:11:04 -0800 (PST) From: Uladzislau Rezki X-Google-Original-From: Uladzislau Rezki Date: Fri, 24 Jan 2025 13:11:01 +0100 To: Vlastimil Babka Cc: Christoph Lameter , David Rientjes , "Paul E. McKenney" , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang , rcu@vger.kernel.org Subject: Re: [PATCH RFC 4/4] slab: don't batch kvfree_rcu() with SLUB_TINY Message-ID: References: <20250123-slub-tiny-kfree_rcu-v1-0-0e386ef1541a@suse.cz> <20250123-slub-tiny-kfree_rcu-v1-4-0e386ef1541a@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250123-slub-tiny-kfree_rcu-v1-4-0e386ef1541a@suse.cz> X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: DBDCA80018 X-Stat-Signature: rj99fw96nkp5ispcsbnzr1da3qzznia8 X-HE-Tag: 1737720666-358165 X-HE-Meta: U2FsdGVkX1/guWo8SgjncMt0XElQUOyVBPdklOdf1qVH95105YClUToLyZihF7SwGLfNl+JYKQz/f309Jw/W0jRbocAhbDOK1FNnuch8V8WqaktqVQTdpXWneMCk9PJwKd1wIYf4Fyh/vGlSjPX/aS1/wSNDM/im4AxgznDqQwMcvSl5JlR7oHwy8Nxh+75nbbUFUDc7ank3LnkMs4g+D/b6h2pUT5HHpdxPiPjDI93cE7vahFbbYizykZnkLe9U5F/SvnCP4s0zpKXIL7qBH3lOcg7yXAsHF974ZkrYQNgUZCQYQi+nEAwlFNuNy7BnytlShFBwPJYKMDYm0i9Fwyo8Mu+xl+n+VjWG+wnACLH4qU2wHPI1WVq+x2KLLFMJe91xt7HNKZmUSn+Sth/0hqBUtN7Fu/jzNlW8VeMT2RRqHTq74ZEv1hLTMTRb7aJPzMg3djQQXTklwu6oXv6668IeGLSpAqoNrW1qmuezIrl+7/yZef9JOJMQgVlQFrrp+i9EyuX3yxjhKEHpvnHpEcwPChYnT0lokB1/cNI1a3x554RI2tj70hxYB9Wtq3ek8cgMlfNi+bljMVklf9yTKSpoggPmCZi0MAA29l0CA/eb4E4UM63QZhlO9uIcreJL5tODHAL0assBFu33NxGIcI1Yb/lCG2Dw3spkG3w1ZseoexDCKeSjSjj7EgAYM9uBl+TpR/D91V2v9dc3npSaMqXgQjmQuXjG8na7IL0T+B3DSpZBTGLYUrcZGJSkwKP13OlF+APTfZIufGRllHCC9Z2TXI4BO6pjaIx5FqE5FZlmKOalCmANoVQvrqEryQHAVFBtvfJ00ZnHX/81HwWWCxWsnVfjWkEG9JxeddBEYWYUvHzuDz3BlSEqDb193+Z3gcF/3zPbtFg/vlU3XP2K1F0U8KqZHWX1TR/9S5oN6wevA/XEjXoyUjhhuSAn8U1JyYM0vzvwcvtd00t9BHF 4vcUH6CG Jw27GkMtt0HGQeZIPA4bJAvU9mEK7DK5Q3YKxXF9QzhemS6H9hKHXn8ZTEvJeEQByUyoTIDQAmgslBiT6AvaUZN71JquJ160kOn7f2eN81l1S9gT2f6se1RiAI11m+zXjyU9KRg/F/C1/wdBcvavPyhfwunb36J2SUwTMTAz3jxpV6G+sqrtwUSZ4D2sdHSYR0k33s7JEp1Kpxg/Uuify/O3pDjEzV7ygQQydJ/yK/G3cKuTTCszBfbvcD5FDIcRW92HFuW7kcWXAjf8dwY/mgnfR91ESPSSGIekoS+qdumhDR0NHkSA2jLVmZqJXhpVeIEXGrjvesikWUPVr6RPhoVpfMpcAB7hhJyMm5AA19T6W0BvgLq19feK0c7diaQ/IXg9RZ3e1f4YdpvR84uhsPg8Y/UCHpJ0WKL9mBI654aywdYYNbMxD1GN1v6hRuBwp6+RTW75/2aWM6mL9o6MSO3UVJVZCnmTc2HgQOf9LwEeZSRn7OEgyGFI1FpoGORnvvj5V 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: List-Subscribe: List-Unsubscribe: On Thu, Jan 23, 2025 at 11:37:21AM +0100, Vlastimil Babka wrote: > kvfree_rcu() is batched for better performance except on TINY_RCU, which > is a simple implementation for small UP systems. Similarly SLUB_TINY is > an option intended for small systems, whether or not used together with > TINY_RCU. In case SLUB_TINY is used with !TINY_RCU, it makes arguably > sense to not do the batching and limit the memory footprint. It's also > suboptimal to have RCU-specific #ifdefs in slab code. > > With that, add CONFIG_KFREE_RCU_BATCHED to determine whether batching > kvfree_rcu() implementation is used. It is not set by a user prompt, but > enabled by default and disabled in case TINY_RCU or SLUB_TINY are > enabled. > > Use the new config for #ifdef's in slab code and extend their scope to > cover all code used by the batched kvfree_rcu(). For example there's no > need to perform kvfree_rcu_init() if the batching is disabled. > > Signed-off-by: Vlastimil Babka > --- > include/linux/slab.h | 2 +- > mm/Kconfig | 4 ++++ > mm/slab_common.c | 45 +++++++++++++++++++++++++-------------------- > 3 files changed, 30 insertions(+), 21 deletions(-) > > diff --git a/include/linux/slab.h b/include/linux/slab.h > index bcc62e5656c35c6a3f4caf26fb33d7447dead39a..9faf33734a8eee2425b90e679c0457ab459422a3 100644 > --- a/include/linux/slab.h > +++ b/include/linux/slab.h > @@ -1083,7 +1083,7 @@ extern void kvfree_sensitive(const void *addr, size_t len); > > unsigned int kmem_cache_size(struct kmem_cache *s); > > -#ifdef CONFIG_TINY_RCU > +#ifndef CONFIG_KFREE_RCU_BATCHED > static inline void kvfree_rcu_barrier(void) > { > rcu_barrier(); > diff --git a/mm/Kconfig b/mm/Kconfig > index 84000b01680869801a10f56f06d0c43d6521a8d2..e513308a4aed640ee556ecb5793c7f3f195bbcae 100644 > --- a/mm/Kconfig > +++ b/mm/Kconfig > @@ -242,6 +242,10 @@ menu "Slab allocator options" > config SLUB > def_bool y > > +config KFREE_RCU_BATCHED > + def_bool y > + depends on !SLUB_TINY && !TINY_RCU > + > config SLUB_TINY > bool "Configure for minimal memory footprint" > depends on EXPERT > diff --git a/mm/slab_common.c b/mm/slab_common.c > index f13d2c901daf1419993620459fbd5845eecb85f1..9f6d66313afc6684bdc0f32908fe01c83c60f283 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -1284,6 +1284,28 @@ EXPORT_TRACEPOINT_SYMBOL(kmem_cache_alloc); > EXPORT_TRACEPOINT_SYMBOL(kfree); > EXPORT_TRACEPOINT_SYMBOL(kmem_cache_free); > > +#ifndef CONFIG_KFREE_RCU_BATCHED > + > +void kvfree_call_rcu(struct rcu_head *head, void *ptr) > +{ > + if (head) { > + kasan_record_aux_stack_noalloc(ptr); > + call_rcu(head, kvfree_rcu_cb); > + return; > + } > + > + // kvfree_rcu(one_arg) call. > + might_sleep(); > + synchronize_rcu(); > + kvfree(ptr); > +} > + > +void __init kvfree_rcu_init(void) > +{ > +} > + > +#else /* CONFIG_KFREE_RCU_BATCHED */ > + > /* > * This rcu parameter is runtime-read-only. It reflects > * a minimum allowed number of objects which can be cached > @@ -1858,24 +1880,6 @@ add_ptr_to_bulk_krc_lock(struct kfree_rcu_cpu **krcp, > return true; > } > > -#ifdef CONFIG_TINY_RCU > - > -void kvfree_call_rcu(struct rcu_head *head, void *ptr) > -{ > - if (head) { > - kasan_record_aux_stack_noalloc(ptr); > - call_rcu(head, kvfree_rcu_cb); > - return; > - } > - > - // kvfree_rcu(one_arg) call. > - might_sleep(); > - synchronize_rcu(); > - kvfree(ptr); > -} > - > -#else /* !CONFIG_TINY_RCU */ > - > static enum hrtimer_restart > schedule_page_work_fn(struct hrtimer *t) > { > @@ -2084,8 +2088,6 @@ void kvfree_rcu_barrier(void) > } > EXPORT_SYMBOL_GPL(kvfree_rcu_barrier); > > -#endif /* !CONFIG_TINY_RCU */ > - > static unsigned long > kfree_rcu_shrink_count(struct shrinker *shrink, struct shrink_control *sc) > { > @@ -2175,3 +2177,6 @@ void __init kvfree_rcu_init(void) > > shrinker_register(kfree_rcu_shrinker); > } > + > +#endif /* CONFIG_KFREE_RCU_BATCHED */ > + > > -- > 2.48.1 > Reviewed-by: Uladzislau Rezki (Sony) A small nit: CONFIG_KVFREE_RCU_BATCHED? -- Uladzislau Rezki