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 65FECE7490C for ; Mon, 2 Oct 2023 20:12:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C835D8D000E; Mon, 2 Oct 2023 16:12:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C31B78D0003; Mon, 2 Oct 2023 16:12:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD25F8D000E; Mon, 2 Oct 2023 16:12:58 -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 9CF348D0003 for ; Mon, 2 Oct 2023 16:12:58 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7297640395 for ; Mon, 2 Oct 2023 20:12:58 +0000 (UTC) X-FDA: 81301620036.22.C06277B Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) by imf11.hostedemail.com (Postfix) with ESMTP id 71CAB4000E for ; Mon, 2 Oct 2023 20:12:56 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=e3ulK43L; spf=pass (imf11.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.177 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1696277576; 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=4ig8P4cQOGE/ZtlmRjRCjZeop9P1BTd8W7jj+VA+9aI=; b=ofZGqowYLJ+oghrhA+R86rtZYhlFAzKCRyjdnYlgzEFeRNAOmDrIriLR05i53k+tbpgyEl KAfJfosIOn6HtOMjaJvH5D8gV7dtvKEZ0A8m9I4r1+1NlYa7zXloMKTvceTqkxavWx8c6N 3ANrgvHALEIUTdzLah9Qyf7bIj4uDQk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1696277576; a=rsa-sha256; cv=none; b=QFHnrHAk8v8Elw0awJfYx69ARMUCa6ybxsDnhJHLPR7BXbdEVV96nKY0Lh51BXKexZ27I+ /3O1aSAtqMAYC5HIduBO/TuR81UrCIg8VftTq9p+Fu9LKfjc2qlrIU71dY4VUK92GHa7nq ZgI3XuQU0BgGpVdLS6oENJGIbnFGnnU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=e3ulK43L; spf=pass (imf11.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.177 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org Received: by mail-qk1-f177.google.com with SMTP id af79cd13be357-774141bb415so13044785a.3 for ; Mon, 02 Oct 2023 13:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1696277575; x=1696882375; 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=4ig8P4cQOGE/ZtlmRjRCjZeop9P1BTd8W7jj+VA+9aI=; b=e3ulK43LyTU4PxBwd9Xd+ytDpzR8syc5zl7j1DlqaxOVfXUmIdLZtCLNHCPxnExa4n qfZy18+tUCCfocSINbLkZbobSaDQ75CsckDe8McUpvXisa6fJmlSzpdzI6w5lshDAoM8 WczhfoDILDe+Q5FqZkGBVd3Doy7yIpvNHBAD0MGBoRo2ioKrrNHgHCXtCepD+5tye2k3 4Eh1HGFE5an5s5dhM8oXurmVyW7BIJQx2fmeK0pN05aJ0FbvQlVw71s3l6MyaSgNpwJv n23l5FleY+35Q3nW87rkYkKih9RHOqGSWUsRx3AF6nW1zOhfAXsmBvrzTHRCS0KjlyaD yWOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696277575; x=1696882375; 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=4ig8P4cQOGE/ZtlmRjRCjZeop9P1BTd8W7jj+VA+9aI=; b=saGXjveojvWZT0NdhwYRExyiAMwcBm+SZGi3OS2sOlfY4UrgaXs/ewuJd+ApWQX3Ez xZEIlZyhNClgx195TpWM4LUGiTSsFWxr0Aq+ooXumUk/vy3ZQW/1mwbhhKDXyhuY3YJZ hB1ggzEAtBn8to3a1f7R98fuUhYZYap5UbIcb//AZCeVIBamENYKM3oAD3WEhjuNSBVD 2drSknHDfDU/7yJIeRiD7wYOpWGd92we9qiqPacanD0yxd9XWukrfZXhylc9akIoVPMG ylOYsbir2xTWXj+aeJ0Syb1f7BCAGuA/XkhRldIfmcVMP1exuGcs1s3QPTeCBAB0Kmva Rh4w== X-Gm-Message-State: AOJu0Yzs6XNtZ1coaQuYogxXJKFGHtJasctPVpv+CBQxhtqOLaEnZsuz ttz3podeI+L3iHa8ge0b1O8rEA== X-Google-Smtp-Source: AGHT+IEQxVBvmIIyECAYi31Co1WajvJKUAwk2DEdf2g2H2l51M3wsw7tatmmX4E/BLzu5B0qPOINzA== X-Received: by 2002:a05:620a:854:b0:774:1d7f:2730 with SMTP id u20-20020a05620a085400b007741d7f2730mr10977679qku.46.1696277575439; Mon, 02 Oct 2023 13:12:55 -0700 (PDT) Received: from localhost (2603-7000-0c01-2716-3012-16a2-6bc2-2937.res6.spectrum.com. [2603:7000:c01:2716:3012:16a2:6bc2:2937]) by smtp.gmail.com with ESMTPSA id c2-20020a05620a134200b007743360b3fasm6248556qkl.34.2023.10.02.13.12.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Oct 2023 13:12:55 -0700 (PDT) Date: Mon, 2 Oct 2023 16:12:54 -0400 From: Johannes Weiner To: Roman Gushchin Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, Michal Hocko , Shakeel Butt , Muchun Song , Dennis Zhou , Andrew Morton Subject: Re: [PATCH rfc 2/5] mm: kmem: add direct objcg pointer to task_struct Message-ID: <20231002201254.GA8435@cmpxchg.org> References: <20230927150832.335132-1-roman.gushchin@linux.dev> <20230927150832.335132-3-roman.gushchin@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230927150832.335132-3-roman.gushchin@linux.dev> X-Rspamd-Queue-Id: 71CAB4000E X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: stim1rx5cn9m7enufz9oq5mwp8qbxyj3 X-HE-Tag: 1696277576-580062 X-HE-Meta: U2FsdGVkX19a9Hc+Qk0WnbxWlW2nMreuKIP7Ct88Au4einR8jeU7cgHoF+oLcSgdU9Xsd5KkgDqx2UwVyi3Erx2jKDFh6A56qi0uZdMIqh7BTJ/L3BrQ0rAk0++1/p2Msu5vVDFZVDv/o7BOey9bwDJGw62P118sBLlACOZ9uKtrSdL1luuBschYlGRpwuqouz/W5niJ6sj+IJ8FVzHgfRxAo9SoTgAhGG08lJeBrBYfbgeqTTNwLVRlKqiugFD6Upq7im0iwxb4dQeGwO9IVs248YTK4Zqw1lNDngno/mjQ8KFrIy8luHj6XR/o2O3nsMnPF/TB4PU0n3/Z9kD8xciaXiM2nD1wLs7dQEsXNRzRpHxa3fq420vCpcmjy8XA0evmCHBDRZriO81rOMfcfVCNycmWuwwy46WoN6iEiT4wh1Hamm4rSWpD06ls5oXVgG6Z2gaY5IFsSoBb0E3TeFxBA7c+rPpD9dEzkncYAZxETtHwJ5WvWE4Q19mlAJRUGQ2JK0dtJ+wRHHC7kWagN8TIUckyTI6qhi6u+gQa2DR+akQVPt/lV5n8eu7939ITni60/TemVbj5oNxY6ReMIRJxrVSZc9kk8uLL+Vd2JicjEm/cTVBP4dpD219BfeyLcEqJYA9/wGbfbC9M1H+pkXGC0pZtPSEN+UrHX5XOdVsikRLTgzxpx7zrhQ9cjHlKEVt67IY+nOzSOZSdIkWx0xkiUPZNYy0paNjns6uXk2Z2m/D493nIBCEUJzpV+R2ST9pVPq2STu8fc1Dhefpk6sciMh8yeEO21lVkjc6eDy3dSaaQW7TEiMcRlqtKqbbPEWq1CH4iBsqNsvL0buEX1aKa1zTdBnQ/00ANmfQxNIej2y9+wCZHOaNBbbK7bswxq7D7jIW12wTuEkuqNuHLKQSCjGswVnj1kQ+ftCWHf+MAN0Ce2PhmAR5hQxGW9niPgCXdrJM/H/nf/wBvkin A1CmBAgl rIhOKRDbpKl5zVSdfRYs4ig2DktBXcePD2UvY7XGWMNcie420N+pcLC0ZUcbGxe3EERl8xFbyMxrBhPA/n+0gaK1iZBILh1YdelyZLAf3W7HhPJKbIlOM874Rhw544yboQMWm0v13aRQo2qS+zf54WJDD6ceJOZw+Squb4P2VEQAIGk+EgXL35tImaFiezx33r2+MjNu3oT3VEm+vfa4A2mJzA7nFbKca9tSZ27E35F3br1Mci4FVeJKAfSuCqOC5OMWHzDEgRXve8oFIpEhSKLON0WhZeCx8HpCzJu7XRXIaJGORQRWO2ezPTkSZQZ89MEYxzIaQpId270Tg0LfILvDvgSy+9tQAqtLyo6O/+cojmCdS4IqvcWvWxX3eF3aN9WdLEi4g5dL+xcXZBSMzLULmNhO7Ce2xBrtksqXXAAjTk/fOnEfIQMYsh5gLnmITdUlk X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Sep 27, 2023 at 08:08:29AM -0700, Roman Gushchin wrote: > @@ -3001,6 +3001,47 @@ static struct obj_cgroup *__get_obj_cgroup_from_memcg(struct mem_cgroup *memcg) > return objcg; > } > > +static DEFINE_SPINLOCK(current_objcg_lock); > + > +static struct obj_cgroup *current_objcg_update(struct obj_cgroup *old) > +{ > + struct mem_cgroup *memcg; > + struct obj_cgroup *objcg; > + unsigned long flags; > + > + old = current_objcg_clear_update_flag(old); > + if (old) > + obj_cgroup_put(old); > + > + spin_lock_irqsave(¤t_objcg_lock, flags); > + rcu_read_lock(); > + memcg = mem_cgroup_from_task(current); > + for (; memcg != root_mem_cgroup; memcg = parent_mem_cgroup(memcg)) { > + objcg = rcu_dereference(memcg->objcg); > + if (objcg && obj_cgroup_tryget(objcg)) > + break; > + objcg = NULL; > + } > + rcu_read_unlock(); Can this tryget() actually fail when this is called on the current task during fork() and attach()? A cgroup cannot be offlined while there is a task in it. > @@ -6345,6 +6393,22 @@ static void mem_cgroup_move_task(void) > mem_cgroup_clear_mc(); > } > } > + > +#ifdef CONFIG_MEMCG_KMEM > +static void mem_cgroup_fork(struct task_struct *task) > +{ > + task->objcg = (struct obj_cgroup *)0x1; dup_task_struct() will copy this pointer from the old task. Would it be possible to bump the refcount here instead? That would save quite a bit of work during fork().