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 5A3DCC5AD4C for ; Thu, 23 Nov 2023 21:24:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 97CCA8D0059; Thu, 23 Nov 2023 16:24:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 92CDE8D0002; Thu, 23 Nov 2023 16:24:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7F4CA8D0059; Thu, 23 Nov 2023 16:24:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 705848D0002 for ; Thu, 23 Nov 2023 16:24:20 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1A5C71CAF4F for ; Thu, 23 Nov 2023 21:24:20 +0000 (UTC) X-FDA: 81490497480.01.E0BD519 Received: from out-177.mta1.migadu.com (out-177.mta1.migadu.com [95.215.58.177]) by imf30.hostedemail.com (Postfix) with ESMTP id 1C4638000A for ; Thu, 23 Nov 2023 21:24:16 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=XxPzFZrt; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf30.hostedemail.com: domain of kent.overstreet@linux.dev designates 95.215.58.177 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700774657; 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=7ZLXHI2Ndk3rHHsAuo56iifYdV0BTffvf5dGp9YUFqg=; b=eDjW5PAeuLbJSma6tNHVdyUCOj4QEm/OG8rznbeul0Pv7EkfvqgEoPhf//m5/DaN4qR6x4 Iy+1KNcmy1GNcWDzhGz6IZ3TX4LqlYUowFi42D8pWA7hEKsCq+XOpHs0cnUf5hl4RxoqqI RbCgq+4Ym4oDD3YcJ+Q/ZaOKUIApZzU= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=XxPzFZrt; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf30.hostedemail.com: domain of kent.overstreet@linux.dev designates 95.215.58.177 as permitted sender) smtp.mailfrom=kent.overstreet@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700774657; a=rsa-sha256; cv=none; b=GTwq+MF6eKLtP7OwGBqmSZobNJEd67QBzlWhaQEzPO5z9pI3Zh3+iw8I1ZHuqfcGhuvcYj bJwGWth3jfYqCTyEjK0dAqWia9mgwMoJ41K2lbPLMdtKCX2FHKnwlKP03UY9c3gnte9IjX 5hvJzsMQgbvlCsT1ZmxK1s50cGB3wtg= Date: Thu, 23 Nov 2023 16:24:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1700774655; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=7ZLXHI2Ndk3rHHsAuo56iifYdV0BTffvf5dGp9YUFqg=; b=XxPzFZrtvipkxFgmFlx/ExysB/xnfphkaUcLFZbqpwUXkPvQsLc2IZXsi299cEJPyvv/14 pfZlRTUxePNx0ah8qULgO/bJzkahkISeivJkSuhB2Y/7Y6xSyf5zaU3Vwl2JSZjX1Uuv7S NDq+tYptKfF1tikav+qzthg5l6luMeM= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Kent Overstreet To: Qi Zheng Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton , Qi Zheng , Roman Gushchin , Dave Chinner Subject: Re: [PATCH 2/7] mm: shrinker: Add a .to_text() method for shrinkers Message-ID: <20231123212411.s6r5ekvkklvhwfra@moria.home.lan> References: <20231122232515.177833-1-kent.overstreet@linux.dev> <20231122232515.177833-3-kent.overstreet@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 1C4638000A X-Stat-Signature: spw6c8cbzogxc4gpb1na744a33zth5rk X-Rspam-User: X-HE-Tag: 1700774656-233077 X-HE-Meta: U2FsdGVkX19Ilh8v+cdgUxsu8Q/vVAeEkn1AEpju4VZJJ7ZhNxDaB7hkP/fIkyuD5TOC70tYsA7Q6qknmHO9qB84xWyhkctSjh+2fRiKkLYXq9zODObZh9yLWv9Qi8ABoIhhzXDw4PKtLNIzUyRtlm0LSVNfMlY70ycZl6XMDqy9uBRPGW8wDamC/WtHW3Ax0SYP5oYmtctEEYPvIwtA95tSv/OLp6EoySf01bBCM0O8gYdIQEtrVpx5hQyQbefR6ihVokuErgRnaQKL2AS+qKV8oNp1EOcPW0PC+c3y+eB1jMy5sKavyapBDP5In2vrruyG8AM3VgC4mobx9sJm7EV/SwQ6g3CsDKQdH5r/1u9QZV08mbNXn3e7Fb0uv+4at63DpO67BqIpNc7VT726/KvbhMwVJut6l4QniDysK4ucX2ImHPj2+sc+5qAG4tU9Fl5uG/8gs37OR6R/1ZSQstUSH+/URmznwnwiCrH8JCIw5DNPFJ9rlUwzShqOEkDnw/8UOBhD5j7szXAQtJ2pB6Ez5H2VYTsO7kQEYwd0T38UFmBnsM3BLX3X7oi1nOB489yMnhISdMK7t+0Op4BKA73A/PFVW1eWZVSwvXsZkhT2Vj+015ysWfiomrqEkTmWCDEwFK92MA5l+pJf16xlgnutbRzvwjgm8TAYNJcEk/oyC6KnSrzad63gy2st6xyHKpNXAFPLcZIeLxRtVSJRrfdSn/Hrucg8AQOQq7eMsdbWKNHBzAQi+cEeEPaxeF07zFzXB8emlwhkQbMALCwOJs2Ln+o26oMtfKoiZkH6VYeYWUknb50Vf56FNff5VCUfeRlGosGg+BOeiiwkbvtUgI5bBI/5iEIxNEKfNAm6LaNGA4jcxlRrDKPxw6D+6lyO1RJ78e7Q791XHFCzNL+32Uu0KipMhiBfb0mCuXd0wYr/ublKMLpDkN5VCMpawrbUzpnARgXU3s5PLHFPY5M 9q0Hrb8O bc4EcmgfnmQuc1bIOByesPYPd1u90vdYUzuS/+BilDawcmzfrvjULZTy7yjhGqfKGtu9GonfdJ3r2ZA5unugGkfFOJ6qBTwWUbURT/LGnKtqwdAbcyzsWZDk5RkXk0PhgGAhf1dYPVDhsSRzx4vpXqYfWvIbklhvT/SQl 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 Thu, Nov 23, 2023 at 11:32:59AM +0800, Qi Zheng wrote: > > + void (*to_text)(struct seq_buf *, struct shrinker *); > > The "to_text" looks a little strange, how about naming it > "stat_objects"? The convention I've been using heavily in bcachefs is typename_to_text(), or type.to_text(), for debug reports. The consistency is nice. > > > long batch; /* reclaim batch size, 0 = default */ > > int seeks; /* seeks to recreate an obj */ > > @@ -110,7 +114,6 @@ struct shrinker { > > #endif > > #ifdef CONFIG_SHRINKER_DEBUG > > int debugfs_id; > > - const char *name; > > The name will only be allocated memory when the CONFIG_SHRINKER_DEBUG is > enabled, otherwise its value is NULL. So you can't move it out and use > it while CONFIG_SHRINKER_DEBUG is disabled. Good catch > > +void shrinkers_to_text(struct seq_buf *out) > > +{ > > + struct shrinker *shrinker; > > + struct shrinker_by_mem { > > + struct shrinker *shrinker; > > + unsigned long mem; > > The "mem" also looks a little strange, how about naming it > "freeable"? The type is just used in this one function, but sure. > > > + } shrinkers_by_mem[10]; > > + int i, nr = 0; > > + > > + if (!mutex_trylock(&shrinker_mutex)) { > > + seq_buf_puts(out, "(couldn't take shrinker lock)"); > > + return; > > + } > > We now have lockless method (RCU + refcount) to iterate shrinker_list, > please refer to shrink_slab(). Will do!