From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-m32110.qiye.163.com (mail-m32110.qiye.163.com [220.197.32.110]) (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 BD24A3C9440 for ; Thu, 7 May 2026 11:23:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=220.197.32.110 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778153016; cv=none; b=oENAcjBMwGFveP3Igh3rKN2hQGsSTA/P80DfMpN2QqkARRmcNeD31hs/6KUdx85zApDar14ijE2I8FAWrjPg6MIRYGVa1VNoBuLlISJaUsfypHU78pKHXlk1WufxLMp79DeoyF3Po/nZMQxx8x5Q3kPnkpVo1bxCowUGHx2mXQk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778153016; c=relaxed/simple; bh=3GSfELYAVEgiTztK129nPZSfPNUDZ1XusfC93FAWfNw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UsjWgisSilD0DZyIOvxAHcxEe2IyqYnmaRn5sxMbqsrnfBvmWFsSKsf28pFCe0Lo+MdNCTAdmI1WBEzw63blcWKrvW4FVlsgsKNkpEfF/nXvPq3bcl1ERMLhwE8va/PG4RfuT20gRa/IhTpehPdowt65pmAdssUnJLDUp9h+n1s= 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.110 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 [218.94.118.90]) by smtp.qiye.163.com (Hmail) with ESMTP id 19cdddfca; Thu, 7 May 2026 14:47:14 +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 v5 3/3] mm/page_owner: document page_owner filter features Date: Thu, 7 May 2026 14:46:43 +0800 Message-Id: <20260507064643.179187-4-zhen.ni@easystack.cn> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20260507064643.179187-1-zhen.ni@easystack.cn> References: <20260507064643.179187-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: 0a9e0130c7410229kunm3f68df491bc969 X-HM-MType: 1 X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFJQjdXWRgWCB1ZQUpXWS1ZQUlXWQ8JGhUIEh9ZQVlCSBhIVk0YHkNJGE9OQh5OSFYVFA kWGhdVGRETFhoSFyQUDg9ZV1kYEgtZQVlJSkNVQk9VSkpDVUJLWVdZFhoPEhUdFFlBWU9LSFVKS0 lPT09IVUpLS1VKQktLWQY+ 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 v5: - No code changes 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