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 8DBDFC369A2 for ; Tue, 8 Apr 2025 16:59:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A17526B000C; Tue, 8 Apr 2025 12:59:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 99A3C6B00B6; Tue, 8 Apr 2025 12:59:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 83B986B00B7; Tue, 8 Apr 2025 12:59:53 -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 5F4E26B000C for ; Tue, 8 Apr 2025 12:59:53 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6BA591212C6 for ; Tue, 8 Apr 2025 16:59:54 +0000 (UTC) X-FDA: 83311488708.10.5139598 Received: from gentwo.org (gentwo.org [62.72.0.81]) by imf15.hostedemail.com (Postfix) with ESMTP id C50C5A0003 for ; Tue, 8 Apr 2025 16:59:52 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gentwo.org header.s=default header.b=mCsSiias; dmarc=pass (policy=reject) header.from=gentwo.org; spf=pass (imf15.hostedemail.com: domain of cl@gentwo.org designates 62.72.0.81 as permitted sender) smtp.mailfrom=cl@gentwo.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744131592; 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=npn242A2W/TEDA2uAEasMq1QFf+FdVgQvy3Kx/Py/CQ=; b=hwvBUoo4zL+brfwCd0Ig8hKnpNw2GhaTW+6iJK9zNtrxNsB+GIk8y+sDgo+tuREFFDS5h2 CBK8kH9z/5zUhsONrp52/MTHNy3UhVhsQShnmJUP8cSL9UfUppnE020yENn+HV710m9MLr 9TUJEQKvL3jGWZzze6ejAglRTFirBVI= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gentwo.org header.s=default header.b=mCsSiias; dmarc=pass (policy=reject) header.from=gentwo.org; spf=pass (imf15.hostedemail.com: domain of cl@gentwo.org designates 62.72.0.81 as permitted sender) smtp.mailfrom=cl@gentwo.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744131592; a=rsa-sha256; cv=none; b=8fvrtkYESOnWgtlLyy6k6J4IaJ6OB3aTsVyAmnblLPEDf7nCXuqSmAraWI33QCYR+TfJnk QsGdvupflnHpKsYg+ZOGnFBzSuUfrHDr4vNtWXBKZysBmqwssYMkmyrUJqEW9vxLWThGYO RZS6K5BqRlI2Ql471Kx5szqePMjknDY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gentwo.org; s=default; t=1744130239; bh=npn242A2W/TEDA2uAEasMq1QFf+FdVgQvy3Kx/Py/CQ=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=mCsSiias1qzrbUjlmat1qOSORLBNGyrFTWYZ10hRcOc3WLqxurH4aYDOPT7GMstwp wfuLdqnG209+70DONPS+lYYNwr+tuLknOP80aU0l6AyQemovxzzQEwg8EuBoZzQ+Tb Hzz2mJHcKXWOAcdA4aQNTdEdP4Sbq2Cu/1+yMVCM= Received: by gentwo.org (Postfix, from userid 1003) id 0153D4028A; Tue, 8 Apr 2025 09:37:18 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by gentwo.org (Postfix) with ESMTP id F40B8401F1; Tue, 8 Apr 2025 09:37:18 -0700 (PDT) Date: Tue, 8 Apr 2025 09:37:18 -0700 (PDT) From: "Christoph Lameter (Ampere)" To: Mathieu Desnoyers cc: Sweet Tea Dorminy , Mateusz Guzik , linux-kernel@vger.kernel.org, Andrew Morton , "Paul E. McKenney" , Steven Rostedt , Masami Hiramatsu , Dennis Zhou , Tejun Heo , Martin Liu , David Rientjes , christian.koenig@amd.com, Shakeel Butt , Johannes Weiner , Lorenzo Stoakes , "Liam R . Howlett" , Suren Baghdasaryan , Vlastimil Babka , Christian Brauner , Wei Yang , David Hildenbrand , Miaohe Lin , Al Viro , linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, Yu Zhao , Roman Gushchin , Matthew Wilcox Subject: Re: [RFC PATCH v2] Introduce Hierarchical Per-CPU Counters In-Reply-To: <20250408160508.991738-1-mathieu.desnoyers@efficios.com> Message-ID: References: <20250408160508.991738-1-mathieu.desnoyers@efficios.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspamd-Server: rspam01 X-Stat-Signature: dom7iu69hqi1kabs1w76qrfpqph619aj X-Rspam-User: X-Rspamd-Queue-Id: C50C5A0003 X-HE-Tag: 1744131592-908315 X-HE-Meta: U2FsdGVkX1+0TnkIftlXN4OXz/Hg98p6aCi+u11uXT4t6J9sJmIZYOJ2uaoj+K7c47luz6AXywEGS2lRqSYecfhqSAPKu4hZW3bNWBDfgYlQDiWQAR6Ta67938OUCmftedOuLXXKzREq300tYewqjoVOvBlZZi9HkYR6tq/O7S1L7ghJHOqmpnxtiYXlwix942ygypf9jlWGfqxCS/bB576k/y5v3/ee8PrktnRbOdY2dGzr0j+sKL02T9xg8fzQX6286IXecwATd15vSJ/xrkeo7gkFwhBeYz+yjAe1IlFtoJWMuYYoaH5Oz0/XFpMclRNMYp+mCw1qoQSKSVFUHbb22dloVsHCqH4/0mvTvJF+ba2tmM+fjl3KiegRFsS8nZI6ZYQx66rmO/KGr6xaW+Em0m43YhWJk3hRovDOk3lB8jSjajCrcPJQGAKbMFGH3CrIhXJFp/p5Y7jbg02q7LnoI7CNnEmRpkP7BRWpPwoLjqh0CXQV8ZAmwigm0U3B8gi+KHVYnJRZ+lSrrlhRVrf56V+j35uw8Gg9qOkRAt1mDYClyIRhsq9xOruMWuMmLhj0RG4lxsHEPzZ9oZJJtkTsQkJ9QXYx7dOwURgD0iNo472huVzW5fH4FKnSMxuxow04heb1lugqONDVmwdZ2oNMb4OA05yDoiisaez54LJhcbEnWI3DE4zNgBrihVXjR3UJdlhMmIA2Rt2YmGvFmxIo245b4oXtz1Pt7FdEI6DCHZaPNjAVk3WZQN4V9CjRZe5bbjs5af/po+VViVdL1Z52JYB6YUjA+6wAR0yqwVbSFhqlWGWBlpk7QiWraQAtx4Ja1d6eWgnLlRtj134X5rKuXOFn0+Muxkr2cP33Oj+bajzNoLDI1s54hAxz6gmuKqOXDENktVv+tod069+ihzQeVGo1pLA4cJEvp3f3IANXM/a6OTk1NjxfWeaflPlugW0gTw/aNHZ4KB3PIWL ge6uqAig BtMM+rrFNfsZ9OgYANaFM0LPJYsDi67pdZ2FSPVUOPC3nSHvIYly1tpzKyViKuSd94wXr0Ry/C1bYxdB0JKEfhR+3XFuvvOoy1xMyrQouXENKOyclg8PBg3NZWiES3yxuZUUc5Uiv2xPCK5JOglvpjyLJLs0dI5UCAhsmRf194hLBK07OgnqQJKu1SaafxkNiW/C/Ln0jFtO5VAZ8E4xFrGSetwnGVj1jP8DHTkKRLrrMZn8qKwlnrVUMXfnTPimQmE8esGZ9iiRv0taJKbkn4sYqmV/i9wYZf+Ytkol2bm4M8k8yVmVTE1ma/jZHNAYmkoRm 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 Tue, 8 Apr 2025, Mathieu Desnoyers wrote: > - Minimize contention when incrementing and decrementing counters, > - Provide fast access to a sum approximation, In general I like this as a abstraction of the Zoned VM counters in vmstat.c that will make the scalable counters there useful elsewhere. > It aims at fixing the per-mm RSS tracking which has become too > inaccurate for OOM killer purposes on large many-core systems [1]. There are numerous cases where these issues occur. I know of a few I could use something like this. > The hierarchical per-CPU counters propagate a sum approximation through > a binary tree. When reaching the batch size, the carry is propagated > through a binary tree which consists of log2(nr_cpu_ids) levels. The > batch size for each level is twice the batch size of the prior level. A binary tree? Could we do this N-way? Otherwise the tree will be 8 levels on a 512 cpu machine. Given the inflation of the number of cpus this scheme better work up to 8K cpus. > +int percpu_counter_tree_precise_sum(struct percpu_counter_tree *counter); > +int percpu_counter_tree_precise_compare(struct percpu_counter_tree *a, struct percpu_counter_tree *b); > +int percpu_counter_tree_precise_compare_value(struct percpu_counter_tree *counter, int v); Precise? Concurrent counter updates can occur while determining the global value. People may get confused. Also maybe there would be a need for a function to collape the values into the global if f.e. a cpu goes off line or in order to switch off OS activities on a cpu.