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 9255EC433F5 for ; Mon, 10 Jan 2022 17:04:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9BA076B0071; Mon, 10 Jan 2022 12:04:20 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9686A6B0073; Mon, 10 Jan 2022 12:04:20 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 82FB06B0074; Mon, 10 Jan 2022 12:04:20 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0180.hostedemail.com [216.40.44.180]) by kanga.kvack.org (Postfix) with ESMTP id 738B96B0071 for ; Mon, 10 Jan 2022 12:04:20 -0500 (EST) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 3437E181FE069 for ; Mon, 10 Jan 2022 17:04:20 +0000 (UTC) X-FDA: 79015000680.29.5D076E7 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf26.hostedemail.com (Postfix) with ESMTP id B511C1400B0 for ; Mon, 10 Jan 2022 17:03:55 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B185461337; Mon, 10 Jan 2022 17:03:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2325FC36AE5; Mon, 10 Jan 2022 17:03:53 +0000 (UTC) Date: Mon, 10 Jan 2022 12:03:51 -0500 From: Steven Rostedt To: Anshuman Khandual Cc: linux-mm@kvack.org, Ingo Molnar , Andrew Morton , Zi Yan , Naoya Horiguchi , John Hubbard , Matthew Wilcox , linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/migration: Add trace events for THP migrations Message-ID: <20220110120351.44e60aed@gandalf.local.home> In-Reply-To: <1641531575-28524-1-git-send-email-anshuman.khandual@arm.com> References: <1641531575-28524-1-git-send-email-anshuman.khandual@arm.com> X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Stat-Signature: 1t5apnjy8cg3cbsqanxjd9kgf6y9g6jn X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: B511C1400B0 Authentication-Results: imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of "SRS0=h9aA=R2=goodmis.org=rostedt@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=h9aA=R2=goodmis.org=rostedt@kernel.org"; dmarc=none X-HE-Tag: 1641834235-310351 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 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 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. -- 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