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 771CBC25B75 for ; Tue, 14 May 2024 15:35:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CE2898D0028; Tue, 14 May 2024 11:35:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C92BA8D000D; Tue, 14 May 2024 11:35:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B5A308D0028; Tue, 14 May 2024 11:35:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9882E8D000D for ; Tue, 14 May 2024 11:35:55 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1C7931C056B for ; Tue, 14 May 2024 15:35:55 +0000 (UTC) X-FDA: 82117401870.12.B285673 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) by imf20.hostedemail.com (Postfix) with ESMTP id 4C9951C0019 for ; Tue, 14 May 2024 15:35:53 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ieDr9Wk3; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of 32IRDZgYKCCkXZWJSGLTTLQJ.HTRQNSZc-RRPaFHP.TWL@flex--surenb.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=32IRDZgYKCCkXZWJSGLTTLQJ.HTRQNSZc-RRPaFHP.TWL@flex--surenb.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715700953; 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: references:dkim-signature; bh=8h1heic/WIrKkqKhGl4cPRJjsIzjvgjOs1wUbMcKuFY=; b=1nIRtaY9b4Xk3vSUHVuIWjjF1i1kwhB+RspQV1yDkas2PZWk5clnSzKpswk5+PlTeEemit 9yEwcjRa+oqElK8B3jMjmxsyGSPPpc9kjm7XVxDwO5IYw8C7eALn8NJaxEY0ACuvmCZ3QD ZbWqb/h0wc4ZwV4XDNj+59ZuTlG3HYA= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ieDr9Wk3; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf20.hostedemail.com: domain of 32IRDZgYKCCkXZWJSGLTTLQJ.HTRQNSZc-RRPaFHP.TWL@flex--surenb.bounces.google.com designates 209.85.128.201 as permitted sender) smtp.mailfrom=32IRDZgYKCCkXZWJSGLTTLQJ.HTRQNSZc-RRPaFHP.TWL@flex--surenb.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715700953; a=rsa-sha256; cv=none; b=JheU7ox/BQ1VpoP1X9vRkyiunlLor2T7+w0iA1Yruz6aAvSlLLXM5hjck52kmtQeNBK2m7 /G4TXzitNGamG9f7CE7fjEi+OPoeBzykQ7lgNNu/D9cbGnFRv+11+iOPfzXNEw+sxDL6S5 Rj2DlaknAUEmfsSvq4krhCvsxg/WXxk= Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-62230f6d44dso80228677b3.0 for ; Tue, 14 May 2024 08:35:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715700952; x=1716305752; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=8h1heic/WIrKkqKhGl4cPRJjsIzjvgjOs1wUbMcKuFY=; b=ieDr9Wk3b74EZIoaDLN3ElesLlKPmEX1gIo5fIeUlMEL6zEFaAByXcV5Awe6orf3QM u8aClBcTLpdSoAjYD3OzsZIJja5yz4imkoAQGVIuhcIYwIwdzY7H42v2RmUO1qQvvjS0 ZwEdm9Ks9LruV7pNJ2JYFPHrhgTz6zeQdZrqshVvRPR+nhjL33U2pMdFF+iHIY2f3vvR yue0CBa9BRSd1GgEXkoLH0VB9oatPZayt4LWynJ6HD5W7uUZLKEzxfvvkG1J9r+Pzc3K Ld4vN7rlGa4Kw1n9VlOjpBphOhwqHGiO55ZbwSAtE6aysMm2OnfBliWVUAITlmzUd5WF +i6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715700952; x=1716305752; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=8h1heic/WIrKkqKhGl4cPRJjsIzjvgjOs1wUbMcKuFY=; b=H3jFzdei7cg96tvrFDgEKvW40CoMJ/oY/d0iJ5+uKi1cWZeiGh+DYyOmbbqdKSRDFC jNpM/irr+TDHAjhhQh511iz8i+txjGwmdR47eN69Fgo/0mK7zJYz/9gJ96lNEkBCu7PZ SErE+cPGI2BOs9+7n+dLOYu6Az26s7j50f3X3R4zB/2DYVtVRCHGhNJu0pXgitw3HsBO w5j5GtmXgUcNT4WCLaswT+zlYuoLc9WkBfzljcHgaNt9HsdilPPJ2NucNcP1scNLI8hj H3LWAtT3r3vOwTq8j1oL0aMXmE9CZ/E7c+eRs9Njfy4LapOnJ/16mFRyUqAcc9EXgeQ5 KBjw== X-Forwarded-Encrypted: i=1; AJvYcCUWE9vMgCMBsxdUZcXzVmROvwn9S/N1V1B7beVnWE/psa3w+78edKbSp74UoBQA4mfHzCU+ZSwlWVepNMHiiJRDGiI= X-Gm-Message-State: AOJu0Yx3tZZeb8FsFCSrU83XK9fu5TpzsNO5l8zlqBRbw3YWpiOYWkof F5usoDlVjmJOaC/bRdveR9aD5k3RXokVYHGRYOydYXm1EHtWxQeKi8AnUnJThfefrhV3g6YT8ci Eiw== X-Google-Smtp-Source: AGHT+IHHSpuTeQek++mFAxLfFAuVppDkYeHqFcKCHk5mMT50eANs346lK6L2OcocmRuT5s6DVjOePQGuj8k= X-Received: from surenb-desktop.mtv.corp.google.com ([2620:15c:211:201:e8f6:c5d2:b646:f90d]) (user=surenb job=sendgmr) by 2002:a05:690c:3802:b0:61b:e2ea:4d7b with SMTP id 00721157ae682-622affa5943mr35383047b3.1.1715700952239; Tue, 14 May 2024 08:35:52 -0700 (PDT) Date: Tue, 14 May 2024 08:35:32 -0700 Mime-Version: 1.0 X-Mailer: git-send-email 2.45.0.rc1.225.g2a3ae87e7f-goog Message-ID: <20240514153532.3622371-1-surenb@google.com> Subject: [PATCH 1/1] lib: add version into /proc/allocinfo output From: Suren Baghdasaryan To: akpm@linux-foundation.org Cc: kent.overstreet@linux.dev, pasha.tatashin@soleen.com, vbabka@suse.cz, keescook@chromium.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Suren Baghdasaryan Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 4C9951C0019 X-Stat-Signature: ugqdg8wioxzr1ysqatxfp1r8s3g4qndw X-Rspam-User: X-Rspamd-Server: rspam11 X-HE-Tag: 1715700953-505868 X-HE-Meta: U2FsdGVkX19713gnmD717AM2zM9exm9d1yPQSNKA2RZpD9H1l0y2w4r292YNmn7SiIbRYeKsaPapViXRWtOs8a1gmklWKwcjBafZRwcjINzYVOptpyuDJ9HE4OOrTzCVUpMcSoNjdu1wm26GLsoX6s0zrOLKPTvhu0npeDNo0BaOqNQn2iNaSIPldkR89AsFFm/vCTvP7ZR4J7xBVpLXJwJSz027B2hDNzoxCNa73sxso2q/+8exevsEkfxrwiFO6o0HJjmoYro5jWstithv0un4kG2nXZeSHkLkFmshIalKKm4Yz+wHM5yUixPNytl3aYz7k5vVb/Dz4U5hVIeijxdY+YJBIZ0ODtUABx0qU+12x/LA6G2mzy1vaZviShrlZJyBAaS1Ry0EsioWCZpyBbo4UiZ5sktkTYXAbL0X2aAULAEg+DFTYV0vkeZtwZN3IUYzQT7qBfPn1Yjxf9JmbmBPJuPnmV3Y7TrIN8Bqi2WGyh3qAWYlN9DgHlybQASr8TPRKahNT9232RZe6tyG09+Mgbr+Ie2yo5Ba9PzQenNqL0dFQrQKtZScZLg9Q2E4QlY3PdSgHolensaGh1LorqB0FCNyeRjjNXm+04d3AeuJB7vb0ifEbvL1Dus0jnjO5U6xQZvoc+63+oUMeSemmrVTr4JwnbjbeWsDwmqHwc+cPVgKZibeI1ryLxgRvg7nci68lIO5WS4OV2XzFTUkjLOPKREvscJ93JEulnPwALDTnBSsXmm8eKFht5ln6qB+UNGmT2nLWZ/rI59w4vbpSJQ75cX3G33/03F0sKKyweCikqxcDLX0fQk99vy8Pf49B+vlJRORpGCLUIUFHvMrWxQiBA3Tc4QlMAuOMRyrC7wLNdX8w3Gw+wAJhkGksl8tAYN6MGsHOAj7Pn6K2w6dxiIiFy3iu6YEwkfsJHnE5nS9NStHTBl0Js3QV29Ihdq/1j8ZqMdMU8WRd17UCZf p4bJDDtg PCD/WTEXdm5Uus+r4LrgCNtCrRb50SWkp1+y0RX+nhxAqJZXykpBjqiHDHQdNlWGzLheZnrIz2wislMjeMZNZd4VqYqg9rPs+vuk3W3KdFuqEnbQpRI0weLXgLz3kKuKgUzr4MqWmXXvH2ko4Vd9VqlvCoTKXU3cvTXCpXMC7hSYygYr8qBxy/jDZnrQk/2gZefaemsitQTMVFxTynfMDnGzwXyHY5BWP7ddqOMbRNKyTrDm4w9ZGLIwbG1PHnxEXksTqc+aLb/ASLhRfuJR0Bm5KCcEo3n/pWSXLCPM2NrmX7wf2XpZkrjUt1mecHRsyS2AkXYU8TUGrXUMs8cif27p9mvcb7Rtu1YbjYR9lYMP6LnfcPqc2+RxFEJFLD7i1GtmoIdSLRJU5eva+bqNiLKR0ySYiEATj7awTSP5t94H1VeupL+j+TXbdPYWIr4l1snRUwWcG5rDAjSd8Cvu4l1WE+SyXAz4gbCm2HOzuWZ8Huw+JLW2Kmobn9eWKtmyA1slNB2vRDtqlRzQdtnlxHrat6W5M7NBxwtM80TLqw81+jMu+XfxGiPO9nu5T9M6eGGZWGuO6o2eKSq8A9ZBr2eBodwNNDvAUb8sg0GTrtwB8Owc= 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: Add version string at the beginning of /proc/allocinfo to allow later format changes. Exampe output: > head /proc/allocinfo allocinfo - version: 1.0 0 0 init/main.c:1314 func:do_initcalls 0 0 init/do_mounts.c:353 func:mount_nodev_root 0 0 init/do_mounts.c:187 func:mount_root_generic 0 0 init/do_mounts.c:158 func:do_mount_root 0 0 init/initramfs.c:493 func:unpack_to_rootfs 0 0 init/initramfs.c:492 func:unpack_to_rootfs 0 0 init/initramfs.c:491 func:unpack_to_rootfs 512 1 arch/x86/events/rapl.c:681 func:init_rapl_pmus 128 1 arch/x86/events/rapl.c:571 func:rapl_cpu_online Signed-off-by: Suren Baghdasaryan --- Documentation/filesystems/proc.rst | 4 +-- lib/alloc_tag.c | 42 +++++++++++++++++++----------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/Documentation/filesystems/proc.rst b/Documentation/filesystems/proc.rst index 245269dd6e02..97d76adb1ecf 100644 --- a/Documentation/filesystems/proc.rst +++ b/Documentation/filesystems/proc.rst @@ -961,13 +961,13 @@ Provides information about memory allocations at all locations in the code base. Each allocation in the code is identified by its source file, line number, module (if originates from a loadable module) and the function calling the allocation. The number of bytes allocated and number of calls at each -location are reported. +location are reported. The first line indicates the version of the file. Example output. :: - > sort -rn /proc/allocinfo + > tail -n +2 /proc/allocinfo | sort -rn 127664128 31168 mm/page_ext.c:270 func:alloc_page_ext 56373248 4737 mm/slub.c:2259 func:alloc_slab_page 14880768 3633 mm/readahead.c:247 func:page_cache_ra_unbounded diff --git a/lib/alloc_tag.c b/lib/alloc_tag.c index 531dbe2f5456..777b5cebf9a4 100644 --- a/lib/alloc_tag.c +++ b/lib/alloc_tag.c @@ -16,44 +16,51 @@ EXPORT_SYMBOL(_shared_alloc_tag); DEFINE_STATIC_KEY_MAYBE(CONFIG_MEM_ALLOC_PROFILING_ENABLED_BY_DEFAULT, mem_alloc_profiling_key); +struct allocinfo_private { + struct codetag_iterator iter; + bool print_header; + +}; + static void *allocinfo_start(struct seq_file *m, loff_t *pos) { - struct codetag_iterator *iter; + struct allocinfo_private *priv; struct codetag *ct; loff_t node = *pos; - iter = kzalloc(sizeof(*iter), GFP_KERNEL); - m->private = iter; - if (!iter) + priv = kzalloc(sizeof(*priv), GFP_KERNEL); + m->private = priv; + if (!priv) return NULL; + priv->print_header = (node == 0); codetag_lock_module_list(alloc_tag_cttype, true); - *iter = codetag_get_ct_iter(alloc_tag_cttype); - while ((ct = codetag_next_ct(iter)) != NULL && node) + priv->iter = codetag_get_ct_iter(alloc_tag_cttype); + while ((ct = codetag_next_ct(&priv->iter)) != NULL && node) node--; - return ct ? iter : NULL; + return ct ? priv : NULL; } static void *allocinfo_next(struct seq_file *m, void *arg, loff_t *pos) { - struct codetag_iterator *iter = (struct codetag_iterator *)arg; - struct codetag *ct = codetag_next_ct(iter); + struct allocinfo_private *priv = (struct allocinfo_private *)arg; + struct codetag *ct = codetag_next_ct(&priv->iter); (*pos)++; if (!ct) return NULL; - return iter; + return priv; } static void allocinfo_stop(struct seq_file *m, void *arg) { - struct codetag_iterator *iter = (struct codetag_iterator *)m->private; + struct allocinfo_private *priv = (struct allocinfo_private *)m->private; - if (iter) { + if (priv) { codetag_lock_module_list(alloc_tag_cttype, false); - kfree(iter); + kfree(priv); } } @@ -71,13 +78,18 @@ static void alloc_tag_to_text(struct seq_buf *out, struct codetag *ct) static int allocinfo_show(struct seq_file *m, void *arg) { - struct codetag_iterator *iter = (struct codetag_iterator *)arg; + struct allocinfo_private *priv = (struct allocinfo_private *)arg; char *bufp; size_t n = seq_get_buf(m, &bufp); struct seq_buf buf; seq_buf_init(&buf, bufp, n); - alloc_tag_to_text(&buf, iter->ct); + if (priv->print_header) { + /* Output format version, so we can change it. */ + seq_buf_printf(&buf, "allocinfo - version: 1.0\n"); + priv->print_header = false; + } + alloc_tag_to_text(&buf, priv->iter.ct); seq_commit(m, seq_buf_used(&buf)); return 0; } base-commit: 7e8aafe0636cdcc5c9699ced05ff1f8ffcb937e2 -- 2.45.0.rc1.225.g2a3ae87e7f-goog