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=-17.4 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT, USER_IN_DEF_DKIM_WL 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 7C399C433DF for ; Thu, 28 May 2020 23:53:15 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 32AAC206E2 for ; Thu, 28 May 2020 23:53:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="N0GQM43B" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 32AAC206E2 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D581C800BC; Thu, 28 May 2020 19:53:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CB97680010; Thu, 28 May 2020 19:53:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B80A1800BC; Thu, 28 May 2020 19:53:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0054.hostedemail.com [216.40.44.54]) by kanga.kvack.org (Postfix) with ESMTP id 9DC0280010 for ; Thu, 28 May 2020 19:53:14 -0400 (EDT) Received: from smtpin13.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 5A6308245571 for ; Thu, 28 May 2020 23:53:14 +0000 (UTC) X-FDA: 76867781508.13.jump70_909f6316d6a1c Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin13.hostedemail.com (Postfix) with ESMTP id 3A50F18140B60 for ; Thu, 28 May 2020 23:53:14 +0000 (UTC) X-HE-Tag: jump70_909f6316d6a1c X-Filterd-Recvd-Size: 8603 Received: from mail-yb1-f202.google.com (mail-yb1-f202.google.com [209.85.219.202]) by imf25.hostedemail.com (Postfix) with ESMTP for ; Thu, 28 May 2020 23:53:13 +0000 (UTC) Received: by mail-yb1-f202.google.com with SMTP id g9so966954ybc.1 for ; Thu, 28 May 2020 16:53:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=b4hv8mBjeZzSMuC0+qYdun91rFKPD4QruDrMsYOAH0w=; b=N0GQM43BUCysqImySOile1VYR9C2wgq+hVF1K8OH0g/X8oP59BWXBbmG41oX3kb/bz c8fooc5AGVBDCPxu9dPZTJa2fmqN9ySgvnIzNUayrpg4WYK1lh1bWjIzYF1A3NTmFEM4 nIgMRn7bIQnKsCNWaeA6QPAIX2dKS/Q0WiWycoNgiBzi12Ygg6RpI8L+ST7qQD4Gghft N59LUKKo+VK+EVzTFqPuBIm9MF6pGZ3a4WuQhlZUqr/gflUrtQaEwqnuO2f+GMoYud1e rILCD+SK9XA7ZHvBanqnTtsmnM/WJJlbK4gcW6aXDn/JtXjJgepiPE0lCRwmYDOU4oTI BSpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=b4hv8mBjeZzSMuC0+qYdun91rFKPD4QruDrMsYOAH0w=; b=UQm4sn7meiA1urJYm9//02qvcFB6dKPVZ6TR0MynD5ZvqodBy9LT1pCJxSegcGOj8d qf8St4eTrAIJjraDKBKB24tZ/nppSYZwES1XrRmpR1HF4ikraLpj3RV5Snnn6V0nwcOX Vtxxk+t02PVN76Q7NWO8YmFvINI+lpiedWUmwQYKalT+n66n6hT6wwV33d46/rZGT55L ZBtDw89I8PXrE7oinqEzIrptpW1oQlPI+8scgReg/zS3Y37F0CYodXRuREU+C6pb2NcR DJyZpp96kiDIF3/KvZj6mAFmTD0Rcqfu/AEDnWPT62Sh9xne3UkrTUenFTodNLmqlmTv 425A== X-Gm-Message-State: AOAM533MX3uWR4Wyf9Zr8vBqnayDMcgPAbRCEttc4A6CQ1qjKJGj7xp3 xHmf+rE5oLJaOE/UjYuQMFPJ1Xu8gjrFSpuCDGVE X-Google-Smtp-Source: ABdhPJzZ8MROg+Gbmi6hypGFS6Dswd6mXkwle3uFwpRhbuwvJ8PaqPg2HSiw67IOoPn1MjktHFOSM2RBy7YuDJcBmstW X-Received: by 2002:a5b:5d0:: with SMTP id w16mr9499053ybp.110.1590709992949; Thu, 28 May 2020 16:53:12 -0700 (PDT) Date: Thu, 28 May 2020 16:53:10 -0700 Message-Id: <20200528235310.79194-1-axelrasmussen@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.27.0.rc0.183.gde8f92d652-goog Subject: [PATCH v2 7/7] mmap_lock: add a tracepoint to contended acquisitions From: Axel Rasmussen To: Andrew Morton , David Rientjes , Davidlohr Bueso , Ingo Molnar , Ingo Molnar , Jerome Glisse , Laurent Dufour , "Liam R . Howlett" , Matthew Wilcox , Michel Lespinasse , Peter Zijlstra , Vlastimil Babka , Will Deacon Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, AKASHI Takahiro , Aleksa Sarai , Alexander Potapenko , Alexey Dobriyan , Al Viro , Andrei Vagin , Ard Biesheuvel , Brendan Higgins , chenqiwu , Christian Brauner , Christian Kellner , Corentin Labbe , Daniel Jordan , Dan Williams , David Gow , "David S. Miller" , "Dmitry V. Levin" , "Eric W. Biederman" , Eugene Syromiatnikov , Jamie Liu , Jason Gunthorpe , John Garry , John Hubbard , Jonathan Adams , Junaid Shahid , Kees Cook , "Kirill A. Shutemov" , Konstantin Khlebnikov , Krzysztof Kozlowski , Mark Rutland , Masahiro Yamada , Masami Hiramatsu , Mathieu Desnoyers , Michal Hocko , Mikhail Zaslonko , Petr Mladek , Ralph Campbell , Randy Dunlap , Roman Gushchin , Shakeel Butt , Steven Rostedt , Tal Gilboa , Thomas Gleixner , "=?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?=" , Vincenzo Frascino , Yang Shi , Yu Zhao , Axel Rasmussen Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 3A50F18140B60 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 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: This allows for the possibiilty of attaching to the tracepoint, to collect more detailed information than the contention histogram would otherwise provide. The tracepoint is called in the same codepath where we increment the contention histogram (so, it's not really available if the histogram is disabled). The intent is that this is a more detailed but more expensive *extension* to the basic data the contention histogram provides. Signed-off-by: Axel Rasmussen --- include/linux/mmap_lock.h | 9 +++++++-- include/trace/events/mmap_lock.h | 34 ++++++++++++++++++++++++++++++++ mm/mmap_lock.c | 12 +++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 include/trace/events/mmap_lock.h diff --git a/include/linux/mmap_lock.h b/include/linux/mmap_lock.h index 1c212a403911..4faed7a5bb49 100644 --- a/include/linux/mmap_lock.h +++ b/include/linux/mmap_lock.h @@ -11,6 +11,8 @@ .mmap_lock = __RWSEM_INITIALIZER(name.mmap_lock), #ifdef CONFIG_MMAP_LOCK_HISTOGRAMS +void __trace_mmap_lock_contended(struct mm_struct *mm, u64 duration); + static inline void __mmap_lock_histogram_record_duration(struct mm_struct *mm, u64 duration) { @@ -21,8 +23,11 @@ static inline void __mmap_lock_histogram_record_duration(struct mm_struct *mm, static inline void mmap_lock_histogram_record(struct mm_struct *mm, u64 start_time_ns) { - __mmap_lock_histogram_record_duration(mm, - sched_clock() - start_time_ns); + u64 duration = sched_clock() - start_time_ns; + + /* This function is only used in the contended case, so trace here. */ + __trace_mmap_lock_contended(mm, duration); + __mmap_lock_histogram_record_duration(mm, duration); } #endif diff --git a/include/trace/events/mmap_lock.h b/include/trace/events/mmap_lock.h new file mode 100644 index 000000000000..afd581f5fbdb --- /dev/null +++ b/include/trace/events/mmap_lock.h @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM mmap_lock + +#if !defined(_TRACE_MMAP_LOCK_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_MMAP_LOCK_H + +#include +#include + +struct mm_struct; + +TRACE_EVENT(mmap_lock_contended, + + TP_PROTO(struct mm_struct *mm, u64 duration), + + TP_ARGS(mm, duration), + + TP_STRUCT__entry( + __field(struct mm_struct *, mm) + __field(u64, duration) + ), + + TP_fast_assign( + __entry->mm = mm; + __entry->duration = duration; + ), + + TP_printk("mm=%p duration=%llu\n", __entry->mm, __entry->duration)); + +#endif /* _TRACE_MMAP_LOCK_H */ + +/* This part must be outside protection */ +#include diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index f166cf40c60a..406c43039b0b 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -1,8 +1,20 @@ // SPDX-License-Identifier: GPL-2.0 +#define CREATE_TRACE_POINTS +#include + #include #include #include +void __trace_mmap_lock_contended(struct mm_struct *mm, u64 duration) +{ + /* This must be in a separate file, as otherwise there's a circular + * dependency between linux/mmap_lock.h and trace/events/mmap_lock.h. + */ + trace_mmap_lock_contended(mm, duration); +} +EXPORT_SYMBOL_GPL(__trace_mmap_lock_contended); + #define MMAP_LOCK_CONTENDED(_mm, try, lock) \ do { \ if (!try(&(_mm)->mmap_lock)) { \ -- 2.27.0.rc0.183.gde8f92d652-goog