From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Yannick Brosseau <yannick.brosseau@gmail.com>,
Mel Gorman <mgorman@suse.de>,
Rob van der Heij <rvdheij@gmail.com>,
stable@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org
Cc: "lttng-dev@lists.lttng.org" <lttng-dev@lists.lttng.org>
Subject: [-stable 3.8.1 performance regression] madvise POSIX_FADV_DONTNEED
Date: Mon, 17 Jun 2013 10:13:57 -0400 [thread overview]
Message-ID: <20130617141357.GA6034@Krystal> (raw)
In-Reply-To: <51BE1828.3060206@gmail.com>
Hi,
CCing lkml on this,
* Yannick Brosseau (yannick.brosseau@gmail.com) wrote:
> Hi all,
>
> We discovered a performance regression in recent kernels with LTTng
> related to the use of fadvise DONTNEED.
> A call to this syscall is present in the LTTng consumer.
>
> The following kernel commit cause the call to fadvise to be sometime
> really slower.
>
> Kernel commit info:
> mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to discard
> all pages
> main tree: (since 3.9-rc1)
> commit 67d46b296a1ba1477c0df8ff3bc5e0167a0b0732
> stable tree: (since 3.8.1)
> https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit?id=bb01afe62feca1e7cdca60696f8b074416b0910d
>
> On the workload test, we observe that the call to fadvise takes about
> 4-5 us before this patch is applied. After applying the patch, The
> syscall now takes values from 5 us up to 4 ms (4000 us) sometime. The
> effect on lttng is that the consumer is frozen for this long period
> which leads to dropped event in the trace.
We use POSIX_FADV_DONTNEED in LTTng so the kernel know it's not useful
to keep the trace data around after it is flushed to disk. From what I
gather from the commit changelog, it seems that the POSIX_FADV_DONTNEED
operation now touches kernel data structures shared amongst processors
that have much higher contention/overhead than previously.
How does your page cache memory usage behave prior/after this kernel
commit ?
Also, can you try instrumenting the "count", "start_index" and
"end_index" values within fadvise64_64 with commit
67d46b296a1ba1477c0df8ff3bc5e0167a0b0732 applied and log this though
LTTng ? This will tell us whether the lru_add_drain_all() hit is taken
for a good reason, or due to an unforeseen off-by-one type of issue in
the new test:
if (count < (end_index - start_index + 1)) {
Thanks,
Mathieu
>
> If we remove the call to fadvise in src/common/consumer.c, we don't
> have any dropped event and we don't observe any bad side effect.
> (The added latency seem to come from the new call to
> lru_add_drain_all(). We removed this line and the performance went back
> to normal.)
>
> It's obviously a problem in the kernel, but since it impacts LTTng, we
> wanted to report it here first and ask advice on what should be the
> next step to solve this problem.
>
> If you want to see for youself, you can find the trace with the long
> call to fadvise here:
> http://www.dorsal.polymtl.ca/~rbeamonte/3.8.0~autocreated-4469887.tar.gz
>
> Yannick and Raphael
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
next parent reply other threads:[~2013-06-17 14:13 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <51BE1828.3060206@gmail.com>
2013-06-17 14:13 ` Mathieu Desnoyers [this message]
2013-06-17 21:24 ` [-stable 3.8.1 performance regression] madvise POSIX_FADV_DONTNEED Andrew Morton
2013-06-17 21:39 ` Raphaël Beamonte
[not found] ` <CAE_Gge34HCroSgNgiXL1j7Le3CNKRXR=7TZQhJSmY+wfWniKug@mail.gmail.com>
2013-06-17 21:57 ` [lttng-dev] " Andrew Morton
2013-06-18 2:15 ` Mathieu Desnoyers
2013-06-18 2:44 ` Andrew Morton
2013-06-18 9:29 ` Mel Gorman
2013-06-18 10:11 ` Mel Gorman
2013-06-19 19:25 ` Mathieu Desnoyers
2013-06-20 6:36 ` Rob van der Heij
[not found] ` <CAJCc=kijujORhPUmPvzHj-MMdyVbf-iHEK0Jx-VHbTO8q4ESFA@mail.gmail.com>
2013-06-20 12:20 ` Mathieu Desnoyers
2013-06-25 1:56 ` Dave Chinner
2013-07-02 13:58 ` Mathieu Desnoyers
2013-07-03 0:55 ` Mathieu Desnoyers
2013-07-03 8:47 ` Mel Gorman
2013-07-03 14:53 ` Jeff Moyer
2013-07-03 14:53 ` Jeff Moyer
2013-07-04 0:03 ` Dave Chinner
2013-07-04 0:31 ` Mathieu Desnoyers
2013-07-04 21:11 ` Rob van der Heij
2013-07-05 1:42 ` Dave Chinner
2013-07-05 2:34 ` Mathieu Desnoyers
2013-07-03 18:47 ` Yannick Brosseau
2013-07-05 14:18 ` Mel Gorman
2013-07-05 14:18 ` Mel Gorman
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=20130617141357.GA6034@Krystal \
--to=mathieu.desnoyers@efficios.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lttng-dev@lists.lttng.org \
--cc=mgorman@suse.de \
--cc=rvdheij@gmail.com \
--cc=stable@vger.kernel.org \
--cc=yannick.brosseau@gmail.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.