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 A4237C63798 for ; Wed, 28 Aug 2024 19:42:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3ABB36B0085; Wed, 28 Aug 2024 15:42:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 35BF06B0088; Wed, 28 Aug 2024 15:42:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1FC366B0089; Wed, 28 Aug 2024 15:42:45 -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 021136B0085 for ; Wed, 28 Aug 2024 15:42:44 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id A9B85160708 for ; Wed, 28 Aug 2024 19:42:44 +0000 (UTC) X-FDA: 82502676648.25.51F30D1 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) by imf22.hostedemail.com (Postfix) with ESMTP id BE341C0014 for ; Wed, 28 Aug 2024 19:42:42 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=he87yzRf; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf22.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.49 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724874064; 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=XYxxPvPoeqG3UbrzSs+hI/pT48jtLhwVkJrK0KmWMu8=; b=qGWdOOPRXbbf0C9AkYVL6JinkillXazMTDIPoD3rMcyekCvL5SDfssZmcgB1g0KjyjiPl2 rrN69QglQqde1s+kCoC40S50cmgIqFP0/lXeS/Lva0lERO8QNu5XRU7arzHnutEK1mmG2s 53vI8klX5Sn0kkshQqTa/kraM/UuVsY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724874064; a=rsa-sha256; cv=none; b=AbbuhGqj12d8zu+93HCo/IEJp/2sML/wi4d+v0c3/KLVa698aafJISUhvgh4waZvOH4uDN ZjyGHu+3VoosZvmlVM7uQKHYUkGPjYyNBQBthUCqRCSoSaxdR2+7gq6UrTicEVnoapAEcA yTs0GVbKKaZutPQgPmVRJhveBpuA3Pg= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=he87yzRf; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf22.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.49 as permitted sender) smtp.mailfrom=yosryahmed@google.com Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-53346132348so8533907e87.2 for ; Wed, 28 Aug 2024 12:42:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1724874161; x=1725478961; 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=XYxxPvPoeqG3UbrzSs+hI/pT48jtLhwVkJrK0KmWMu8=; b=he87yzRfFzZvEO3buBV/JaKqK0JVdmUzsNYu0w4oOKFdFgW9HPclTQ2Hfx+bYXH1Cf yQH+jUCGSQlMtNLhRrQboEZ7C8dxu+TiB4jW7PwQ7RtLvg6OELVoz7zTNTa4I2UN1ULz uwpXtTCcJo1FrZQOdA76STeQMF4FLBpmE1HZrkM0rUsPfTkVhjN3cJM5/L3B6Zle0n+h evPOajSWxP4LKlK+ixusMJ2UZfLZHcq1uUSJYwhe6mPPoQTHczhswHvccNwrRzdjRRpy +W3qe3YkC4BujbW/MjBr0y8cyYuyzuKWkit+4gD4rA8tg8ec2UThehl6iLRNKouY0eFX tHsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724874161; x=1725478961; 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=XYxxPvPoeqG3UbrzSs+hI/pT48jtLhwVkJrK0KmWMu8=; b=mFnq4Q9idToXdVJ6a7H7lK1ACX8uGJbzsNfk2EwThTGU0v7N53YQI2dbWNZuY04u8Q 8wP9u+9qg7dmJdCXcoRVGnPagcJQpM4brb4wvRCqVYuY44FNxby+PMSGZja/nbxiHM40 QuIH3ZaCBajFUkH3IG5VldZ9GRK+2hkcY6mzuZReU8P6gfVFSHfkMGrzzxumiBIYjWDT 0JD76l82r+I3gXzpZeJhIRpWckFlj8ieQq3+88RGY1zgkVZg12U12vsai4FAMSZUyWcT j6w9G6ORgwcBldEhcVh1i/xOXmKP4Ppe3rAnPjDCdsKtOSpU0xFZHZ2kOLj3HvOVu1JO NUYA== X-Forwarded-Encrypted: i=1; AJvYcCXlRT0W+sg+hnWPxAadrZseON3cze423qKf7/+Pm7VzLw3R57jj0rdR0xHtCH77N+5Ct7oyYsDeHw==@kvack.org X-Gm-Message-State: AOJu0YzrsW0yoO+b5rKvfrBo9vxx6iUdp62OVBqVBdbyhIHZG5Q0Z3Nm hpmPUW74Pkc86xHPbIVU0kRjD0eItYI7opGjvQruRrOVxl/m6dq1Mishcoqx9FeJv5IruI8mMhY NCQlpkwEw3H1GS8dr7kZ7DNN/M1w2hqqsnZD7 X-Google-Smtp-Source: AGHT+IHVBKj0gkQMxydj+pmHF8KhrUkMDl4LVeZT6YLJm4E2jrO8UA2WAlyIoAwfI9rEvm7k6H5Ce6NeBGCzBafM8OM= X-Received: by 2002:a05:6512:3b8c:b0:52c:c5c4:43d2 with SMTP id 2adb3069b0e04-5353e5b81f3mr214494e87.47.1724874159898; Wed, 28 Aug 2024 12:42:39 -0700 (PDT) MIME-Version: 1.0 References: <20240827235228.1591842-1-shakeel.butt@linux.dev> In-Reply-To: From: Yosry Ahmed Date: Wed, 28 Aug 2024 12:42:02 -0700 Message-ID: Subject: Re: [PATCH v2] memcg: add charging of already allocated slab objects To: Shakeel Butt Cc: Andrew Morton , Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Vlastimil Babka , David Rientjes , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Eric Dumazet , "David S . Miller" , Jakub Kicinski , Paolo Abeni , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Meta kernel team , cgroups@vger.kernel.org, netdev@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: BE341C0014 X-Stat-Signature: ysykmc7bzjd5m155pco3dqhbkpk4x17y X-Rspam-User: X-HE-Tag: 1724874162-669907 X-HE-Meta: U2FsdGVkX19RQGkCPJjNyB5gU1eKDnDfwDwZOIq2aEcdkw80nw4cn48fMcfnpH5kRd/4ORLXoRuPYZPmf91TNtdkmLoGB0kdccl489xHlLIxqT63FfXcyQsTdQONT9xr4YUd33CdteU3zpvMsO2xemC599x1XS5Tc+A3EZxBYrXDfPa1l3R+8shSPiZUQfi9WWyIsZqo8aWYRZHH1pM+lN/ABDciF+Qy29QprG5Q0KsfW6qZnDICm+B/Ow7Lf2zzevhAheMI2Cjsjmt9w/LZrCtHAEnf1YJ4tHDLgKCPJH4IRfRl9gPcCRihC8ebS/580T2flST1YFY8TeiuNtC02SMkg3PtyccflHBcnSuvCbuCOPCoce0V9o6jXR18jyIiQ92ScxLiCTQb2DCHuGNfxlJzol1lzeybDP/qc7ZLKYosG7F1gR/mdjGUtHEjWjAbGNx77t9l9shEd3NNSZlZIiNodiSmYi0ACJUvSo2k5BEBNFBkfO/msZOznK8ew7g/fvCIKAuKDBJHxb1u67Un5y3JMD1MrOtfwuRptCAop/uSkJUanREwgfwq/gaUvkZCopx4Ubgf1bFMRogi8k8SILWpee2Lmtoq+rPYTGoZV98bQUJLIwpzKZRhZsQtnaDeQI5ueMMgjTnKiNBvCXwAip9+KSja2CTLQ3sUpnu0vDYdmj/mCcmfvCjg1vQaeVEkWXLBQRNMN8xNFmcqi/rkLk2nO85ov8Kx+D4o0UpxYNrTzV1/BFnKUiVGa7MFNP+pns7a0OmQAhLXHbOTub2cz58CI2kZxqbdUHJuY6h+YGEd8pRzm8jqlTLOHwL0kxtyXDzL5h67L5281a9qjWwfVg9hqFd2TK3ekfr8Oi0GNF/J3hPFcx8S7ateRF8xwDUuxSK2hQqyg5bxw6FM/RATdNdMeDeCyKbcnpl0/gtu/JLe3TjbskCXsQcnslqzcAdDo2YwsvCuzNiq1ma8jwK okP8/MYy GUarMfwsdv7n39nD8QPbuNdeMs2OaLqC3ZMP2ffWMsjiTicqFBzD7UAHHVpXJHC3Vvq9x6m39Gh1XwTrwk6pcGXWr1NxzwnjTO1Ep6Qul2l+WgWrydrtVJRBGlaiMyjBN9QqOXNZZqiZH5O7F+G4Gwk0/2TJvGtygQq4a+gfP9qexeNk2OkpFLUwNyHwMEp/JOaHme1SUjksmhxTtMo+tSOmyf7d4QXFuHwt26DN2uClrUk5yH6rwQzvqbbZ0JXAQJFCAlw65py0APFA= 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 Wed, Aug 28, 2024 at 12:14=E2=80=AFPM Shakeel Butt wrote: > > On Tue, Aug 27, 2024 at 05:34:24PM GMT, Yosry Ahmed wrote: > > On Tue, Aug 27, 2024 at 4:52=E2=80=AFPM Shakeel Butt wrote: > [...] > > > + > > > +#define KMALLOC_TYPE (SLAB_KMALLOC | SLAB_CACHE_DMA | \ > > > + SLAB_ACCOUNT | SLAB_RECLAIM_ACCOUNT) > > > + > > > +static __fastpath_inline > > > +bool memcg_slab_post_charge(void *p, gfp_t flags) > > > +{ > > > + struct slabobj_ext *slab_exts; > > > + struct kmem_cache *s; > > > + struct folio *folio; > > > + struct slab *slab; > > > + unsigned long off; > > > + > > > + folio =3D virt_to_folio(p); > > > + if (!folio_test_slab(folio)) { > > > + return __memcg_kmem_charge_page(folio_page(folio, 0),= flags, > > > + folio_order(folio)) = =3D=3D 0; > > > > Will this charge the folio again if it was already charged? It seems > > like we avoid this for already charged slab objects below but not > > here. > > > > Thanks for catchig this. It's an easy fix and will do in v3. > > > > + } > > > + > > > + slab =3D folio_slab(folio); > > > + s =3D slab->slab_cache; > > > + > > > + /* Ignore KMALLOC_NORMAL cache to avoid circular dependency. = */ > > > + if ((s->flags & KMALLOC_TYPE) =3D=3D SLAB_KMALLOC) > > > + return true; > > > > Would it be clearer to check if the slab cache is one of > > kmalloc_caches[KMALLOC_NORMAL]? This should be doable by comparing the > > address of the slab cache with the addresses of > > kmalloc_cache[KMALLOC_NORMAL] (perhaps in a helper). I need to refer > > to your reply to Roman to understand why this works. > > > > Do you mean looping over kmalloc_caches[KMALLOC_NORMAL] and comparing > the given slab cache address? Nah man why do long loop of pointer > comparisons when we can simply check the flag of the given kmem cache. > Also this array will increase with the recent proposed random kmalloc > caches. Oh I thought kmalloc_caches[KMALLOC_NORMAL] is an array of the actual struct kmem_cache objects, so I thought we can just check if: s >=3D kmalloc_caches[KMALLOC_NORMAL][0] && s >=3D kmalloc_caches[KMALLOC_NORMAL][LAST_INDEX] I just realized it's an array of pointers, so we would need to loop and compare them. I still find the flags comparisons unclear and not very future-proof tbh. I think we can just store the type in struct kmem_cache? I think there are multiple holes there.