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 X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 536B2C433DB for ; Wed, 24 Mar 2021 19:40:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id AFF10619EE for ; Wed, 24 Mar 2021 19:40:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AFF10619EE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 30CB36B02D9; Wed, 24 Mar 2021 15:40:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2BD286B02DC; Wed, 24 Mar 2021 15:40:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 137E46B02ED; Wed, 24 Mar 2021 15:40:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0050.hostedemail.com [216.40.44.50]) by kanga.kvack.org (Postfix) with ESMTP id E903D6B02D9 for ; Wed, 24 Mar 2021 15:40:41 -0400 (EDT) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id A1255B7BE for ; Wed, 24 Mar 2021 19:40:41 +0000 (UTC) X-FDA: 77955785082.20.B723E67 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by imf21.hostedemail.com (Postfix) with ESMTP id 5B36AE0011F5 for ; Wed, 24 Mar 2021 19:40:40 +0000 (UTC) Received: by mail-pf1-f177.google.com with SMTP id q5so18154123pfh.10 for ; Wed, 24 Mar 2021 12:40:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=+yeH7O+SKmNDPP8TaHxytA3G6HzMFIl42cJgSOThu2I=; b=JGo/mcB0YjtnR+1GHNKVXI4+AHEvSmgx9OJfb33Luzzg9+3aeFAtBJUnWv5ZEJA2bU m+X2Z6tsiQ/vUUTpmstfSR/G0sURbnhrFMuGEcYq+NOfTVNuzQzO3XtvkZJqfN2UifDc cyKGgD8bt4VZQdK5qieDyLa4r/1OB/PNRwRaEOC1XwATI066WMl/K40+hWZg8nOw+RGB ZTbU5t2ccI/7e+zk+xUx76fNcFfpMfzV+BbgnGzizOkcq8ELSJPMVGemRvZDsoOGKe72 UFJuNzZvF3C1nUj+b/sU1EusgmrCiY8BvPZE8aY9i+XhKgcmyuOD7UuQsdHWRJ6FFkpA 2E7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to; bh=+yeH7O+SKmNDPP8TaHxytA3G6HzMFIl42cJgSOThu2I=; b=OWFYeBLj6a+m8TzaH7JSG3ufkwK17VLyq8EkcBMSobhwcc/sJ7MD+yWIowkLXNiZHm LomD+ZqgRHvGRRKkpPlGT7zjfX1AgYVX3qcUjXZ+i87en47aax/NLGmcSSzjh+hxWE/K IJ+kb2iqkwBEJVk+BV8OI0m1qxkBtPDeCIsP6m/XBDSx883in3/Fa7OF/mDzhIoXNVft D9cCP6i2cnNCtXXTX0qkU5sBNiSLGNfsjyvnNyL3dSHy8OTv5r8hsIdI3AdAkqU/Cvjn IDX9Zj5ONSRU5lOxvRWIhCUG/u28aguTXCg05ieVUoK9dgVQFaDnPEapuSspZF93KgbV vpGw== X-Gm-Message-State: AOAM532/QrVvRLxbYZ9CpIaf0Yc83R8CSzYOcSrG4t839PsQH5CxZVNe Gxea3rj26TkZeyWNeAiJcF4= X-Google-Smtp-Source: ABdhPJwWh1njqQv18gD4oaqp7GkE5xybIFL6i/QKhoBhPPVRekGPEeI/W0C6j5PpfBchLdHrsvVMhA== X-Received: by 2002:a17:902:c317:b029:e4:aecd:8539 with SMTP id k23-20020a170902c317b02900e4aecd8539mr5184277plx.61.1616614840185; Wed, 24 Mar 2021 12:40:40 -0700 (PDT) Received: from google.com ([2620:15c:211:201:7dfa:1e53:536:7976]) by smtp.gmail.com with ESMTPSA id h2sm3085493pfq.139.2021.03.24.12.40.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 12:40:38 -0700 (PDT) Date: Wed, 24 Mar 2021 12:40:36 -0700 From: Minchan Kim To: Georgi Djakov Cc: rostedt@goodmis.org, akpm@linux-foundation.org, mingo@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Liam Mark Subject: Re: [PATCH] mm: cma: add trace events for CMA alloc perf testing Message-ID: References: <20210324160740.15901-1-georgi.djakov@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210324160740.15901-1-georgi.djakov@linaro.org> X-Stat-Signature: shgon63c1wc5bmtqz58xme7be1rkjorc X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 5B36AE0011F5 Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf21; identity=mailfrom; envelope-from=""; helo=mail-pf1-f177.google.com; client-ip=209.85.210.177 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1616614840-400462 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 Wed, Mar 24, 2021 at 06:07:40PM +0200, Georgi Djakov wrote: > From: Liam Mark > > Add cma and migrate trace events to enable CMA allocation > performance to be measured via ftrace. > > Signed-off-by: Liam Mark > Signed-off-by: Georgi Djakov > --- > include/trace/events/cma.h | 39 +++++++++++++++++++++++++++++++++- > include/trace/events/migrate.h | 22 +++++++++++++++++++ > mm/cma.c | 4 ++++ > mm/migrate.c | 2 ++ > 4 files changed, 66 insertions(+), 1 deletion(-) > > diff --git a/include/trace/events/cma.h b/include/trace/events/cma.h > index 5017a8829270..cdfd06afb39a 100644 > --- a/include/trace/events/cma.h > +++ b/include/trace/events/cma.h > @@ -8,7 +8,7 @@ > #include > #include > > -TRACE_EVENT(cma_alloc, > +DECLARE_EVENT_CLASS(cma_alloc_class, > > TP_PROTO(unsigned long pfn, const struct page *page, > unsigned int count, unsigned int align), > @@ -61,6 +61,43 @@ TRACE_EVENT(cma_release, > __entry->count) > ); > > +TRACE_EVENT(cma_alloc_start, > + > + TP_PROTO(unsigned int count, unsigned int align), > + > + TP_ARGS(count, align), > + > + TP_STRUCT__entry( > + __field(unsigned int, count) > + __field(unsigned int, align) > + ), > + > + TP_fast_assign( > + __entry->count = count; > + __entry->align = align; > + ), > + > + TP_printk("count=%u align=%u", > + __entry->count, > + __entry->align) > +); > + > +DEFINE_EVENT(cma_alloc_class, cma_alloc, > + > + TP_PROTO(unsigned long pfn, const struct page *page, > + unsigned int count, unsigned int align), > + > + TP_ARGS(pfn, page, count, align) > +); > + > +DEFINE_EVENT(cma_alloc_class, cma_alloc_busy_retry, > + > + TP_PROTO(unsigned long pfn, const struct page *page, > + unsigned int count, unsigned int align), > + > + TP_ARGS(pfn, page, count, align) > +); > + > #endif /* _TRACE_CMA_H */ > > /* This part must be outside protection */ > diff --git a/include/trace/events/migrate.h b/include/trace/events/migrate.h > index 363b54ce104c..9fb2a3bbcdfb 100644 > --- a/include/trace/events/migrate.h > +++ b/include/trace/events/migrate.h > @@ -82,6 +82,28 @@ TRACE_EVENT(mm_migrate_pages, > __print_symbolic(__entry->mode, MIGRATE_MODE), > __print_symbolic(__entry->reason, MIGRATE_REASON)) > ); > + > +TRACE_EVENT(mm_migrate_pages_start, > + > + TP_PROTO(enum migrate_mode mode, int reason), > + > + TP_ARGS(mode, reason), > + > + TP_STRUCT__entry( > + __field(enum migrate_mode, mode) > + __field(int, reason) > + ), > + > + TP_fast_assign( > + __entry->mode = mode; > + __entry->reason = reason; > + ), > + > + TP_printk("mode=%s reason=%s", > + __print_symbolic(__entry->mode, MIGRATE_MODE), > + __print_symbolic(__entry->reason, MIGRATE_REASON)) > +); > + > #endif /* _TRACE_MIGRATE_H */ > > /* This part must be outside protection */ > diff --git a/mm/cma.c b/mm/cma.c > index 90e27458ddb7..984c85fd16ec 100644 > --- a/mm/cma.c > +++ b/mm/cma.c > @@ -443,6 +443,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, > if (!count) > goto out; > > + trace_cma_alloc_start(count, align); Can we add cma->name here to identify what cma instance would be? > + > mask = cma_bitmap_aligned_mask(cma, align); > offset = cma_bitmap_aligned_offset(cma, align); > bitmap_maxno = cma_bitmap_maxno(cma); > @@ -483,6 +485,8 @@ struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align, > > pr_debug("%s(): memory range at %p is busy, retrying\n", > __func__, pfn_to_page(pfn)); > + > + trace_cma_alloc_busy_retry(pfn, pfn_to_page(pfn), count, align); > /* try again with a bit different memory target */ > start = bitmap_no + mask + 1; > } > diff --git a/mm/migrate.c b/mm/migrate.c > index 47df0df8f21a..58b1b03e0c98 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1445,6 +1445,8 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, > int rc, nr_subpages; > LIST_HEAD(ret_pages); > > + trace_mm_migrate_pages_start(mode, reason); > + > if (!swapwrite) > current->flags |= PF_SWAPWRITE; > >