From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-m32116.qiye.163.com (mail-m32116.qiye.163.com [220.197.32.116]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD2B7264612 for ; Thu, 30 Apr 2026 17:08:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.116 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777568927; cv=none; b=uVDkE/Cd/4iVQgxqbqAE8DGltrsMIaPCenirFHHY0+JUUMMcMpt0d+WAOE5Oj4Mo4WgrL2f1D4jLBLB+xizUq0Bs/HZjDh24jxHV6HcK1wnu6SivJVy70zgpvo59nOzniDm5FenOJo1WXkMw00iKxwspM+EKYfVfjE/FFL8WJWU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777568927; c=relaxed/simple; bh=muEte2UNmG+4dHm3hsgw5b+9sdxTzHaJj3wEJvKJc8Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ShmkN0XoTUCPOwu95gcbLTeGfVE0kfsFLou+JWl34Y4WkauWqIOFdzwBQIOrsFPq/8+OP8l75AGtJ54RNGmqTA+xQvOGqDZXtleqs8qkRNzF1wJdC0sbWK041RpQZ2FxrDbLAKCuJ8l5PvAW8uQ26q0HMNgGiGN7P0J6M47B52E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=easystack.cn; spf=pass smtp.mailfrom=easystack.cn; arc=none smtp.client-ip=220.197.32.116 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=easystack.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=easystack.cn Received: from localhost.localdomain (unknown [IPV6:2409:8a20:e24:8c24:8810:8f74:8c26:2]) by smtp.qiye.163.com (Hmail) with ESMTP id 199a96d51; Fri, 1 May 2026 00:33:02 +0800 (GMT+08:00) From: Zhen Ni To: akpm@linux-foundation.org, vbabka@kernel.org Cc: surenb@google.com, mhocko@suse.com, jackmanb@google.com, hannes@cmpxchg.org, ziy@nvidia.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Zhen Ni Subject: [PATCH v4 3/3] mm/page_owner: document page_owner filter features Date: Fri, 1 May 2026 00:32:47 +0800 Message-Id: <20260430163247.13628-4-zhen.ni@easystack.cn> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20260430163247.13628-1-zhen.ni@easystack.cn> References: <20260430163247.13628-1-zhen.ni@easystack.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-HM-Tid: 0a9ddf3c93000229kunm7d32d45d8a8c X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFJQjdXWRgWCB1ZQUpXWS1ZQUlXWQ8JGhUIEh9ZQVlDHhhKVkJJGE5PQk9PGU4fS1YVFA kWGhdVGRETFhoSFyQUDg9ZV1kYEgtZQVlJT0tCQUMaSUtBHklPQUMYSU9BQ0NKS0FDHUxPQUMYSU 1BSVlXWRYaDxIVHRRZQVlPS0hVSktJT09PSFVKS0tVSkJLS1kG Add documentation for the page_owner filter functionality, including: - Print mode filter (full stack vs stack handle) - NUMA node filter (single node, multiple nodes, ranges) - Usage examples for both filters Signed-off-by: Zhen Ni --- Changes in v4: - Update print_mode documentation to reflect string-based interface * Change from "0/1" to "full_stack"/"stack_handle" * Add bracket notation example: "[full_stack] stack_handle" - Update NUMA filter documentation * Remove "-1" example * Add empty string as clear method - Fix indentation: use tabs instead of spaces in code examples Changes in v3: - New patch to document filter features as requested by Andrew Morton --- Documentation/mm/page_owner.rst | 61 ++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/Documentation/mm/page_owner.rst b/Documentation/mm/page_owner.rst index 6b12f3b007ec..178bacfbb3fd 100644 --- a/Documentation/mm/page_owner.rst +++ b/Documentation/mm/page_owner.rst @@ -74,7 +74,17 @@ Usage 3) Do the job that you want to debug. -4) Analyze information from page owner:: +4) (Optional) Use filters to focus on specific memory allocations:: + + cd /sys/kernel/debug/page_owner_filter + + # Print only stack handles instead of full traces + echo stack_handle > print_mode + + # Filter by NUMA nodes + echo "0,2-3" > nid + +5) Analyze information from page owner:: cat /sys/kernel/debug/page_owner_stacks/show_stacks > stacks.txt cat stacks.txt @@ -238,6 +248,55 @@ Usage ./page_owner_sort --tgid=1,2,3 ./page_owner_sort --name name1,name2 +Page Owner Filters +================== + +The page_owner feature provides filtering capabilities to focus on specific +memory allocations (e.g., by NUMA node). Filters are controlled through debugfs +files in ``/sys/kernel/debug/page_owner_filter/``. + +Print Mode Filter +----------------- + +The ``print_mode`` file controls the level of detail in stack trace output. + +Available modes: + +- ``full_stack`` (default): Print full stack traces +- ``stack_handle``: Print only stack handles + +Reading the file shows the current mode with brackets around the active option:: + + cat /sys/kernel/debug/page_owner_filter/print_mode + [full_stack] stack_handle + +The ``stack_handle`` mode significantly reduces output size. Instead of full +stack traces, it prints only the handle number:: + + Page allocated via order 0, mask 0x42800(GFP_NOWAIT|__GFP_COMP), + pid 1, tgid 1 (systemd), ts 349667370 ns + PFN 0xa00a2 type Unmovable Block 1280 type Unmovable + Flags 0x33fffe0000004124(...) + handle: 17432583 + +To retrieve the full stack trace for a handle, use:: + + cat /sys/kernel/debug/page_owner_stacks/show_stacks_handles + +NUMA Node Filter +---------------- + +The ``nid`` file filters pages by NUMA node. This is useful for NUMA-aware +environments to analyze node-specific memory allocation. + +Supported input formats: + +- Single node: ``echo "2" > nid`` +- Multiple nodes: ``echo "0,2,3" > nid`` +- Node range: ``echo "0-3" > nid`` +- Mixed format: ``echo "0,2-4,7" > nid`` +- Clear filter: ``echo > nid`` (empty string) + STANDARD FORMAT SPECIFIERS ========================== :: -- 2.20.1