From mboxrd@z Thu Jan 1 00:00:00 1970 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 2DC71C433EF for ; Tue, 11 Jan 2022 04:07:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B8DC86B0073; Mon, 10 Jan 2022 23:07:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B3D006B0074; Mon, 10 Jan 2022 23:07:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A2BF76B0075; Mon, 10 Jan 2022 23:07:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0099.hostedemail.com [216.40.44.99]) by kanga.kvack.org (Postfix) with ESMTP id 94E126B0073 for ; Mon, 10 Jan 2022 23:07:25 -0500 (EST) Received: from smtpin31.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 5711B951B1 for ; Tue, 11 Jan 2022 04:07:25 +0000 (UTC) X-FDA: 79016671650.31.CDCA36A Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf17.hostedemail.com (Postfix) with ESMTP id 786B340006 for ; Tue, 11 Jan 2022 04:07:24 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 6E2921FB; Mon, 10 Jan 2022 20:07:23 -0800 (PST) Received: from [10.163.72.245] (unknown [10.163.72.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 563423F774; Mon, 10 Jan 2022 20:07:20 -0800 (PST) Subject: Re: [PATCH] mm/migration: Add trace events for THP migrations To: Steven Rostedt Cc: linux-mm@kvack.org, Ingo Molnar , Andrew Morton , Zi Yan , Naoya Horiguchi , John Hubbard , Matthew Wilcox , linux-kernel@vger.kernel.org References: <1641531575-28524-1-git-send-email-anshuman.khandual@arm.com> <20220110120351.44e60aed@gandalf.local.home> From: Anshuman Khandual Message-ID: <389876c9-dc71-ccf8-1c8a-8e30b55f1b0a@arm.com> Date: Tue, 11 Jan 2022 09:37:23 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20220110120351.44e60aed@gandalf.local.home> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 786B340006 X-Stat-Signature: dpcws3pfs9eroypik9jmqba98fomjdzo Authentication-Results: imf17.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf17.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com X-HE-Tag: 1641874044-220894 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: On 1/10/22 10:33 PM, Steven Rostedt wrote: > On Fri, 7 Jan 2022 10:29:35 +0530 > Anshuman Khandual wrote: > >> This adds two trace events for PMD based THP migration without split. These >> events closely follow the implementation details like setting and removing >> of PMD migration entries, which are essential operations for THP migration. >> >> Cc: Steven Rostedt >> Cc: Ingo Molnar >> Cc: Andrew Morton >> Cc: Zi Yan >> Cc: Naoya Horiguchi >> Cc: John Hubbard >> Cc: Matthew Wilcox >> Cc: linux-mm@kvack.org >> Cc: linux-kernel@vger.kernel.org >> Signed-off-by: Anshuman Khandual >> --- >> This applies on v5.16-rc8 >> >> Changes in V1: >> >> - Dropped mm, pmdp, page arguments from trace >> - Updated trace argument names and output format >> >> Changes in RFC: >> >> https://lore.kernel.org/all/1640328398-20698-1-git-send-email-anshuman.khandual@arm.com/ >> >> include/trace/events/thp.h | 37 +++++++++++++++++++++++++++++++++++++ >> mm/huge_memory.c | 5 +++++ >> 2 files changed, 42 insertions(+) >> >> diff --git a/include/trace/events/thp.h b/include/trace/events/thp.h >> index d7fbbe551841..193a555aa2ea 100644 >> --- a/include/trace/events/thp.h >> +++ b/include/trace/events/thp.h >> @@ -83,6 +83,43 @@ TRACE_EVENT(hugepage_splitting, >> __entry->addr, __entry->pte) >> ); >> >> +TRACE_EVENT(set_migration_pmd, >> + >> + TP_PROTO(unsigned long addr, unsigned long pmd), >> + >> + TP_ARGS(addr, pmd), >> + >> + TP_STRUCT__entry( >> + __field(unsigned long, addr) >> + __field(unsigned long, pmd) >> + ), >> + >> + TP_fast_assign( >> + __entry->addr = addr; >> + __entry->pmd = pmd; >> + ), >> + >> + TP_printk("create pmd migration entry addr=%lx, pmd=%lx", __entry->addr, __entry->pmd) >> +); >> + >> +TRACE_EVENT(remove_migration_pmd, >> + >> + TP_PROTO(unsigned long addr, unsigned long pmd), >> + >> + TP_ARGS(addr, pmd), >> + >> + TP_STRUCT__entry( >> + __field(unsigned long, addr) >> + __field(unsigned long, pmd) >> + ), >> + >> + TP_fast_assign( >> + __entry->addr = addr; >> + __entry->pmd = pmd; >> + ), >> + >> + TP_printk("remove pmd migration entry addr=%lx, val=%lx", __entry->addr, __entry->pmd) > > The two above are pretty much identical, except the first one has "pmd=%lx" > for the pmd, and the second has "val=%lx" for the pmd. I'd suggest they > both be the same, and then you could save memory by combining the two into Right, both can be the same 'pmd=%lx'. > DECLARE_EVENT_CLASS() / DEFINE_EVENT() macros: > > DECLARE_EVENT_CLASS(migration_pmd, > > TP_PROTO(unsigned long addr, unsigned long pmd), > > TP_ARGS(addr, pmd), > > TP_STRUCT__entry( > __field(unsigned long, addr) > __field(unsigned long, pmd) > ), > > TP_fast_assign( > __entry->addr = addr; > __entry->pmd = pmd; > ), > > TP_printk("create pmd migration entry addr=%lx, pmd=%lx", __entry->addr, __entry->pmd) > ); > > DEFINE_EVENT(migration_pmd, set_migration_pmd, > TP_PROTO(unsigned long addr, unsigned long pmd), > TP_ARGS(addr, pmd) > ); > > DEFINE_EVENT(migration_pmd, remove_migration_pmd, > TP_PROTO(unsigned long addr, unsigned long pmd), > TP_ARGS(addr, pmd) > ); > > And then you have the same thing, but it combines the code which saves both > data and text. But both need to print different messages. Hence I am wondering whether a (const char *) based message can be passed down here as well. create pmd migration entry addr=%lx, pmd=%lx remove pmd migration entry addr=%lx, pmd=%lx > > -- Steve > >> +); >> #endif /* _TRACE_THP_H */ >> >> /* This part must be outside protection */ >> diff --git a/mm/huge_memory.c b/mm/huge_memory.c >> index e5483347291c..d0adc019afe0 100644 >> --- a/mm/huge_memory.c >> +++ b/mm/huge_memory.c >> @@ -39,6 +39,9 @@ >> #include >> #include "internal.h" >> >> +#define CREATE_TRACE_POINTS >> +#include >> + >> /* >> * By default, transparent hugepage support is disabled in order to avoid >> * risking an increased memory footprint for applications that are not >> @@ -3173,6 +3176,7 @@ void set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw, >> set_pmd_at(mm, address, pvmw->pmd, pmdswp); >> page_remove_rmap(page, true); >> put_page(page); >> + trace_set_migration_pmd(address, pmd_val(pmdswp)); >> } >> >> void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new) >> @@ -3206,5 +3210,6 @@ void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new) >> if ((vma->vm_flags & VM_LOCKED) && !PageDoubleMap(new)) >> mlock_vma_page(new); >> update_mmu_cache_pmd(vma, address, pvmw->pmd); >> + trace_remove_migration_pmd(address, pmd_val(pmde)); >> } >> #endif >