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 84E16E77188 for ; Mon, 6 Jan 2025 14:52:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1BDE26B0093; Mon, 6 Jan 2025 09:52:59 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 16E0D6B0096; Mon, 6 Jan 2025 09:52:59 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0356D6B009A; Mon, 6 Jan 2025 09:52:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D781F6B0093 for ; Mon, 6 Jan 2025 09:52:58 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 93F92161643 for ; Mon, 6 Jan 2025 14:52:58 +0000 (UTC) X-FDA: 82977319236.19.4C6B255 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by imf10.hostedemail.com (Postfix) with ESMTP id 8F0E0C0005 for ; Mon, 6 Jan 2025 14:52:56 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GVElnRCt; spf=pass (imf10.hostedemail.com: domain of nadav.amit@gmail.com designates 209.85.218.50 as permitted sender) smtp.mailfrom=nadav.amit@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=1736175176; 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=D3lm+rr40xG7Vmc6rpPCsgkUiTEzw9Bvx3oilUcqvzM=; b=fek3FugxHwZaTb5gkh3+NNdYHAG+w/NkAexHwTlio3TlqgZ1xtDFkrVVkFR6oqLiVlY6hx IuKE6S/s4PaY14qDCNuyCZ4/VISscb/cHauDxOzlhYEMwmXoIbo+A1qZk2XBrS02He8+RF bTDC13lO4Cw8BJba6NrI1wTzEorrZZo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736175176; a=rsa-sha256; cv=none; b=RuWm6JBNjpHyWpUCpkHf2jwXSfSPHP3ha6zRV44e8EeHfaXflTUGK+xFRZu2ZfWNgc/dqO nVgwEp0jIlxsrS/IhTkmmDv46BqHY1XRMWPyZzJ5QzQaD8unS9FCxt1elUx+rYqX792q0b mDz9scEYOBtlFCscgiW5CAbJ4oUc2+M= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GVElnRCt; spf=pass (imf10.hostedemail.com: domain of nadav.amit@gmail.com designates 209.85.218.50 as permitted sender) smtp.mailfrom=nadav.amit@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-aa679ad4265so2835101966b.0 for ; Mon, 06 Jan 2025 06:52:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736175175; x=1736779975; darn=kvack.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=D3lm+rr40xG7Vmc6rpPCsgkUiTEzw9Bvx3oilUcqvzM=; b=GVElnRCtR5GACK0pPz30vrnY3hgmXtWElCFGsvkc2pV4n76bwR88Gy1WaI2vUojC1w QWULWgaMqjWAdG2oS1HLMVpEkH4ck01vtvI3Xtq7z4RK0ktpxMkk2fPyw51Icd5lkm8d BUEHY1HWakGLNU6+SIiSVWFjYNnebD7W6kocVLqdQVmgNjlbd5tyNrat04B88xsF7iXi esUuil6zTnFB8PN6oQ7Ro2NbffrLn7xjSN3C66dOB5LpYdJKS1VrHDc0B7EWoFOkP0v2 41jIQxH1hLUrXXha6oSlx+VNG2n5ICaCVGIC+TkbCA7VdwrEjtMJjBTTLwxfnv1JM3Jt oUhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736175175; x=1736779975; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=D3lm+rr40xG7Vmc6rpPCsgkUiTEzw9Bvx3oilUcqvzM=; b=fAp7FeJdMP9qYjS3NusrtcL36sFWr3v+dRakQ41LHqV8TSWwg0SEKW+PUZZnBYpXgX l7B4+AM0Ob9Bz7YfYmnaybI5dTiqRnK8CnSlvviDb3yggH92XARCD08K1ngLXhCCBKwg wULzWgwOf6f7YDa6QH4gKDkNv+i7d+sD3aQk0JfcJ76psFqvuAgdWqvsxPrvCKELkHW7 zJxJBKtshedlqZP1XUDfMHSP+BZHpeuaXE5ic058+/QDI2JDEbW/gT569WEZN7Yl+Oo1 SjAXZZhdUABlEQE6LJ7anKMpfXibJ1EVqVo+306J6MMjaVLaExiFDZzMrWU5k8h2qd/9 KU7A== X-Forwarded-Encrypted: i=1; AJvYcCW+FZcPqh9CQCYFFM7A9TXbvzKDb01fiErC//UYOgJXp8rldHUF7aNYin9AQdRcio6/Ld0xu9+Ryg==@kvack.org X-Gm-Message-State: AOJu0YyzlQsYW8iNRTlAWbAJT352nT75J76I4anEmfbNAERX8gaVVHrU 6XzmWBAMkKHiIhBMyw9OsJeM2ybZIxAfDJ0i4glVfwjMgXra00I4 X-Gm-Gg: ASbGnctqdvGoH6adOQqgpNwCyJs2yvDasKIgWqOA19VaYE5umIHWC4/G+uDe+LD91Az Z4CNSXBQle+Z8fWk1A837o3IImEQ+QcuZhnHjRP9hIJCxoY9I7dddmoHMo4AuFoGUh6XxmtBfJ2 u651X6BdJzQqPVjdiUXrlSm3nT5NX4QEyRg/aCGTwlotWoVHAan8lb6WI4fEzgWXEM0fkyfCRob tKaK8girQv+5Rk1QsSW5z7Behm7RETBDaP+UP1b3PXDFApkbBqPPBk7YE/21Uk36Xv2EYkRKQ== X-Google-Smtp-Source: AGHT+IGMXgi7aAKrku0Ih1TYL4Oi5+9RORRRPw9nF07X7DXEI8lbVHj5AaDQfryV4t3MKdcXCS4ovA== X-Received: by 2002:a17:907:7fa1:b0:aab:8311:951f with SMTP id a640c23a62f3a-aac3349a9aamr5290769066b.6.1736175174842; Mon, 06 Jan 2025 06:52:54 -0800 (PST) Received: from smtpclient.apple ([132.69.243.32]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aac0f01608fsm2249856966b.150.2025.01.06.06.52.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 Jan 2025 06:52:54 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\)) Subject: Re: [PATCH 09/12] x86/mm: enable broadcast TLB invalidation for multi-threaded processes From: Nadav Amit In-Reply-To: <20241230175550.4046587-10-riel@surriel.com> Date: Mon, 6 Jan 2025 16:52:41 +0200 Cc: the arch/x86 maintainers , Linux Kernel Mailing List , kernel-team@meta.com, Dave Hansen , luto@kernel.org, peterz@infradead.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Andrew Morton , zhengqi.arch@bytedance.com, "open list:MEMORY MANAGEMENT" Content-Transfer-Encoding: 7bit Message-Id: <6A40E0A3-CF69-481B-92D1-F86581DC3441@gmail.com> References: <20241230175550.4046587-1-riel@surriel.com> <20241230175550.4046587-10-riel@surriel.com> To: Rik van Riel X-Mailer: Apple Mail (2.3826.300.87.4.3) X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 8F0E0C0005 X-Stat-Signature: 1c98czndmkq5ur5w3uk1usum3jzpnzr4 X-Rspam-User: X-HE-Tag: 1736175176-201853 X-HE-Meta: U2FsdGVkX18wJGPJ+PWlpqKaHMLgPYpR4DSZLG9SVAqRqcLpmdwqr1dACAhWrYVL73iNSXSF1q+XBrCowCCZLkV15mR2WlSKb2azXpKWC+ewNx/aFkGGnYaSxyZOkDQWHoH4gbiywo24WZMnjEjiQqIZrz9o+KeM5anjUNpCXRqmC9D9Nyx+cqxArgQIWxSIk+harBcOUnTw4SNbDKrxEBlaKtInwRLzQlksiYqzRt9JWhJSTKTqbmdYteuO8git03BRKPSXMhTC8QUbpqmvpGO2KP1dfDsyCd8TVjJ5nhxBiV502j7fqnvQIut8oTGRDIwWhDm+PWFolh+CZhc3s/rd45MVhAE9bGOgu/6aN65VFDrKkcdfJtV9clU2JWvZNxJ7xuST4yLb2Z/WLDgHeegjZdVIQE8Tf3i59G6dgVsBmOy4XdAAD1h1+3UlCvFNtlcI6ZNKRqFo2mIvop0vYXnBgLxb1qZrUf6bbx+/HMb4RPr1Gej5Ku/q2iiU8KufvMco3AXDLfBq2aS/aV40XX0WSXtOXjEDmcxCqIbd3PKMGVdDzCD0sVDPSKtKkFXbMMYOrOi3VPrhjzJkkEzPw1wz50UGF6QHOYBas4sf0IPNz8KxcWwFGI63/zgNwU9njND1a/ScZkJ66r+G17wdQVvMQVeR2FoVPAiHG+0ndwF4w31hRwKi90Sn4QubGN0Ei/1jji+2rQe4YbDoFXV2IliOOI0CIwyVeZSpqhhj6pAHoL1M17re8pMRO9ggftLxKlP+P90Iz8vGeRk/47psE+dXiEcvEZHx0CwHbXjPH8dAkBs/bPLVnGUSXUrFQpI3ZrF0VquVmG0Zygo5tr9BEtHveo18fA/gF8/1RGx36EkBPykB1MxkVlMgzkvZElC7XP/tv9y09Qs4wjpYTzUL/Zy6sm8l66eBgvbii+D0spJPAlrXyGejkltXyA8pdbSE5BQkBWLH1Q/xOe2Whvw Z6pSv/1n nG3zg5a/aM5M3/2Xd+CzodRb0G6zKl50sr9jf9zhosgrTSi3HgsqKGaqhlljk8WTO0V9YBEEfdTnhPSiKIIGgySAIAI7yJ0hRCw24FmuxaU+PmvwkhWgonbIqon46mMqRS+5Wma+rwvPXXGKsBbeeLsAwK+z+xXlMlg8uXbBjWjnor9dYDBQi7JCj5bp56lYSuUdmtCNYlb4ZctSsuqapfkeIp8EpZRgWRDQzulI5hgCo3XffzcbOcHIJ9InHAz5dz8iWZVhWxyOxbKOioc/lF5C05wKq7o1T9s2XMScJjYuerW3sKsqld4c0+o02OsunzC6sTBZj44bMGHFp5EOzZYnuaBFtZ4gxGdWskLb0T8I8gAcjovYxzmT+XhAl8zLBbMIbuK8YlE6kT5BLvB1+UCjNkJ79eQIPXeYr+7MykOqnY+d1aFMgtkBvKlFb/nIu0W6AgpoBitfbc7dLQcBRSvWz6wMMufNga2gJ 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 30 Dec 2024, at 19:53, Rik van Riel wrote: > > +/* > + * Figure out whether to assign a broadcast (global) ASID to a process. > + * We vary the threshold by how empty or full broadcast ASID space is. > + * 1/4 full: >= 4 active threads > + * 1/2 full: >= 8 active threads > + * 3/4 full: >= 16 active threads > + * 7/8 full: >= 32 active threads > + * etc > + * > + * This way we should never exhaust the broadcast ASID space, even on very > + * large systems, and the processes with the largest number of active > + * threads should be able to use broadcast TLB invalidation. > + */ > +#define HALFFULL_THRESHOLD 8 > +static bool meets_broadcast_asid_threshold(struct mm_struct *mm) > +{ > + int avail = broadcast_asid_available; > + int threshold = HALFFULL_THRESHOLD; > + > + if (!avail) > + return false; > + > + if (avail > MAX_ASID_AVAILABLE * 3 / 4) { > + threshold = HALFFULL_THRESHOLD / 4; > + } else if (avail > MAX_ASID_AVAILABLE / 2) { > + threshold = HALFFULL_THRESHOLD / 2; > + } else if (avail < MAX_ASID_AVAILABLE / 3) { > + do { > + avail *= 2; > + threshold *= 2; > + } while ((avail + threshold) < MAX_ASID_AVAILABLE / 2); > + } > + > + return mm_active_cpus_exceeds(mm, threshold); > +} Rik, I thought about it further and I am not sure this approach is so great. It reminds me the technique of eating chocolate forever: each day eat half of the previous day. It works in theory, but less in practice. IOW, I mean it seems likely that early processes would get and hog all broadcast ASIDs. It seems necessary to be able to revoke broadcast ASIDs, although I understand it can be complicated. Do you have any other resource in mind that Linux manages in a similar way (avoids revoking)?