From: Dave Hansen <dave.hansen@intel.com>
To: Ingo Molnar <mingo@kernel.org>, 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>,
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: Tue, 09 Jun 2015 14:14:49 -0700 [thread overview]
Message-ID: <55775749.3090004@intel.com> (raw)
In-Reply-To: <55771909.2020005@intel.com>
I did some of what I talked about earlier in the thread.
I think the sfence (via mb()) is potentially unfair since it removes
some of the CPU's ability to optimize things. For this kind of test,
any ability that the CPU has to smear the overhead around is a bonus in
practice and should be taken in to account for these tests.
Here's the horribly hacked-together patch so you can see precisely
what's going on:
https://www.sr71.net/~dave/intel/measure-tlb-stuff.patch
Here's a Haswell Xeon:
> [ 0.222090] x86/fpu:######## MM instructions: ############################
> [ 0.222168] x86/fpu: Cost of: __flush_tlb() fn : 124 cycles avg: 125
> [ 0.222623] x86/fpu: Cost of: __flush_tlb_global() fn : 960 cycles avg: 968
> [ 0.222744] x86/fpu: Cost of: __flush_tlb_single() fn : 216 cycles avg: 216
> [ 0.222864] x86/fpu: Cost of: __flush_tlb_single() vmal fn : 216 cycles avg: 219
> [ 0.222987] x86/fpu: Cost of: __flush_tlb_one() OLD fn : 216 cycles avg: 216
> [ 0.223139] x86/fpu: Cost of: __flush_tlb_range() fn : 284 cycles avg: 287
> [ 0.223272] x86/fpu: Cost of: tlb miss fn : 0 cycles avg: 0
And a Westmere Xeon:
> [ 1.057770] x86/fpu:######## MM instructions: ############################
> [ 1.065876] x86/fpu: Cost of: __flush_tlb() fn : 108 cycles avg: 109
> [ 1.075188] x86/fpu: Cost of: __flush_tlb_global() fn : 828 cycles avg: 829
> [ 1.084162] x86/fpu: Cost of: __flush_tlb_single() fn : 232 cycles avg: 237
> [ 1.093175] x86/fpu: Cost of: __flush_tlb_single() vmal fn : 240 cycles avg: 240
> [ 1.102214] x86/fpu: Cost of: __flush_tlb_one() OLD fn : 284 cycles avg: 286
> [ 1.111299] x86/fpu: Cost of: __flush_tlb_range() fn : 472 cycles avg: 478
> [ 1.120281] x86/fpu: Cost of: tlb miss fn : 0 cycles avg: 0
I was rather surprised how close the three __flush_tlb_single/one()
variants were on Haswell. I've looked at a few other CPUs and this was
the only one that acted like this.
The 0 cycle TLB miss was also interesting. It goes back up to something
reasonable if I put the mb()/mfence's back.
I don't think this kind of thing is a realistic test unless we put
mfence's around all of our TLB flushes in practice. :)
--
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-09 21:14 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
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 [this message]
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=55775749.3090004@intel.com \
--to=dave.hansen@intel.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--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=mingo@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).