From patchwork Thu Oct 12 19:47:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419725 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 6999ACDB46E for ; Thu, 12 Oct 2023 19:47:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D90088D013C; Thu, 12 Oct 2023 15:47:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D3F9A8D0002; Thu, 12 Oct 2023 15:47:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C07268D013C; Thu, 12 Oct 2023 15:47:23 -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 B054A8D0002 for ; Thu, 12 Oct 2023 15:47:23 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 87C0F140798 for ; Thu, 12 Oct 2023 19:47:23 +0000 (UTC) X-FDA: 81337843566.26.32370A1 Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) by imf20.hostedemail.com (Postfix) with ESMTP id D1B831C000A for ; Thu, 12 Oct 2023 19:47:21 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=SX2uwDBa; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.54 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=1697140041; 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=abXNGPKw7PJYHD7y+6T6nFqD6UaMg3jcCplu4YBqMiefMktnMvtELPQ7SE3oPfmYuA9TOQ T57W4Xp20pGUdYN9ale1zFcmzk29p6qkMcWg4MWnWKgg876WrE9/epFo72jw1kWXO9AXHN LUbj7HPnaZA/feijyHr8/pdrJOnZLG8= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=SX2uwDBa; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.54 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140041; a=rsa-sha256; cv=none; b=iKPfy0LJfauB3fGtLgejTT7pFp9TOjQKMgSJ4gAvLAr7QGyE5qpslOW1wGzWClC8voOftC JHMhU6216NGsJDruXKpC4tkLJ5Sl38qHTiTHrYzlZYmaZxmijWJfOvcEKSZMZ5N1rolUiB ftDetekNERCnZUCiiJ0fhdi6zAEnjYI= Received: by mail-io1-f54.google.com with SMTP id ca18e2360f4ac-79faf4210b2so50201039f.2 for ; Thu, 12 Oct 2023 12:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140041; x=1697744841; 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=SX2uwDBabzuUV9fq9Saz6ML/FbcFdaRDXNDiQBkDDIMiU4VGCsOtIjIRGqbrToWKAA inqp2P1yvu5r4uL9E0YfA8g/MySTHe6QqHWqK27PqRdWh4tnHCk08LWzpBHOt1S9zahp bvFBEYB7baZvbGR2IS4UrVeNw/MZpMUBMXleLHqCzUCzjbcmOggeqQa+ncp7Y85UfqdA KFMh/6MtwxhLbL5OM2w0udJmenfZj8QibmxI0XargeUfNcB3RzbFA5beKVRUHWAn0vR5 JdzgmUHNG8mvJ9L7LHvc1qE3cEj4dcKTjn1P7bD3nUOW0eOpgnU5+v3X5b316tBGtm6Q TfLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140041; x=1697744841; 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=jAoYED2yZKZs3SFqV+jl9DNjkOa8kP70yGLAe7Hz2BLKuvOAOzMB40dL5poYrtw88Y rbGRBmnSh1AFdQypTNO+2+f630Ertc8vJ8JsHVLDdWXm/9hdrZ7CTlOzesSSsxvNrUm3 VnyrgnGg1bb183Zyco0cWFnA/GVVJ4ncM8ZZVCwb+ehwUUdLq76zqS1bccgaLruqZ68U 6FQndarSo1c5DTbHYCO5YnWUF36ZtPrF/Ed+Ljv5Bke0Su0LIQljR8xJztCTtLmiE4rX jd3BRPZdp9f/1fdgeEFV6087Ak2SpN9pkcRnHSFUeI6gC3+XWpCbqe9E6VAO2zxF06C+ G7cA== X-Gm-Message-State: AOJu0YxfDqNWHFLMGv1ctBCv3QfFWbeRFNyyXYyAuc09dMFjf3TyhTX7 tEbZ3SzWtBhlVP/BkhNOjqg= X-Google-Smtp-Source: AGHT+IEtpKtEiUHW58SKXa/X6fv26GQrh+CTpZc45+G87s6Iv0B3iD27tIqKGtfIcJJ00vzOWb2eBw== X-Received: by 2002:a05:6602:2012:b0:7a2:ac5a:89c3 with SMTP id y18-20020a056602201200b007a2ac5a89c3mr27212332iod.1.1697140040910; Thu, 12 Oct 2023 12:47:20 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:20 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:01 -0600 Message-ID: <20231012194711.3288031-1-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Rspamd-Queue-Id: D1B831C000A X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: xu8qc7bkkb93xjeagq588kizz5fhk6pj X-HE-Tag: 1697140041-925441 X-HE-Meta: U2FsdGVkX1+bPrZrUFMZBfLhZzaIbFNt7heCdKPHefOgTlAktq5dz6fb1EWllLU/SftY6l5h40nG0ydwaXe/ewMHwH+MFRD9+TjJ8E9oiwrmrfTmCVJx8+4ARfnRTKfsTorddb/OjNXmpp1mZ3eqlVJT0HUWJiKEsYCxtJU3QBTr2l/FGokcfx4yFWfGlml0v3VhvqaOpQhxPzg0o8Zdzow7tYn9W08Vr3Zxp7yRkvAmzmeTjcglkbWg6bTgCs9fXOvv97VXwT6RJfMJlirmOR8O62Rfrqy3x0zu5ccafb6TuYpXJvlUsbVva0RCMqjuGIfo4gGx7PMvdDcG19Aq9eADXZISJC517EkUMWdMFwlFfuDkLewoGvEUmC+nV1MnsPL+p52HAvJUJobueTJtdkNoSeFkGROxhGL1+/T1SlWlg7+YtVN2hLi+UaUjP26Clqi3UWweV2HCgUdQ/FX5cMt3aqGBWmBvbhe2zRacAcJwzdU1/5Ge4BCEo532vnoqhmljqQxRW3IGVYVthCkbwqNoReh969K9gkvntWTa8XN/VShYHLOa8Mgj7P/HtsNwDpLJUYq4rX5gKd5uzGR5aO/PkXr8ivBpF3CdEqAbbq2H+Csi53XxNc3NqAXhXjbIWfHp5M9xJiIFYGl4ien4CpSg/j/YwKj8yAfBlw379xqfA3Oc6KZJalFcZOGSZLn5hqNzDd2SkCTnVADcH7HE7cJCKk1lCD7vSM5UhhSdXCQnlpMymHhr9JVIa6IUdbUHtocRGmuXQzwRBKeK5ZzaNtRpojdbWs2hUo16S1W4GHG2xUEvvNdu2LyNJkssv/hxdlRQMUkjcnA8WBOZYdrnvzfUIYaxIyfGhFcdVOZlmRkGBrwTmoQPKgUrhWxAcJTERb4lCPFsDAxSHAmKwA33bDpnpRXmKvl6zzc/MAoaqN6FW8EyDFhXSqcHg4NeO/Sy+aHhwS/+0NO28Ao9zYB DHt2Amew 2Ud+zNjyPCPBsUxC2EHyvae4KxsQvmaETt6OY8aMRt3ipgoljomIRWlf1spMpMaJp2b+GNnElXIDEMmcHy70JMj+smrRg3Mr/rRl43cmW5bcs67UMMjxiecOTRVGqJrUZ9/8bdpxfWiay85su4hmHI4C28y4IAwWjRUdH+xKle8upptuS+aCWPrey1LacXwexluORVnCONvHYNGcdQRH7l1fKRsQr9kITbMIzMbeBIdv/4M7npW2JCsCJ+Ear4vFHfjdU27419DBj04ybXrtBCUjt/IXpCl89F0agIHjzrqwP8vg+pq9X0/5vrw1KS8ZqjxWUEAiu7FvL9z6iirc22yy9+KZuXHTLk7MTzNGBeHwh+m8zHJiPokFrQrA6lwmoRcfl0BNJNeJdxe/5wCu1l7CEF/xVhJ4o5jfXgQjXBS3zSiXCWB8QpoJ4XFZP2hgtj/HRTZMJSbZLtiNk4HbOHSFIYOLSk9k5lF8kB2UvzgD/pBV4k5IN8lOwZjkDO7XLzxGGafSE7pGi8NzHhUt4lhwHNcVrlX9LFWXVqElTuTT5hrKcU1HeoJZA2g== 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(-)