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 103B0C7EE26 for ; Mon, 22 May 2023 08:28:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8525D900002; Mon, 22 May 2023 04:28:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 801896B0075; Mon, 22 May 2023 04:28:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6C959900002; Mon, 22 May 2023 04:28:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 5CF1B6B0074 for ; Mon, 22 May 2023 04:28:22 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 2A3C140CB0 for ; Mon, 22 May 2023 08:28:22 +0000 (UTC) X-FDA: 80817214044.28.5CCAD65 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by imf27.hostedemail.com (Postfix) with ESMTP id 5581240011 for ; Mon, 22 May 2023 08:28:20 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=UuoRc85n; spf=pass (imf27.hostedemail.com: domain of glider@google.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684744100; a=rsa-sha256; cv=none; b=XFQTt+Xl8KrgoRgbXCDnWIF5TWDDOIHQEHVvoL9+dLwAgrE4I/D11QeChhkfDwLg0rIN5h guX/+8+8ABRNCXR00eBO3abqwslg3XixQbjtwIcquQRER34g62zjHtmPH3xZNrCC+fsB1h 3VokpvYVdifBYyqqxY7Oynk1TpD4z/k= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=UuoRc85n; spf=pass (imf27.hostedemail.com: domain of glider@google.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=glider@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684744100; 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=tQPKp4ylIrhBgcqRpAt3qUDuu8+hY7keqcoakv7RGXY=; b=nCTfzNejgPaQJ/d/pSZiZHQMdHwOO7XQVVsP/xy3UqXvh7VdUMpQ2qQme1ElAvVl7VAZ+1 Y2h/DhBgGxRBriM7hZXie53wtKGOGQl97EpbbByg8QpLL9o4DhEzpeWqgaFx6dbyxhsE/Q azd5Y1YCu3F7DEpHObEK+yOZUklchR0= Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-30789a4c537so3677281f8f.0 for ; Mon, 22 May 2023 01:28:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684744099; x=1687336099; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=tQPKp4ylIrhBgcqRpAt3qUDuu8+hY7keqcoakv7RGXY=; b=UuoRc85nqWStGpANB5zweRVQyMFOYQmNJs1Hx80dqdxxWuHFfaKqQLiCaRr+/V49EI jjr2Ao7NM7DsLdV0Ppzr2YybTYqTrZKRz1N0J11S3WbBgM0nskqf77+6fAYrIzMURDfu qmbIi24/nCIOC6OH1+u844UnXMNFqWIExb+FJ5R2ul5tGTTELUY6+v9aPt44M4wtrl90 kfxD5e5FUMfcXmZQlS2/j3TLUui43knC9KnhaXsMN4TPk5bJhdjzR3wvmH9CD17wq0Il PwBsqHxhsuhc7YB+2YuuBoggSlKZHp4MBK1O9TaBxPf/WONfDrn5Yk8yWN5mJ1F7yZqI XV2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684744099; x=1687336099; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tQPKp4ylIrhBgcqRpAt3qUDuu8+hY7keqcoakv7RGXY=; b=Vya1QGsYWJO/MIlcRkLn9OPCL+C+zkxtCCfJcJvEVGhw5TmaVfOHI99CI2v3DfHaNQ vE8Z7tasJ2Y5xPrnF/hR5cjSGZWKafGoW+LC1AyDuZChnuMMrM7GWoAkmnMhVS/j3E5Q kYsqo3TjPgYXa5HBWXbxkZvrPv8hnkj6klJHE5aIfsEYnWWm6YoMy2PYD9JsmoWqVYJd g+HRXChEhyNwnFz9yVPgTQUcMB59Rtbs9lZj3U3+JBF27FhBM2RhWZbemqY85i9DDWbJ ji1Y11ICsSYRISpgagyapoKqjVfPOcCJ+9/kvBIimqR6vX4UIdkX73miCHHIE2Z5ziwR e+8g== X-Gm-Message-State: AC+VfDz0OzAk45noRHAFIh+TmVAVKmTRyvnd7mVCi8AuohKvZvsBk5fk AZbkbDm3qwOi3CQ81aBG2ydMH+fhWuKCpTRMojNmLg== X-Google-Smtp-Source: ACHHUZ6xF2ggBqR3M3Zan56q0SstCxZYMrC939CqChGjb0uLHhCkkPmT+WP0oLS6Qznmq3LfvoQZgBjgpDRsWOaIvlk= X-Received: by 2002:adf:e60b:0:b0:309:a4e:52d3 with SMTP id p11-20020adfe60b000000b003090a4e52d3mr7866449wrm.5.1684744098765; Mon, 22 May 2023 01:28:18 -0700 (PDT) MIME-Version: 1.0 References: <20230516182537.3139-1-osalvador@suse.de> <20230516182537.3139-3-osalvador@suse.de> In-Reply-To: <20230516182537.3139-3-osalvador@suse.de> From: Alexander Potapenko Date: Mon, 22 May 2023 10:27:41 +0200 Message-ID: Subject: Re: [PATCH v5 2/3] mm, page_owner: Add page_owner_stacks file to print out only stacks and their counte To: Oscar Salvador Cc: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Michal Hocko , Vlastimil Babka , Waiman Long , Suren Baghdasaryan , Marco Elver , Andrey Konovalov , Eric Dumazet Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 5581240011 X-Stat-Signature: p5xnd9a9a9d6x9dj75jwmceaz4apiwhm X-Rspam-User: X-HE-Tag: 1684744100-317309 X-HE-Meta: U2FsdGVkX18n8xuxxmyMr2NS6onxAzYYe8PC2p+zuV5Ln2uPdi7zCNZnNmChNmgK/pURFmy8F/gI8HfhWSvUT3PuQVJWcPp15YtQ5qYZb3L1CFnsCvYcQmNxAcjK5MIzp+66zujzIOk8S58A4Mcu57vf8ZT2lEMZh0x+CvYT5/PLqBdVx+BB6cvky9nYugq6G7RRsGUBionQCGqeNSgEkYQcX2csV/HirWAi2VV91WGHmk8mt7DQ+GnmzdwIqE6TQI48zzpajletcZAJAg/96VCULvbdghSKUoIqVcLaPHMw3RrXGECWqOEwwJTwQABFDUplbd78i6j0V8Pi/u4Sx88JoqNuXRgBixBMIiiB6h/024sDT/Uk1ZBTLHOvtD2fJOMB0WCvZ6s7olYXpsySMbrhKNf7EFXb8Pl7S4fgTqWl9gopu+YoWGtctYhLg7Mjsd45pjbaezXQhjRpNXLnvgFgrgdfKCNQL3d/mpkxX3t49Z9lXL70TPeQOK/asERCUjPABvcq8yA8dqpJWxiDFjMh5B6mE2I4JCCrQNvGPWAqCjl4qv8elU51ysuvipP4gm5C9JddBJA8IMF1oAKZt4KLvg/6ZINtslDGE1bThMnmzmZrV8xUIqmve5Q0ohUSI0+fjovoAHhoDGqJ1gx6ftoXK5ZSStCCTgUqEurikFJ1vHERu7kiRitl7hU3EMo2UG4DlM0nF8+WXkyMOZy0jKaiNxYQcsvNLn1m3N5oMGj4GJMComP7A+yKliZ3tKzAL1RRjocaaWeoaECPn92/UETtZGqhdMr8PvFcc+2HcL7SjZpsOixm4KXbB+8TYNSSYxrTIPAMq0vgDFNRbJMfKkQICehc5lDA8x7+NSCACezXVlgEJkyah33+vpmBuKX3enj77VG4lIZSPsLrT1mi7XnuppPynppo9fhMXzNXy8HzGjS2fV5LG1eoSd4jP5Dz8VRTe9CJJWVN/CLRKLb +kji/r8l 5RYhBW7omKbk2bqG3wG8RIfQllzXRMZ/4MvF7Qf/lU+1H0GhPpdwiNre0hWigAcm6IIjKWgzrdv3V2Y0cEIixMhPc+YQ2f4MRGwjfyyeBwPelqAA0l+BQ4N3p+2ReuV6v2Td2BLJRNHYlusaB8GzY37RCi9a/mQ5k839EI8qf37dDK+Ox+2IQ+RILqXkGLzex/ctMfh2OgRDKVqZZoDUi/gBZDXjImlMsWF45JBcQ7DI75OsHFpW+w+CV69WtwJNpRaaEa+jJoHJlsR4= 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: On Tue, May 16, 2023 at 8:25=E2=80=AFPM Oscar Salvador = wrote: I am still hesitant about adding this functionality to stackdepot, because page_owner is the only user of the stack counters that look orthogonal to the rest of stackdepot. One indicator of that is the fact that you keep adding dependencies on page_owner to stackdepot code. > We might be only interested in knowing about stacks <-> count > relationship, so instead of having to fiddle with page_owner > output and screen through pfns, let us add a new file called > 'page_owner_stacks' that does just that. > By cating such file, we will get all the stacktraces followed by "cating"? > +#ifdef CONFIG_PAGE_OWNER > +void *stack_start(struct seq_file *m, loff_t *ppos); > +void *stack_next(struct seq_file *m, void *v, loff_t *ppos); > +int stack_print(struct seq_file *m, void *v); > +#endif Code depending on CONFIG_PAGE_OWNER should not belong here. It is fine to have generic iterators to traverse the stack depot in stackdepot.h without #ifdefs. Perhaps they don't need to implement the whole interface of seq_file. > @@ -486,6 +487,77 @@ static struct stack_record *stack_depot_getstack(dep= ot_stack_handle_t handle) > return stack; > } > > +#ifdef CONFIG_PAGE_OWNER Ditto - no CONFIG_PAGE_OWNER, please > + > +int stack_print(struct seq_file *m, void *v) > +{ > + char *buf; > + int ret =3D 0; > + struct stack_record *stack =3D v; > + > + if (!stack->size || stack->size < 0 || > + stack->size > PAGE_SIZE || stack->handle.valid !=3D 1 || > + refcount_read(&stack->count) < 1) > + return 0; > + > + buf =3D kzalloc(PAGE_SIZE, GFP_KERNEL); > + ret +=3D stack_trace_snprint(buf, PAGE_SIZE, stack->entries, stac= k->size, 0); > + scnprintf(buf + ret, PAGE_SIZE - ret, "stack count: %d\n\n", > + refcount_read(&stack->count)); > + seq_printf(m, buf); > + seq_puts(m, "\n\n"); > + kfree(buf); > + > + return 0; > +} Maybe stack_print() should be in mm/page_owner.c instead? --=20 Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Stra=C3=9Fe, 33 80636 M=C3=BCnchen Gesch=C3=A4ftsf=C3=BChrer: Paul Manicle, Liana Sebastian Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg