From: Ingo Molnar <mingo@kernel.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Rik van Riel <riel@redhat.com>, Hugh Dickins <hughd@google.com>,
Minchan Kim <minchan@kernel.org>,
Dave Hansen <dave.hansen@intel.com>,
Andi Kleen <andi@firstfloor.org>, H Peter Anvin <hpa@zytor.com>,
Linux-MM <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 0/3] TLB flush multiple pages per IPI v5
Date: Thu, 11 Jun 2015 17:26:00 +0200 [thread overview]
Message-ID: <20150611152559.GA15509@gmail.com> (raw)
In-Reply-To: <20150610101529.GE26425@suse.de>
* Mel Gorman <mgorman@suse.de> wrote:
> > > I made a really clear and unambiguous chain of arguments:
> > >
> > > - I'm unconvinced about the benefits of INVLPG in general, and your patches adds
> > > a whole new bunch of them. [...]
> >
> > ... and note that your claim that 'we were doing them before, this is just an
> > equivalent transformation' is utter bullsh*t technically: what we were doing
> > previously was a hideously expensive IPI combined with an INVLPG.
>
> And replacing it with an INVLPG without excessive IPI transmission is changing
> one major variable. Going straight to a full TLB flush is changing two major
> variables. [...]
But this argument employs the fallacy that the transition to 'batching with PFN
tracking' is not a major variable in itself. In reality it is a major variable: it
adds extra complexity, such as the cross CPU data flow (the pfn tracking), and it
also changes the distribution of the flushes and related caching patterns.
> > [...]
> >
> > The batching limit (which you set to 32) should then be tuned by comparing it
> > to a working full-flushing batching logic, not by comparing it to the previous
> > single IPI per single flush approach!
>
> We can decrease it easily but increasing it means we also have to change
> SWAP_CLUSTER_MAX because otherwise enough pages are not unmapped for flushes and
> it is a requirement that we flush before freeing the pages. That changes another
> complex variable because at the very least, it alters LRU lock hold times.
('should then be' implied 'as a separate patch/series', obviously.)
I.e. all I wanted to observe is that I think the series did not explore the
performance impact of the batching limit, because it was too focused on the INVLPG
approach which has an internal API limit of 33.
Now that the TLB flushing side is essentially limit-less, a future enhancement
would be to further increase batching.
My suspicion is that say doubling SWAP_CLUSTER_MAX would possibly further reduce
the IPI rate, at a negligible cost.
But this observation does not impact the current series in any case.
> > ... and if the benefits of a complex algorithm are not measurable and if there
> > are doubts about the cost/benefit tradeoff then frankly it should not exist in
> > the kernel in the first place. It's not like the Linux TLB flushing code is
> > too boring due to overwhelming simplicity.
> >
> > and yes, it's my job as a maintainer to request measurements justifying
> > complexity and your ad hominem attacks against me are disgusting - you should
> > know better.
>
> It was not intended as an ad hominem attack and my apologies for that. I wanted
> to express my frustration that a series that adjusted one variable with known
> benefit will be rejected for a series that adjusts two major variables instead
> with the second variable being very sensitive to workload and CPU.
... but that's not what it did: it adjusted multiple complex variables already,
with a questionable rationale for more complexity.
And my argument was and continues to be: start with the simplest variant and
iterate from there. Which you seem to have adapted in your latest series, so my
concerns are addressed:
Acked-by: Ingo Molnar <mingo@kernel.org>
Thanks,
Ingo
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2015-06-11 15:26 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-08 12:50 [PATCH 0/3] TLB flush multiple pages per IPI v5 Mel Gorman
2015-06-08 12:50 ` [PATCH 1/3] x86, mm: Trace when an IPI is about to be sent Mel Gorman
2015-06-08 12:50 ` [PATCH 2/3] mm: Send one IPI per CPU to TLB flush multiple pages that were recently unmapped Mel Gorman
2015-06-08 22:38 ` Andrew Morton
2015-06-09 11:07 ` Mel Gorman
2015-06-08 12:50 ` [PATCH 3/3] mm: Defer flush of writable TLB entries Mel Gorman
2015-06-08 17:45 ` [PATCH 0/3] TLB flush multiple pages per IPI v5 Ingo Molnar
2015-06-08 18:21 ` Dave Hansen
2015-06-08 19:52 ` Ingo Molnar
2015-06-08 20:03 ` Ingo Molnar
2015-06-08 21:07 ` Dave Hansen
2015-06-08 21:50 ` Ingo Molnar
2015-06-09 8:47 ` Mel Gorman
2015-06-09 10:32 ` Ingo Molnar
2015-06-09 11:20 ` Mel Gorman
2015-06-09 12:43 ` Ingo Molnar
2015-06-09 13:05 ` Mel Gorman
2015-06-10 8:51 ` Ingo Molnar
2015-06-10 9:08 ` Ingo Molnar
2015-06-10 10:15 ` Mel Gorman
2015-06-11 15:26 ` Ingo Molnar [this message]
2015-06-10 9:19 ` Mel Gorman
2015-06-09 15:34 ` Dave Hansen
2015-06-09 16:49 ` Dave Hansen
2015-06-09 21:14 ` Dave Hansen
2015-06-09 21:54 ` Linus Torvalds
2015-06-09 22:32 ` Mel Gorman
2015-06-09 22:35 ` Mel Gorman
2015-06-10 13:13 ` Andi Kleen
2015-06-10 16:17 ` Linus Torvalds
2015-06-10 16:42 ` Linus Torvalds
2015-06-10 17:24 ` Mel Gorman
2015-06-10 17:31 ` Linus Torvalds
2015-06-10 18:08 ` Josh Boyer
2015-06-10 17:07 ` Mel Gorman
2015-06-21 20:22 ` Kirill A. Shutemov
2015-06-25 11:48 ` Ingo Molnar
2015-06-25 18:36 ` Linus Torvalds
2015-06-25 19:15 ` Vlastimil Babka
2015-06-25 22:04 ` Linus Torvalds
2015-06-25 18:46 ` Dave Hansen
2015-06-26 9:08 ` Ingo Molnar
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=20150611152559.GA15509@gmail.com \
--to=mingo@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=hughd@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mgorman@suse.de \
--cc=minchan@kernel.org \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).