All of lore.kernel.org
 help / color / mirror / Atom feed
From: Axel Rasmussen <axelrasmussen@google.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	David Rientjes <rientjes@google.com>,
	 Davidlohr Bueso <dbueso@suse.de>, Ingo Molnar <mingo@kernel.org>,
	Ingo Molnar <mingo@redhat.com>,
	 Jerome Glisse <jglisse@redhat.com>,
	Laurent Dufour <ldufour@linux.ibm.com>,
	 "Liam R . Howlett" <Liam.Howlett@oracle.com>,
	Matthew Wilcox <willy@infradead.org>,
	 Michel Lespinasse <walken@google.com>,
	Peter Zijlstra <peterz@infradead.org>,
	 Vlastimil Babka <vbabka@suse.cz>, Will Deacon <will@kernel.org>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org,
	"AKASHI Takahiro" <takahiro.akashi@linaro.org>,
	"Aleksa Sarai" <cyphar@cyphar.com>,
	"Alexander Potapenko" <glider@google.com>,
	"Alexey Dobriyan" <adobriyan@gmail.com>,
	"Al Viro" <viro@zeniv.linux.org.uk>,
	"Andrei Vagin" <avagin@gmail.com>,
	"Ard Biesheuvel" <ardb@kernel.org>,
	"Brendan Higgins" <brendanhiggins@google.com>,
	chenqiwu <chenqiwu@xiaomi.com>,
	"Christian Brauner" <christian.brauner@ubuntu.com>,
	"Christian Kellner" <christian@kellner.me>,
	"Corentin Labbe" <clabbe@baylibre.com>,
	"Daniel Jordan" <daniel.m.jordan@oracle.com>,
	"Dan Williams" <dan.j.williams@intel.com>,
	"David Gow" <davidgow@google.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Dmitry V. Levin" <ldv@altlinux.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	"Eugene Syromiatnikov" <esyr@redhat.com>,
	"Jamie Liu" <jamieliu@google.com>,
	"Jason Gunthorpe" <jgg@ziepe.ca>,
	"John Garry" <john.garry@huawei.com>,
	"John Hubbard" <jhubbard@nvidia.com>,
	"Jonathan Adams" <jwadams@google.com>,
	"Junaid Shahid" <junaids@google.com>,
	"Kees Cook" <keescook@chromium.org>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	"Konstantin Khlebnikov" <khlebnikov@yandex-team.ru>,
	"Krzysztof Kozlowski" <krzk@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Masahiro Yamada" <yamada.masahiro@socionext.com>,
	"Masami Hiramatsu" <mhiramat@kernel.org>,
	"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
	"Michal Hocko" <mhocko@suse.com>,
	"Mikhail Zaslonko" <zaslonko@linux.ibm.com>,
	"Petr Mladek" <pmladek@suse.com>,
	"Ralph Campbell" <rcampbell@nvidia.com>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	"Roman Gushchin" <guro@fb.com>,
	"Shakeel Butt" <shakeelb@google.com>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"Tal Gilboa" <talgi@mellanox.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Uwe Kleine-König" <uwe@kleine-koenig.org>,
	"Vincenzo Frascino" <vincenzo.frascino@arm.com>,
	"Yang Shi" <yang.shi@linux.alibaba.com>,
	"Yu Zhao" <yuzhao@google.com>,
	"Axel Rasmussen" <axelrasmussen@google.com>
Subject: [PATCH v2 3/7] mmap_lock: add a histogram structure to struct mm_struct
Date: Thu, 28 May 2020 16:52:56 -0700	[thread overview]
Message-ID: <20200528235256.76129-1-axelrasmussen@google.com> (raw)

This histogram will be used to measure lock acquisition latency, when
the acquisition is contended. Cases where we acquire the lock
immediately with no contention are recorded as "0" (to avoid incurring
the cost of really computing the time, while retaining the ability to
get an accurate total lock acquisition count).

Signed-off-by: Axel Rasmussen <axelrasmussen@google.com>
---
 include/linux/mm_types.h | 11 +++++++++++
 mm/Kconfig               | 13 +++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index d13b90399c16..efeb5db1959d 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -376,6 +376,10 @@ struct core_state {
 	struct completion startup;
 };
 
+#ifdef CONFIG_MMAP_LOCK_HISTOGRAMS
+struct histogram_rcu;
+#endif
+
 struct kioctx_table;
 struct mm_struct {
 	struct {
@@ -437,6 +441,13 @@ struct mm_struct {
 					     * counters
 					     */
 		struct rw_semaphore mmap_lock;
+#ifdef CONFIG_MMAP_LOCK_HISTOGRAMS
+		/* Histogram of mmap_lock contended acquire delays. kmalloc'd
+		 * so we can use a forward declaration, to avoid circular
+		 * dependencies between headers.
+		 */
+		struct histogram_rcu *mmap_lock_contention;
+#endif
 
 		struct list_head mmlist; /* List of maybe swapped mm's.	These
 					  * are globally strung together off
diff --git a/mm/Kconfig b/mm/Kconfig
index c1acc34c1c35..231862afc2ce 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -817,6 +817,19 @@ config DEVICE_PRIVATE
 config FRAME_VECTOR
 	bool
 
+config MMAP_LOCK_HISTOGRAMS
+	bool "mmap_lock histograms"
+	select HISTOGRAM
+	default n
+
+	help
+	  Record and report latency histograms describing mmap_lock
+	  contention. Stats can be read from /proc/<pid>/mmap_lock_contention.
+	  True latency is only computed for *contended* acquires, to minimize
+	  overhead. Uncontended acquires are recorded as having "0" latency.
+
+	  If unsure, say "n".
+
 config ARCH_USES_HIGH_VMA_FLAGS
 	bool
 config ARCH_HAS_PKEYS
-- 
2.27.0.rc0.183.gde8f92d652-goog



                 reply	other threads:[~2020-05-28 23:53 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200528235256.76129-1-axelrasmussen@google.com \
    --to=axelrasmussen@google.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=adobriyan@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=ardb@kernel.org \
    --cc=avagin@gmail.com \
    --cc=brendanhiggins@google.com \
    --cc=chenqiwu@xiaomi.com \
    --cc=christian.brauner@ubuntu.com \
    --cc=christian@kellner.me \
    --cc=clabbe@baylibre.com \
    --cc=cyphar@cyphar.com \
    --cc=dan.j.williams@intel.com \
    --cc=daniel.m.jordan@oracle.com \
    --cc=davem@davemloft.net \
    --cc=davidgow@google.com \
    --cc=dbueso@suse.de \
    --cc=ebiederm@xmission.com \
    --cc=esyr@redhat.com \
    --cc=glider@google.com \
    --cc=guro@fb.com \
    --cc=jamieliu@google.com \
    --cc=jgg@ziepe.ca \
    --cc=jglisse@redhat.com \
    --cc=jhubbard@nvidia.com \
    --cc=john.garry@huawei.com \
    --cc=junaids@google.com \
    --cc=jwadams@google.com \
    --cc=keescook@chromium.org \
    --cc=khlebnikov@yandex-team.ru \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=krzk@kernel.org \
    --cc=ldufour@linux.ibm.com \
    --cc=ldv@altlinux.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mark.rutland@arm.com \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rcampbell@nvidia.com \
    --cc=rdunlap@infradead.org \
    --cc=rientjes@google.com \
    --cc=rostedt@goodmis.org \
    --cc=shakeelb@google.com \
    --cc=takahiro.akashi@linaro.org \
    --cc=talgi@mellanox.com \
    --cc=tglx@linutronix.de \
    --cc=uwe@kleine-koenig.org \
    --cc=vbabka@suse.cz \
    --cc=vincenzo.frascino@arm.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=walken@google.com \
    --cc=will@kernel.org \
    --cc=willy@infradead.org \
    --cc=yamada.masahiro@socionext.com \
    --cc=yang.shi@linux.alibaba.com \
    --cc=yuzhao@google.com \
    --cc=zaslonko@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.