From patchwork Mon Nov 20 08:43:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oscar Salvador X-Patchwork-Id: 13460933 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 46B3FC197A0 for ; Mon, 20 Nov 2023 08:43:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8D7906B040A; Mon, 20 Nov 2023 03:43:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8850C6B040B; Mon, 20 Nov 2023 03:43:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 68D766B040E; Mon, 20 Nov 2023 03:43:20 -0500 (EST) 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 533976B040A for ; Mon, 20 Nov 2023 03:43:20 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 31112A063B for ; Mon, 20 Nov 2023 08:43:20 +0000 (UTC) X-FDA: 81477693360.28.D36E4A3 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf10.hostedemail.com (Postfix) with ESMTP id 2153CC0012 for ; Mon, 20 Nov 2023 08:43:17 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=vULYWMFM; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=AePaBT45; spf=pass (imf10.hostedemail.com: domain of osalvador@suse.de designates 195.135.220.29 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700469798; 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:in-reply-to:references:references:dkim-signature; bh=PDH277g7F2wYgGggepn2hqYKq/ycO2DhoCkVXWauxYM=; b=iIKHeyIP8sgiGUL/cT9q6Q1HA4XHSS7Xax70W80g3DIX701fnepwaXILS3cQi9mYPM4Ejr CB513wOVvPwwH+7w0WTQGzlgaEOf2qDvQwBIze4YRDVS1lQH5XnhKbyADxldZeAyh4vdir No8N1WaQypAtYdPCdSjHbROnG5STmgA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700469798; a=rsa-sha256; cv=none; b=YNqOJPdfQgj7686uHlMxbrLMrn8dFgIkgvKGLohLfRymHexPcWYvv2VE0Mn0A8KkOLXLPu iAFLWdsDvDoRwEOU2fRJayg7jwL4C/MU76SsmO/5HOCH3hgkk7/QOwjkHC0M8vT40I3kMz IZ4Diu4D2Y92BlR6nrDqhnburUD5X5s= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=vULYWMFM; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=AePaBT45; spf=pass (imf10.hostedemail.com: domain of osalvador@suse.de designates 195.135.220.29 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 58A0D1F855; Mon, 20 Nov 2023 08:43:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1700469796; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PDH277g7F2wYgGggepn2hqYKq/ycO2DhoCkVXWauxYM=; b=vULYWMFMmmaG4S6iAkq5rSYmzy20p9tn1S3i6DL/n7pooOCC0Z+gGAbJ3WGHNnAFjw1Oeb OCX2wKXShH5JPzCNgEvnFq1C9WhDIOFSrP9E/HjhIs3ItAn5AwWVeq3djPr7uW40iDdPDj a7gK1tVk27s7VosOL1aTePWRIqQUGJM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1700469796; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PDH277g7F2wYgGggepn2hqYKq/ycO2DhoCkVXWauxYM=; b=AePaBT45sbywumguZikXpcc3f5I8qh22AOKqNPJdL4aMGBn+rV5hcc7enjPGv4AhKNpohk HO99W3gl6HlKfNCg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id A1BEA13912; Mon, 20 Nov 2023 08:43:15 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id uEGWJCMcW2U3VgAAMHmgww (envelope-from ); Mon, 20 Nov 2023 08:43:15 +0000 From: Oscar Salvador To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Michal Hocko , Vlastimil Babka , Waiman Long , Suren Baghdasaryan , Marco Elver , Andrey Konovalov , Eric Dumazet , Alexander Potapenko , Oscar Salvador Subject: [PATCH v6 4/4] mm,page_owner: Filter out stacks by a threshold counter Date: Mon, 20 Nov 2023 09:43:00 +0100 Message-Id: <20231120084300.4368-5-osalvador@suse.de> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20231120084300.4368-1-osalvador@suse.de> References: <20231120084300.4368-1-osalvador@suse.de> MIME-Version: 1.0 X-Rspamd-Queue-Id: 2153CC0012 X-Rspam-User: X-Stat-Signature: 4uxnne3si4chnsn3bzsc7ay4itd8xwik X-Rspamd-Server: rspam03 X-HE-Tag: 1700469797-212056 X-HE-Meta: U2FsdGVkX19EFDbtCupkuhj5zEsgH0iA/nVqMd7STl4gK2Y51c0yXk2bvtJtKTuWkYAtO+hbST2/keS69/O3J+dYwr0eorp3kVOXoAt1P75pZgATtEJtoBiKOzbtT3d1ASabVeTBoaMQADalSiuobdkJ6c+38Ii0WPLo21hLh5T4AocfD1aP+fY8msQ3QFG+hhxUJiZWbwOx0lMbFjxwPvf0YinlHQ2/xaLUjEIKyq5zUMrDuSi3BXpCEjrNGP4papP7zq/oBEbUIFQrh/2CNTUKh7qB9Dqxzxleo5OtHLSwtiLRrPhH6lEq8KwTkpwyDLkt1Fdn+jJh+kDrfR/wY7rNpgCcx6SgamFxH2cIF91m5bkA+8qMCjqmqG+UHn0z68KS6VPz8GDuPtdvYj+cZWygRkfTSY+3IM2u/hgOzV9bdABnUsI6wNyN4ykJ0x97/0cUUk4tZWGFG8LAbfzfzv9r677cRdbf/J0iGZNAVjbWooveFg8sUdmGfd68MZO6vYUFlVt9CH+gU/wnd7EWZmP3nyya8CODvgIMpyqfYSMC7CL8MqtLPrHjJvGcLyKZuIabeAp17/fid6u/+AKbv/c3gIckQOUCV4o+m2CS5rJ+RRxIT46lBAAZc3ke0D5rr1G57cb+67gHSDyXaX90Q6jB3Ni/IXJabHUpThj2CVbVQ4zptptWE6bsGMpxldt6mpnlmMxQqwT+md2o4yVXjwusTwlazW2L88Tw/8e4p7niW/zp/myf1jg8zE1uWp0P5dnf4ecaR9HxF5WUIYjviK2mMPNlp5k98pY/TAIm1muqMu+CNDkVEfTdWVsom/J19xgKL2+sq3wCHzDXotJTB3KcPGTnUclGHq+ekdErQo1KjcZHbJh2AH8vzUhwmhHimh0qW/vASCC5MwjiclAA0bG6msn0lvUPmGDXUdy9XzP4ANQrumVJK+FAmdd1SsspBrIZyLF3TZwT/B1v8jk dPtlPHOt 9VLDyGE/QeTb0THzvFR/ZRDL9v8BwIrwj1m3NsziPiDVb4/ZIZyPuWGNIRnuyfB06820Xb7EFt3rynhYcNwZVoDNETalQvmB52aQkB8upni9K7gzNo2HQlLClIUv9i1eb80t+j7Dvvi60jXYyGqmC5XLmYIwsCHcdw5PSmtmnAVVpYOPQXhpI4H2jUYLQf1BvVPIz82q6Z2EpxYYmrJYihRbX7Oi9PcPS+IqxrEVs7aihmD9enHq8dZw2Nhx5NmxvOfsF 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: We want to be able to filter out the output based on a certain threshold, so we can leave out stacks with a low counter of outstanding allocations. We can control the threshold value by a new file called 'page_owner_threshold', which is 0 by default. Signed-off-by: Oscar Salvador --- mm/page_owner.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/mm/page_owner.c b/mm/page_owner.c index 509c11e506db..6ee345dafd01 100644 --- a/mm/page_owner.c +++ b/mm/page_owner.c @@ -41,6 +41,8 @@ static depot_stack_handle_t dummy_handle; static depot_stack_handle_t failure_handle; static depot_stack_handle_t early_handle; +static unsigned long page_owner_stack_threshold; + static void init_early_allocated_pages(void); static int __init early_page_owner_param(char *buf) @@ -763,6 +765,9 @@ static int stack_print(struct seq_file *m, void *v) int ret = 0; struct stack_record *stack = (struct stack_record *)v; + if (refcount_read(&stack->count) < page_owner_stack_threshold) + return 0; + buf = kzalloc(PAGE_SIZE, GFP_KERNEL); ret += stack_depot_get_stack_info(stack, buf); @@ -804,6 +809,21 @@ const struct file_operations page_owner_stack_operations = { .release = seq_release, }; +int page_owner_threshold_get(void *data, u64 *val) +{ + *val = page_owner_stack_threshold; + return 0; +} + +int page_owner_threshold_set(void *data, u64 val) +{ + page_owner_stack_threshold = val; + return 0; +} + +DEFINE_SIMPLE_ATTRIBUTE(proc_page_owner_threshold, &page_owner_threshold_get, + &page_owner_threshold_set, "%llu"); + static int __init pageowner_init(void) { if (!static_branch_unlikely(&page_owner_inited)) { @@ -815,6 +835,8 @@ static int __init pageowner_init(void) &proc_page_owner_operations); debugfs_create_file("page_owner_stacks", 0400, NULL, NULL, &page_owner_stack_operations); + debugfs_create_file("page_owner_threshold", 0600, NULL, NULL, + &proc_page_owner_threshold); return 0; }