From patchwork Thu Oct 12 19:48:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419736 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 66217CDB46E for ; Thu, 12 Oct 2023 19:48:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 024298D0147; Thu, 12 Oct 2023 15:48:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F15688D0002; Thu, 12 Oct 2023 15:48:39 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E2BC88D0147; Thu, 12 Oct 2023 15:48:39 -0400 (EDT) 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 D2FFD8D0002 for ; Thu, 12 Oct 2023 15:48:39 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B0D0D1CB278 for ; Thu, 12 Oct 2023 19:48:39 +0000 (UTC) X-FDA: 81337846758.07.FB47F1C Received: from mail-io1-f48.google.com (mail-io1-f48.google.com [209.85.166.48]) by imf22.hostedemail.com (Postfix) with ESMTP id 0BDBAC0020 for ; Thu, 12 Oct 2023 19:48:37 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=N3DXCReJ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.48 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140118; a=rsa-sha256; cv=none; b=fdPlS2rSFCwjzFWsd6kwwI0cdhoCFacb+bMLreC0SDcWyDF6u9SDBrAbPaJNk2KY03QHmf A+N6j6b0BcpLpxSmC9XUF+U15/5FxF6j9NsT7hqO5q5rJRzUyyg9gEhveNctih7h12YVVD igNWxyHeCLVMzWcgzvRRJl1ZEJmCeOI= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=N3DXCReJ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.48 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140118; 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=J26zzzV+rsRrtzvFakAziiZJUnlN/p9jMvjOqrUCer8=; b=KEuNyU8S5BQOCwpW265FbHjXN2N220QNjHA45XMeyr0cEtVOrgi/mQ4Iru0NZI1K6R859T zlzk6mvDagph++dUGFrl3R+QkmKC5CTGS1deuHMgecz5pWmL1EXkETyVD0aje5JjF3xns7 Bw3Vj7GD1lSwaUs5m9S3BxyinTwjHsw= Received: by mail-io1-f48.google.com with SMTP id ca18e2360f4ac-79fa2dbd793so56922439f.2 for ; Thu, 12 Oct 2023 12:48:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140117; x=1697744917; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=J26zzzV+rsRrtzvFakAziiZJUnlN/p9jMvjOqrUCer8=; b=N3DXCReJkOCOGRwgWnpE9glaRNy/T9d1Wp1OjxzAvErI+6dJZQapN/SLKq6rcp3AK9 z4EhpSYSDXXuYbGJ8iOcNCjQ+nKCXldceEKKSma1x8hnV+//diVOLOYCgr4+tlcdo5+X YdQk4ieEhGyzBQdgcaFm9aOCrV1L8bctJjFDoJ31DPQOBcnER0YkCQ77nIS8Z5gbJlGO KU80aIh99mJpRR0Fsfht2tH57gIUf/n1wPfZoS0VGwyarCaxWRpCXHbFv8jkKPdu9wXt iiE6/AOpkIr4v3MIBM2WL2nX5ckFpjGu/nh5kT7ZV9nxrzfBddiVJeSkFYcg6k60CJL0 3jrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140117; x=1697744917; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=J26zzzV+rsRrtzvFakAziiZJUnlN/p9jMvjOqrUCer8=; b=fygfVHyaw/cohKO/Hen76y6z+3Bn6eS7odIucwAV5LPls9nWS60LoocayUH8GAnFHi m1D4UcysIkM+F0gzRhC1ZsEU4IvsuFJ4nNpPVeX0KnszMgSYReg+y71XY5UQFu8/UGmy u/baUMTFkL3tOzlxDMfugobvyUH500Q3eF/rKor//5sozB7dr7tgQeFWr0jf+5VQMjBa AYzS/5eHrnIBmlTImXk/zigGNW6yxds92V3KOSyRd8dX3Wy0L1i+eR2bO84na47gJUgZ YNed793MdsfCWmxoadF5J/kBWHsZyAM25/sfh3usG4o9s5CYPOj7SY+Iin3t37QGK5xW ZbjA== X-Gm-Message-State: AOJu0YxRpzTfqjvplh2JvS4YCsl+AY4dHVUBZ4SqrPqWv2HXOqtT0qcF SVqQNL4zOazbmKukKEhZ+wI= X-Google-Smtp-Source: AGHT+IHibITcQER6FdBWmdUf4dR11hKNvWzh0rnLl9orCcGQntVzbywQCyH7VFrOxordRuX2XddXFg== X-Received: by 2002:a5e:a916:0:b0:794:eaef:f43e with SMTP id c22-20020a5ea916000000b00794eaeff43emr25695573iod.1.1697140117074; Thu, 12 Oct 2023 12:48:37 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:36 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 00/10] how to reclaim unneeded vmlinux memory ? Date: Thu, 12 Oct 2023 13:48:24 -0600 Message-ID: <20231012194834.3288085-1-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 0BDBAC0020 X-Stat-Signature: xu8qc7bkkb93xjeagq588kizz5fhk6pj X-HE-Tag: 1697140117-168759 X-HE-Meta: U2FsdGVkX18DZDAekwOH3qqeiaJIQtJambvrMr5httQYsoj3HpZZa5fMJB2wkZ1a7198RUj9T3eOZQ8ZPyIzKDHNGBtfx1WC2j6SsgQXwCkLah7UMR3etg2OFFoelScr2mzezLzl+X68j2ueqVzWZmsMuDMjFL4e0XR3JpvuE0mdGPezAFwNaDTviCaIl0UHvQvUDLHS37O2O3hmOz/xciNCcw828YXZaHZGozcVtlkfxVTI4C3YiIs671wfp+GQ7zLIonaXy6LzvLWquV+ge4fZ4ouG4v5NivO+vpBclivOD0GRcnIhBFRHer5Ln5H0zhZ1tzik/ba/Yw6Z5mbYUGI+WlsCeRgsxYxjvbe1pV0fIVo2dDjuHiKDBh38jSb/QN8vnxqLvO5HFUJl/e106DnzieAi866keifxur0RvUBNYQb/tExxuiCTu7L0tnelqhSJCl6ZATt2ijZEKZSElBWThjf64bHDIUFPTvHIcrzrxaxJAMtTyz2ej3VWfD+lbjd6mvJ1GNRpgFpEP6Ew8JMiHvElnROubkJ3uiGDgUUj8rTCssbgN2AjrhuU/3DcC6FR8doDCZuF2sN7Yyw8vH0MLEwClW7JzGAJ/m7wm7EvH7YuD3Q6IycSW2dvlJMwcWMrm2hveFkRYjtAzzJ0Et2/hWhPdhQOJj2WWPmZHhgAI+ZxR5j51QsgXQbRqOc2NxJbOloRJdYSh14aEW3sCOOXjlHolQpoRgZoway86h7IeETDuC7Lv/KxFp2aGwvf1BgreRD/YdrjssYbu/osQPjJVUVSePVg2NIJMYDaKthaVPdA2LkTrcM1iC0ELQrs1yy2XsfhgYf0znbd7s3rxul434w7URihrYmlHpfrESDUb/05Qeb4VFekYlojanHqRkdMCPUJ8hhURb1yLH6K6xr8koyLNP6zQf/9r45DUyPZSy5Np0J33UE5anwMdjpxUGgKEGQOhGiz5jiokGf SFRDAjQa /GvmNRXotshUjQHGIblovTKSigkDjTb/ORiKcuF3mZsAsSO5CpGAqX80IQr16Ri/vy4EAvOCQZOBNTF6CQp1S9k2MoX/8XPsw0MAwN+PQK9bxR7LJYn2NDkT6pD6ViIRLV2WmycT36XTr+NT0CyJ9oZjmI6Bcf5rMudTLk3NfsME5f8z5sDFjs2yM1By9SHPPSJvU8ihNJ0La/kBZ/No9tbhPyNnOLsrR5oAtgI98o22V0lzgXD8OwE0zLsK87REcsteSI7DbLbSRGKNg5XezM0UG9bPtixwnSMiUYtJ6/m1wMFR6A+ss8Q+6rvc650BgDghGRO6U/bF9fRGPKHgmXPr1IGifhTONma3Tvu3o2jNGguMotOrnPaEQKnatICxbgtVDMUjiTB3ySTDao0CRt1+w1WTJHIzWlGO1+hWlkjTfdVm1a72GtUVMF3dgXHlm4d2m/GxUF7iLDGXZUu5ob+Usnjd6vfom7LUrq/FBGOwrdTu8+6iz4z9euu1/2V49iVmbcUc2zzzAgyEZPuKCmlJHwh065Hs5mfEEdqGlGSfUkDtFMqhGkhYJaCeyQIjr9Z+D 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: For builtin modules, dynamic-debug allocates blocks of memory into DATA, via vmlinux.lds.h. dyndbg's struct _ddebug has fields: modname, filename, function, which keeps the the code's structural/organizational info used to enable & prefix prdbg callsites. The linker packs the callsites in-order, which means the repetition in those 3 columns can be compactly encoded in non-overlapping intervals. So this saves each unique column-val and its interval into a maple-tree per column, and retrieves them as needed with accessors. It also splits out _ddebug_site and __dyndbg_sites section, and no longer needs the section, so that block is ready to reclaim. Somethings wrong with patch-9, but it seems worth showing around. Jim Cromie (10): dyndbg: prep to isolate 3 repetetive fields dyndbg: split __dyndbg_sites section out from __dyndbg dyndbg: add 2nd cursor pair to init-fn dyndbg: save _ddebug_site mod,file,func fields into maple-trees dyndbg: avoid _ddebug.site in ddebug_condense_sites dyndbg: add site_*() macros to avoid using _ddebug.site dyndbg: wire in __desc_*() functions dyndbg: drop _ddebug.site member dyndbg: add dd_clear_range to prune mtrees dyndbg: cache the dynamically generated prefixes per callsite include/asm-generic/vmlinux.lds.h | 1 + include/linux/dynamic_debug.h | 40 +++-- kernel/module/main.c | 3 + lib/dynamic_debug.c | 238 +++++++++++++++++++++++++++--- 4 files changed, 252 insertions(+), 30 deletions(-)