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 53B97C369AB for ; Tue, 15 Apr 2025 17:15:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE1C228007D; Tue, 15 Apr 2025 13:15:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B68E6280064; Tue, 15 Apr 2025 13:15:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9E23C28007D; Tue, 15 Apr 2025 13:15:50 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7F2D3280064 for ; Tue, 15 Apr 2025 13:15:50 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id F3E07AC55E for ; Tue, 15 Apr 2025 17:15:50 +0000 (UTC) X-FDA: 83336930460.13.7114FB6 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by imf14.hostedemail.com (Postfix) with ESMTP id C4B43100011 for ; Tue, 15 Apr 2025 17:15:48 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=IZtaf0ON; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf14.hostedemail.com: domain of mkoutny@suse.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=mkoutny@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744737349; a=rsa-sha256; cv=none; b=0GBl8QBJtsnF0xs0+DVXTty5ezrBGhsG6JEWNt+o8QAybNeP5jMJj3FCs3T2bcIoxQ9KhQ zTWGxwigsbR/1M03IOnPe7tYrdsUnOGDRRk1XQdWsaj54Jg5p0rlQogurdh5+Rm1xb3JhM k73B8yF0tpzJ8cmbTXEv7oXvH3DV1i8= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=IZtaf0ON; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf14.hostedemail.com: domain of mkoutny@suse.com designates 209.85.221.53 as permitted sender) smtp.mailfrom=mkoutny@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744737349; 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=2JyKYwEYcJ4/dTWg3WGVRIKX7PyHNNzlpyn8DZMXNLU=; b=Yx6/pGtBBf4n+db9p32BMGCsaz5H34ZnRaBOPbdS1VeNLzIIrL3+dgstGFpNiby4tmrZYa GW13jT6udEesZ7eAQNiwpNl/WBZ8Z3qUTOd50WJPiVT+XnDkoGvug7aZHP3IR+q2++2Rvs QHkuJPhsjOYR3sp3m7+1QbZgLwsvRU0= Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-39ac9aea656so5903481f8f.3 for ; Tue, 15 Apr 2025 10:15:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1744737347; x=1745342147; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=2JyKYwEYcJ4/dTWg3WGVRIKX7PyHNNzlpyn8DZMXNLU=; b=IZtaf0ONuSVfzevhFgNg9Co2e5A4xb/YjuAr1Si00ByxpdxnWliB+WM2y6mvi/Qhdg KH91xIufX1+9TVjTiN+GEK999+JVuzvXahcFuFgjYVo9ACcLzMdlHEOsvdfonGswXBoW yVohYj8PmNwIWcxVu5uz4VKYlAQeLRTYhnLGm8vtVd/7CAsxKsMetvVs2qfwrOMt8xDR 1NH0Q1puEee1anONIxaQG57Y3yceiwiT8l9Z/dt0FuGdzqTLEs0FQoGoKCk19U35AzIR 6/X/VBcv5VzOZ66EYR/sFbVmhVAkikyHNMMAUc0+tiBbUBPysz8/wmG/10kWQoyjjDo4 HHvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744737347; x=1745342147; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2JyKYwEYcJ4/dTWg3WGVRIKX7PyHNNzlpyn8DZMXNLU=; b=ZDD8zITXRnbsSPLwBX77OPJui4PchchihjcIJ42OaHyY2j7ZxRIAGPA+4xY5qJcOls /1bfWxdzVCL3I+LU9FoEO2cjQYrtrQxGrKCjsWyUXstMjIhYjRtYkazT/UNfK6rt9QmL SZsLCJyOspfPql9uUoDeGuG58TMGuvZaGNNCzGs18QDNFTVzt5C2u4gbRxiS6d7x2FKJ Zg/SN5cs3NFX+OSWl+Ltsme862IuVbTgbvI3EKq3KZL1KqsUf6x6BDWGEk3ArEc5wjSG 5ktc+d9vr4ncSxxVdoSfmpD22BM/a7Uz187zly6BIjLDdhnX04KLEAn+iaGBz2qjVC5M NgBA== X-Forwarded-Encrypted: i=1; AJvYcCWRLMEIqqfAEsPBf6peBBbbqgsYnToICpYuS6Kp7WArXr9TKXSMJTLrtZRskWh/0lZvJ8DQXtqHnw==@kvack.org X-Gm-Message-State: AOJu0YyxURZEa3qJuCKPYSA0x5x/SMfu72LugLylZfIGCqk8o3KquxrN yJnzgJYYx8zTmrr4tzSRLW+EUJm7EsVziVqdiQT1h1IFCq3AmF/gPoopJlPM0fo= X-Gm-Gg: ASbGncuHufcuu6OYac3ciiEeTqivlqUm+EwCxMBRqoTlAOUbL7mo8q/ZhsRlvpzhAJO fU1otfNRAquFuBKN0vjnXOSgA13eNHSSWLAouDXARIGHDt/gqCbTFybyo7WLG6w2xUxozBWjg+t MzmlOVYH6LJ235pY25fbhIju+pWc2Y9+ymNZ/L+WLNIALPGbav2YkuIgOKjrGJwtamyfpSzZQ60 saNYBQqfKElAJTFtymcYfOvwfmGn80NKcX/rxAMfZeV7KJNxnkymLiH6LhKrlPg3kUN2fk095Rt 4/P7I/8SxJ/t38EYinLd1UVpMDs1O7RdndZOqOxKJvU= X-Google-Smtp-Source: AGHT+IEug3noF7TDDxvScRmm08BUgJDWetNXWEt+gsO9BPiipq7mHBr4P9Dqj0LFuIisoG9oaUpmeQ== X-Received: by 2002:a5d:598e:0:b0:39e:cbf2:4344 with SMTP id ffacd0b85a97d-39ee2738765mr257790f8f.4.1744737347078; Tue, 15 Apr 2025 10:15:47 -0700 (PDT) Received: from blackdock.suse.cz ([193.86.92.181]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43f233c8219sm213001185e9.21.2025.04.15.10.15.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 15 Apr 2025 10:15:46 -0700 (PDT) Date: Tue, 15 Apr 2025 19:15:45 +0200 From: Michal =?utf-8?Q?Koutn=C3=BD?= To: JP Kobryn Cc: tj@kernel.org, shakeel.butt@linux.dev, yosryahmed@google.com, hannes@cmpxchg.org, akpm@linux-foundation.org, linux-mm@kvack.org, cgroups@vger.kernel.org, kernel-team@meta.com Subject: Re: [PATCH v4 4/5] cgroup: use separate rstat trees for each subsystem Message-ID: <2llytbsvkathgttzutwmrm2zwajls74p4eixxx3jyncawe5jfe@og3vps4y2tnc> References: <20250404011050.121777-1-inwardvessel@gmail.com> <20250404011050.121777-5-inwardvessel@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="oyiutkqthgkq6eto" Content-Disposition: inline In-Reply-To: <20250404011050.121777-5-inwardvessel@gmail.com> X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: C4B43100011 X-Stat-Signature: d6p5z7recyiu484cghhq7zhxj5hafe81 X-Rspam-User: X-HE-Tag: 1744737348-569753 X-HE-Meta: U2FsdGVkX1+KLVOtYwJCidT0JlRpQp3i2A8Vz/NHy4NpyxTXIWp6RXukSfKHebaODY916ztmtKhV0zIskrthrwGEKXFyXOMXOTSwTYr3A85VFVHSIWK9Qa9wCQkhpNBxD8kMlhLztzFoX2MALAdu2V0GVFK93kYqB2bGimp44Yv+Kf10FjimS4oBREtlofgQA+XRtLCUUaProVFCSgf9lEPfNk02AEIEGmFdCFENax66MAS8ueBmocq+cGFJX3Amik9VK2hoARQlSqVNt3zyBUzUErca8XSbTd5W9iSNr3u4vViaQqa5fTrC5O0xd2454HgexKGWAEyUUSldd5G+ZAsxcyR0nkd2cm6Ms8Fq4p+YxFQ9WJiQrwRIrJeXLRbgpoW+XayLboElc7eAVejIcfG8+MKCjv0nxwxUwrQu57CNj9/kl/ph6m1ZNVHO5zaSIsgIrlYRMmb6MvqS099mDwR1/tC7+Y1+KOKuxgjci15Ne1DvPsWcgLVsefOF+1loT2ba73Dc+QuJZYciYBnbtfOhAENjNqpCdBH4xjRmwDIVLQLGCPiJi5uaMwwzwk7A2OBuD1oYxS5MMXOlSgwMhNzmXp+UG26fMu2fMR9/cEhqOL7Nk9tMUN7Z+S9ic+4UM8GeqyMb70d8ODB1kzP9vj00WtH7CPmgXNGlVcWoUxtwIA1LRCwm9zwuSDg/Ei3gIozuiwz04Z4NYUsmLSr1EbtiAUKM2GMmR6kJ8NOBPzqxIUVR1CUOo9hQKsMnwUF1yoGbC81bV5SQkGRVKfEN1OEgHHJCkYmfvQqrWzZGUCB/y3YVaHx6nwNpPwTeTrbujuAZRDakd3uEGvfviGe408oiBt5NvJ93BEnPD6dLCq43pjMxdLTn2flCb4+7mKszsdDRPkdvU56X4dP3RV47XwWr8n77NYNS+EZI26FnwZjcX50d3J12Gx9C7ufZCO7US1lPF5uq8iLZmmH02ux rCs4UmU1 hR+LxHBr+IXBKDDHK0C+QF3QMuWcesDpBSqDHRF/q2BLY3CJvfF/5AK39vO7aLUZ959Sks4JkdlzLaf+pyqnagTETdhl2VC4VfG2JsGpjjKzlHzr93G/0gdx0W6pPBb5cTVg4anmMBgtwzbNXpYQL/gbsyqCdmS0hV5vt9RfWwJcH0hYM7ZdhoIpyNedib4X80rDzwVWuP95kBOezKyh4JLGC6ziqjTBrZAJQpPMWe5lO9IRdjlMi8WPxPHIFrhC+xEUC6lONUyVBsX2wMovGPnLHE+l/dRwgvm+6zNLD3wuGpQzNG/WlNACZ6sNXcpj6oLsMWvBVZz1HlJh/Kowilks+QVQHJPp6avmpIkRTW3uxvyV4jHlaaG+xhXn8iw7ae//k3cUlrxO0XrW0AqNW+OVjeointkypGXJLixWL2yZwDjrmu3PJnzxp/UsdfeGxQa8/dIbgRMX7eDg= 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: --oyiutkqthgkq6eto Content-Type: text/plain; protected-headers=v1; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Subject: Re: [PATCH v4 4/5] cgroup: use separate rstat trees for each subsystem MIME-Version: 1.0 On Thu, Apr 03, 2025 at 06:10:49PM -0700, JP Kobryn wrote: > --- a/kernel/cgroup/cgroup.c > +++ b/kernel/cgroup/cgroup.c =2E.. > @@ -5425,6 +5417,9 @@ static void css_free_rwork_fn(struct work_struct *w= ork) > struct cgroup_subsys_state *parent =3D css->parent; > int id =3D css->id; > =20 > + if (ss->css_rstat_flush) > + css_rstat_exit(css); > + It should be safe to call this unguarded (see also my comment below at css_rstat_flush()). > ss->css_free(css); > cgroup_idr_remove(&ss->css_idr, id); > cgroup_put(cgrp); > @@ -5477,11 +5472,8 @@ static void css_release_work_fn(struct work_struct= *work) > if (ss) { > struct cgroup *parent_cgrp; > =20 > - /* css release path */ > - if (!list_empty(&css->rstat_css_node)) { > + if (ss->css_rstat_flush) > css_rstat_flush(css); > - list_del_rcu(&css->rstat_css_node); > - } Ditto. > __bpf_kfunc void css_rstat_flush(struct cgroup_subsys_state *css) > { > - struct cgroup *cgrp =3D css->cgroup; > int cpu; > =20 > might_sleep(); > for_each_possible_cpu(cpu) { > - struct cgroup *pos; > + struct cgroup_subsys_state *pos; > =20 > /* Reacquire for each CPU to avoid disabling IRQs too long */ > __css_rstat_lock(css, cpu); > - pos =3D cgroup_rstat_updated_list(cgrp, cpu); > + pos =3D css_rstat_updated_list(css, cpu); > for (; pos; pos =3D pos->rstat_flush_next) { > - struct cgroup_subsys_state *css; > - > - cgroup_base_stat_flush(pos, cpu); > - bpf_rstat_flush(pos, cgroup_parent(pos), cpu); > - > - rcu_read_lock(); > - list_for_each_entry_rcu(css, &pos->rstat_css_list, > - rstat_css_node) > + if (css_is_cgroup(pos)) { > + cgroup_base_stat_flush(pos->cgroup, cpu); > + bpf_rstat_flush(pos->cgroup, > + cgroup_parent(pos->cgroup), cpu); > + } else if (pos->ss->css_rstat_flush) > css->ss->css_rstat_flush(css, cpu); These conditions -- css_is_cgroup(pos) and pos->ss->css_rstat_flush should be invariant wrt pos in the split tree, right? It's a =CE=BCoptimization but may be worth checking only once before processing the update tree? > - rcu_read_unlock(); > } > __css_rstat_unlock(css, cpu); > if (!cond_resched()) > @@ -362,29 +359,38 @@ int css_rstat_init(struct cgroup_subsys_state *css) > struct cgroup *cgrp =3D css->cgroup; > int cpu; > =20 > - /* the root cgrp has rstat_cpu preallocated */ > - if (!cgrp->rstat_cpu) { > - cgrp->rstat_cpu =3D alloc_percpu(struct cgroup_rstat_cpu); > - if (!cgrp->rstat_cpu) > - return -ENOMEM; > + /* the root cgrp has rstat_base_cpu preallocated */ > + if (css_is_cgroup(css)) { > + if (!cgrp->rstat_base_cpu) { > + cgrp->rstat_base_cpu =3D alloc_percpu(struct cgroup_rstat_base_cpu); > + if (!cgrp->rstat_base_cpu) > + return -ENOMEM; > + } > } > =20 > - if (!cgrp->rstat_base_cpu) { > - cgrp->rstat_base_cpu =3D alloc_percpu(struct cgroup_rstat_base_cpu); > - if (!cgrp->rstat_cpu) { > - free_percpu(cgrp->rstat_cpu); Thanks, Michal --oyiutkqthgkq6eto Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQTd6mfF2PbEZnpdoAkt3Wney77BSQUCZ/6UPwAKCRAt3Wney77B SXhvAP0fYzrGyul0zdsk2AKaVbEw2YFY/B409kj7aoFfU71UoQEAodZjuutxz63K x2A8PjL6VQ2o4thy8TkQqKpYLJYE6g8= =56Oo -----END PGP SIGNATURE----- --oyiutkqthgkq6eto--