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 2807EC3ABB6 for ; Tue, 6 May 2025 01:51:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 75FE76B000A; Mon, 5 May 2025 21:51:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E5596B0082; Mon, 5 May 2025 21:51:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5881F6B0083; Mon, 5 May 2025 21:51:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 35FB16B000A for ; Mon, 5 May 2025 21:51:43 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id E25B08018D for ; Tue, 6 May 2025 01:51:42 +0000 (UTC) X-FDA: 83410806444.07.3E38E7C Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by imf23.hostedemail.com (Postfix) with ESMTP id 029D7140008 for ; Tue, 6 May 2025 01:51:40 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dVIh9NXk; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746496301; a=rsa-sha256; cv=none; b=vNw4BNSC5VyZRjHMVFyvD0W2TK+O3+g7yWyHvEmpkxSh8DCL7Uz3blfZgz5qZiYrsnz6NL PYigMJbThZCZKdq7tNiHjXVzvg3/YsR7qkpAkUzZI5K02QFNsAuXTOoM0Wb/tO1FmJq1Tz 4/NXTM6Z2hu6cPBT0kMrqi3EIPwRsTI= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dVIh9NXk; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of alexei.starovoitov@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=alexei.starovoitov@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746496301; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7H7lP+OfFuV82z4byYiWduCN6Aj2w+LOfoyqwUntDCY=; b=xnm+AqxWcVVJRRUWe2DgRj2drTKHOglaN8vGWRBa3XGE4VV4NPotyswriLyyKQ1U3j0DGx FplgMCLL+XzdpGq8ybUjW+wm5JtMtlyUGBLn9xsY77uR+uXIs8tHv7PusILFNtzpExcMln AiiWoGilyGNxsoVROVsUMbdYDkfG9tk= Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-39ee623fe64so5236600f8f.1 for ; Mon, 05 May 2025 18:51:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746496299; x=1747101099; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=7H7lP+OfFuV82z4byYiWduCN6Aj2w+LOfoyqwUntDCY=; b=dVIh9NXkx2XeiPKty5Ja6IYePEeFCrQbYFkOhHOE7msz0kyfWYFhDyC0WGN0ygk/PL I6jn4zd7DiZuLI4NELI6KM54b+F0VJu/8zWp2mygrODxqRsFcexTeIAM4QAu5XsLkoN7 du6kuvRqwmNZ6UUity8kmuQaRvoKVoatvL3w04EXzB1F6AmPZ1vjT0OCnx8IutnhaJwW dYW2yzBK11YJJA7Xzv6xbhDxxyqIv5UoxJIY6aQ7VOWhym9mP6RnJUWVgM/qsExnI3my oujY5M+xeyguOm1U11ST7+EC6bkaUtdM+/S048hHx4FLXi7kUfTojuIjl1Fggy4JnVYP INRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746496299; x=1747101099; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7H7lP+OfFuV82z4byYiWduCN6Aj2w+LOfoyqwUntDCY=; b=fh5IxgVKLhsa1T8XghakhbqonBvoguqHFiRMAy977H5i3Mxzo1FBl4G13sPeMUa9Xv Iko2swGrGovjdVGxXM55lsl5qYVp599KjyMdMVeVFvlW/HjyalQX/HUtKOWmxn53jFvD YIvtLXeI5WXTTBHbm2CUB4YuRsMZhA66NBoDc49PGPBs+PxTBNflBmKAf2j38zvtcpWY zQAB5eEWc0z9ZpVQggUfT8qWsDZYumiA8JoWcqhyyvek6rqtlnXuVf64vwC7Agb/kjUD 37pu3oLaOWudn7Bi95sWRup9TZckN1FtrEp859rf1SNS2lf+uHZ7quySpeVoRRplZ9MR m7cA== X-Forwarded-Encrypted: i=1; AJvYcCX4w+1d+YjdoiadC9xINS/Dq3XBDoxstLDZuuaygZq92oCvRwLPbu5t+0r8CGiXkhPRzdka00fy8w==@kvack.org X-Gm-Message-State: AOJu0YwzE/qjvNmTIgwSdsuzKC0k8fBKcUIMXH9qmWav/3fZcnLl5eM2 YtfqiTDTMPAkXparTA91YM226hPwtqT4Sx2IT5eJIHGJpBU3R9Xnp1L4HdkcNITWmrJBvlU0Cry y6lchoCKvYOnyvvQ+zw6QBV+UsYI= X-Gm-Gg: ASbGncukiUveBSw8qq84QWuHjJl5hZlhzschAIxpvy5krCeyhhsmwhuT4LVQRFVDZqA 6QN1svR6PELNY3Mntx46kBJXn/3zj7bxSBAJ+RSWpf0SECwFNOVUJ9eglUjKLwng9dZ01OChBVV t8+nHs3g45Pss5Br1BSyI8GtfwhhDJiWL7AqoiSf9cKDrLIc9ryUlQQMPO5WpW X-Google-Smtp-Source: AGHT+IFDcCZwuHXLg3cDGco1tYcZCgUrmFBpVVgyLG4uKJb2mrd62/NrCLMz72epsG6y7uMquv+fBVUBAJjORJOEVYQ= X-Received: by 2002:a05:6000:2287:b0:39c:1258:7e18 with SMTP id ffacd0b85a97d-3a0ac3eb21amr803741f8f.57.1746496299258; Mon, 05 May 2025 18:51:39 -0700 (PDT) MIME-Version: 1.0 References: <20250501032718.65476-1-alexei.starovoitov@gmail.com> <20250501032718.65476-7-alexei.starovoitov@gmail.com> In-Reply-To: From: Alexei Starovoitov Date: Mon, 5 May 2025 18:51:28 -0700 X-Gm-Features: ATxdqUETKCF09rFxYnbNd2Uigo46QCB2dDIo7qshx6pNuJyDWgxlGcta7qwz5WU Message-ID: Subject: Re: [PATCH 6/6] slab: Introduce kmalloc_nolock() and kfree_nolock(). To: Shakeel Butt Cc: bpf , linux-mm , Vlastimil Babka , Harry Yoo , Michal Hocko , Sebastian Sewior , Andrii Nakryiko , Kumar Kartikeya Dwivedi , Andrew Morton , Peter Zijlstra , Steven Rostedt , Johannes Weiner , Matthew Wilcox Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 029D7140008 X-Stat-Signature: 9uj7dxc5ygswtxwp3g9dijcnbngza9y9 X-Rspam-User: X-HE-Tag: 1746496300-178105 X-HE-Meta: U2FsdGVkX19xYKC9a7pn9WxOIrV7blDLmXrErFOts7RzaurovMOk7haBz7x8NRKK/iQUkXBZREwf80E98LN4s33PhdNGwhEaWUNV4O4uS/P5EItO3Tc0LjC4UHaRp3+/tJS2dCxtdJlP21tr0pmbwxpUdkYLRu7Wabl5I+akW2a7/I8z05ZS7Ui7LdkXA8Oi+oIPwnHRTcuBN/bvWx48NuWUn9X+tjIUlHPum8BSTZeUTdCJbsto3OZbbGsjgakRHJytm3DtPFXsveGqVrmYRK/ES7enIT9Sh0jxUKDm0nvAasOOm617BkvfF55PalrJvEO0hC7JNJ1OgBJRPhKU9i4jC6hBJejZmyEb1y6kXUBfPn1uFRARdMJR1zmofFeZ+6AUyc3d2Pxr75u6k4rI2SHMuEXqGEB9YPNEsjknWRfxBvKIh2jXFDo9IjMqZGhK0hRNMUQ1oPfCWiILLpZggVmGiNxPGQiqXaRjYLjNR71sa5clQp1BPAtppHHn2Xa6DlQsqH6r3PKAMdoL7TsYLpkm/lHA+B0unuFYcylOvlpuGBv3iN/U8OH7abtL6wimfDneqr00z4VOqd9eASBZcnsV8GBFeOewYNC7Ncw4XShw8CKMVkA797Jm67qHEw2MR/VbeFjSkNxIsKBX4VBQQl/vR6HhTdCl+YS0cXuz0EKczFflVzLldWUEgBh0yJet4pO9+w0+rMklkEbI3gKytJAV501rPQZoObuJ+/6lCRiZfoQqI+sTOfb7EvHSjYaZSojWAJs/+rVg6232I7KQrWJYW7jZdx8HSIL1OZpSDChqfgV9BfNp+FMfO2zJXOdBX3/Xax6AeOzoVle3MaGvrdVdkJODB4G2IKcN4CwoMYmDX7QD8QA9Lal5jYHN58UebwzU3PaLeqx83oiW+skz3NCIESRTqRRub9R5DPhvcfEXbucMBrYLEH4alN66VoqNqOLi7EQrhTX3E5Ub7qB xrx83LSO gaVgxC9qJFnE0HsQtGjlW3Z8ChcuRikcI/rK9HxYImyDWgSMd7MI+GEGXN2i8w63Ez7KKMs/7GMnYcmQ6kbpjLyXYp8vw7xA/PsHMnOB2mGvdweiDjbh9/wvljDySru43BMNui/WPo/C0c3S4pfkNqD1YAEnb5DB6LYHIIhLycNwQlK477i2qqAktEbzgjmdonlQtQgZeuhM20UBIEGZpePAg5BJH4lXfgP1JdmfHDOo/K38w8QrQ0y95VbbdpVt4V9ngAwfZXq47L+imBdeF8YlvuXw6iud1+dyO4KjBe+ls+camx+olLDXVnQDaw980KTng0JKzjKErxLePH3onEbK6RLXyx4q/EldrsBNZo8yCpgTjB0MBsdlxJufzrf+7ZJo5YLDivxYDCm4= 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 Mon, May 5, 2025 at 6:25=E2=80=AFPM Shakeel Butt wrote: > > > > > obj_exts[off].objcg =3D NULL; > > > > - refill_obj_stock(objcg, obj_size, true, -obj_size, > > > > - slab_pgdat(slab), cache_vmstat_idx(s= )); > > > > + if (unlikely(lock_held)) { > > > > + atomic_add(obj_size, &objcg->nr_charged_bytes= ); > > > > > > objcg->nr_charged_bytes is stats ignorant and the relevant stats need= to > > > be updated before putting stuff into it. > > > > I'm not following. > > It's functionally equivalent to refill_obj_stock() without > > __account_obj_stock(). > > And the stats are not ignored. > > The next __memcg_slab_free_hook() from good context will update > > them. It's only a tiny delay in update. > > I don't see why it's an issue. > > For the slab object of size obj_size which is being freed here, we need > to update NR_SLAB_RECLAIMABLE_B or NR_SLAB_UNRECLAIMABLE_B stat for the > corresponding objcg by the amount of obj_size. If we don't call > __account_obj_stock() here we will loose the context and information to > update these stats later. Lose context? pgdat has to match objcg, so I don't think we lose anything. Later refill_obj_stock() will take objcg->nr_charged_bytes and apply to appropriate NR_SLAB_[UN]RECLAIMABLE_B. The patch introduces a delay in update to stats. I still think it's correct, but I agree it's harder to reason about it, since stats may not reflect the real numbers at that very instance. But seeing how rstat flush is periodic and racy too I don't see how it's a problem in practice. > > The css_rstat_updated() is the new name of cgroup_rstat_updated() and it > is only a piece of the puzzle. My plan is to memcg stats reentrant which > would allow to call __account_obj_stock (or whatever new name would be) > in nmi context and then comsume_obj_stock() and refill_obj_stock() would > work very similar to consume_stock() and refill_stock(). > > Please give me couple of days and I can share the full RFC of the memcg > side. Sure thing. I don't insist on this particular way of charge/uncharge. Sounds like I should drop mm/memcontrol.c bits, since your approach will address the same re-entrance issue but in a more synchronous (easier to reason about) way. Thanks!