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 65490C3ABBC for ; Tue, 6 May 2025 22:55:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8466E6B0089; Tue, 6 May 2025 18:55:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7F4856B008A; Tue, 6 May 2025 18:55:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6E6BA6B008C; Tue, 6 May 2025 18:55:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 4F4806B0089 for ; Tue, 6 May 2025 18:55:54 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 0DE8412029D for ; Tue, 6 May 2025 22:55:55 +0000 (UTC) X-FDA: 83413992270.26.AFA8A13 Received: from out-179.mta0.migadu.com (out-179.mta0.migadu.com [91.218.175.179]) by imf27.hostedemail.com (Postfix) with ESMTP id 3CDC440002 for ; Tue, 6 May 2025 22:55:52 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="j0zT8S/k"; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf27.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.179 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746572153; a=rsa-sha256; cv=none; b=VnabfwPNchBi0RDHPhFf6Mz1eSA+AzzMNBXM8CEo8DhJ6Ri6lk865aqJFyY8LSYfeIgriy 4kh8aTvWRYc/O6rKLjh5eKp6qBHwrEFbrVOb0r+Lwwi76f9uhOSEG3q2SnwQ6w2p4yT5Bk 6h6ZD9feNgQ4FGAPvDCmRkLbe+w4Vvo= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b="j0zT8S/k"; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf27.hostedemail.com: domain of shakeel.butt@linux.dev designates 91.218.175.179 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746572153; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=YWJSQngmYlXWZg+lyZsIjJarzLPqwEAzFpWOWt07a40=; b=5q4AcCl3c3/kGOoY91ZRX6Vefc2D//5MjkEtL+/kzyMKHnyf0Ym+gesKM6X5jTLx7gcwO2 fENRYxanQUbPaVIz4agL8j+V8dmbRAkocn0zKoWE/SzqZlcCP9rLYO3wt9RvverlEeX4kt UfShCD3xB0F9z8EectWd/4+cGH6etl4= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1746572151; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=YWJSQngmYlXWZg+lyZsIjJarzLPqwEAzFpWOWt07a40=; b=j0zT8S/kZxVs6fcz9mUMCkHREa6ceRcMgUr9SGpBWgyZqIXtyh5YzKJQe8wW55D8AvAlOE 4FpYhQnxM1dX8Raal5UOJGQ6318uCvhbtMC+6z6Zal94acKfnrp+jRlzFv6KONxTIwOvNK jELyRxOz7CZFsZ+Hn9vtWpwy1rLVcSM= From: Shakeel Butt To: Andrew Morton Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Alexei Starovoitov , Vlastimil Babka , Sebastian Andrzej Siewior , Jakub Kicinski , Eric Dumazet , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, netdev@vger.kernel.org, Meta kernel team Subject: [PATCH v3 0/4] memcg: decouple memcg and objcg stocks Date: Tue, 6 May 2025 15:55:29 -0700 Message-ID: <20250506225533.2580386-1-shakeel.butt@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 3CDC440002 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: 4ckemwm6yzyt4bw54a9nk8u8pwuq7gf9 X-HE-Tag: 1746572152-733200 X-HE-Meta: U2FsdGVkX1+9YOm9iFzae0wf8ycDp/Auk2MvD3HyvTK5jUSo/M81iyJexTkn21J4L7d/6JHcEctiwGgIq8KVrYsb0M1bJEbkyCAX2UutslQTrZs7rIYsJYJ8JzIUSxuiwZxC9AEuGZGwS3W4dCeYh9ZaVt4oFIe3T5PokVAqXstPKGvDJtSHTI/wENUfScq/mnt8+RRDhmswwy8tw4Nqmnvsf5xfpUc0tvpd7jFWCc4P0ugVmzIeI+vTeWVQ10BDwDLJH+SJJJ6yiSy1i/3oChaRJaYgdgel1esw0NCT9NV3qzhkjerTPsuJ80lXLCrhxOE6xyE1qDuHUsWUtppme7iRU4bgqnd2gj3pVa2YmYkWIeNNu8d2FKEKHiO+nrhKhn/65UgBdyWRMOEZc9n9O4hv+Fr/jdLf1vOEOE6gPWGCADNhAs+2C36oA/KYrbFDFBvdAKOtr49/RqjrtMu5Z19F5HZxaWThDzZkNza8Td9TzBNrekuXa/Zff5afoERi+dWa8ztaT5e1LBWPDhcIINmT3M/oUn0mh6Tu6wW8S0QeYTMzOxUeJwpswNaaDOBH/n9A/j+VNDv3wqThkWAQGoKfMO15AoE1+D3/ygh8PSxi4IibLHTKUZke/9gwqPS6PZPbcm/yVROnU+ah2k2vPcqmdbTV18A8e5xMcNI3yNhCydBz27R7Gj/CoJ1lLzTdkGvWw4LictxLrVH4kyTDMNHn8gZAfYLucWQtY6rtFdWaauR+DS30+PbWZGE4dEjJc8hGCvlO/TEPTUGtZnalqYcbJUtdrlrlV4oMe9nnoNarERCwn7mjbRVd2907QNZq6eyqmAQFa5DK7a1HbOPhXX4wn3aFi4WLHb5MoCTyrf/yUFA5pj6hY5A6vzjxJ55RlixtIgjKvq8/TgwuxlyMFpqbshas69xYX95O7itZVXNEGJrNM7mKaKXBuLNB8VI7qZSjFfy/JQT61P3vVC4 iq8e2TS6 9FWf3VeUn12AyReLoeEBdx6o5h8sG1OlKI9dCip2QzJEjeYVi7NcgPalU4nEOYdO/Wg+4KJr/L/6GAcHiCR3XqDyX9VqY0qGReNpqUqJE1tlyAx6xwUbGUBChK1kF/ChB9YzqIJUCkVDTbqmEw4su2DkwhmCgx7bGX8d23FCXI/c/FO0= 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: The per-cpu memcg charge cache and objcg charge cache are coupled in a single struct memcg_stock_pcp and a single local lock is used to protect both of the caches. This makes memcg charging and objcg charging nmi safe challenging. Decoupling memcg and objcg stocks would allow us to make them nmi safe and even work without disabling irqs independently. This series completely decouples memcg and objcg stocks. To evaluate the impact of this series with and without PREEMPT_RT config, we ran varying number of netperf clients in different cgroups on a 72 CPU machine. $ netserver -6 $ netperf -6 -H ::1 -l 60 -t TCP_SENDFILE -- -m 10K PREEMPT_RT config: ------------------ number of clients | Without series | With series 6 | 38559.1 Mbps | 38652.6 Mbps 12 | 37388.8 Mbps | 37560.1 Mbps 18 | 30707.5 Mbps | 31378.3 Mbps 24 | 25908.4 Mbps | 26423.9 Mbps 30 | 22347.7 Mbps | 22326.5 Mbps 36 | 20235.1 Mbps | 20165.0 Mbps !PREEMPT_RT config: ------------------- number of clients | Without series | With series 6 | 50235.7 Mbps | 51415.4 Mbps 12 | 49336.5 Mbps | 49901.4 Mbps 18 | 46306.8 Mbps | 46482.7 Mbps 24 | 38145.7 Mbps | 38729.4 Mbps 30 | 30347.6 Mbps | 31698.2 Mbps 36 | 26976.6 Mbps | 27364.4 Mbps No performance regression was observed. Changes since v2: - Ran and included network intensive benchmarking results - Brought back the simplify patch dropped in v2 after perf experiment. Changes since v1: - Drop first patch as requested by Alexei. - Remove preempt_disable() usage as suggested by Vlastimil. Shakeel Butt (4): memcg: simplify consume_stock memcg: separate local_trylock for memcg and obj memcg: completely decouple memcg and obj stocks memcg: no irq disable for memcg stock lock mm/memcontrol.c | 175 ++++++++++++++++++++++++++++-------------------- 1 file changed, 102 insertions(+), 73 deletions(-) -- 2.47.1