All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <dave.hansen@intel.com>
To: Nadav Amit <namit@vmware.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andy Lutomirski <luto@kernel.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>,
	Dave Hansen <dave.hansen@linux.intel.com>
Subject: Re: [PATCH 8/9] x86/tlb: Privatize cpu_tlbstate
Date: Tue, 25 Jun 2019 14:52:31 -0700	[thread overview]
Message-ID: <aa90347f-d1da-6bd7-dbf0-786f157eb370@intel.com> (raw)
In-Reply-To: <20190613064813.8102-9-namit@vmware.com>

On 6/12/19 11:48 PM, Nadav Amit wrote:
> cpu_tlbstate is mostly private and only the variable is_lazy is shared.
> This causes some false-sharing when TLB flushes are performed.

Presumably, all CPUs doing TLB flushes read 'is_lazy'.  Because of this,
when we write to it we have to do the cache coherency dance to get rid
of all the CPUs that might have a read-only copy.

I would have *thought* that we only do writes when we enter or exist
lazy mode.  That's partially true.  We do write in enter_lazy_tlb(), but
we also *unconditionally* write in switch_mm_irqs_off().  That seems
like it might be responsible for a chunk (or even a vast majority) of
the cacheline bounces.

Is there anything preventing us from turning the switch_mm_irqs_off()
write into:

	if (was_lazy)
		this_cpu_write(cpu_tlbstate.is_lazy, false);

?

I think this patch is probably still a good general idea, but I just
wonder if reducing the writes is a better way to reduce bounces.

  parent reply	other threads:[~2019-06-25 21:52 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-13  6:48 [PATCH 0/9] x86: Concurrent TLB flushes and other improvements Nadav Amit
2019-06-13  6:48 ` [PATCH 1/9] smp: Remove smp_call_function() and on_each_cpu() return values Nadav Amit
2019-06-23 12:32   ` [tip:smp/hotplug] " tip-bot for Nadav Amit
2019-06-13  6:48 ` [PATCH 2/9] smp: Run functions concurrently in smp_call_function_many() Nadav Amit
2019-06-13  6:48 ` [PATCH 3/9] x86/mm/tlb: Refactor common code into flush_tlb_on_cpus() Nadav Amit
2019-06-25 21:07   ` Dave Hansen
2019-06-26  1:57     ` Nadav Amit
2019-06-13  6:48 ` [PATCH 4/9] x86/mm/tlb: Flush remote and local TLBs concurrently Nadav Amit
2019-06-13  6:48   ` [Xen-devel] " Nadav Amit
2019-06-13  6:48   ` Nadav Amit via Virtualization
2019-06-25 21:29   ` Dave Hansen
2019-06-25 21:29     ` [Xen-devel] " Dave Hansen
2019-06-25 21:29     ` Dave Hansen
2019-06-26  2:35     ` Nadav Amit
2019-06-26  2:35       ` [Xen-devel] " Nadav Amit
2019-06-26  3:00       ` Dave Hansen
2019-06-26  3:00         ` [Xen-devel] " Dave Hansen
2019-06-26  3:32         ` Nadav Amit
2019-06-26  3:32           ` [Xen-devel] " Nadav Amit
2019-06-26  3:32           ` Nadav Amit via Virtualization
2019-06-26  3:00       ` Dave Hansen
2019-06-26  2:35     ` Nadav Amit via Virtualization
2019-06-26  3:36   ` Andy Lutomirski
2019-06-26  3:36     ` [Xen-devel] " Andy Lutomirski
2019-06-26  3:36     ` Andy Lutomirski
2019-06-26  3:48     ` Nadav Amit
2019-06-26  3:48       ` [Xen-devel] " Nadav Amit
2019-06-26  3:48       ` Nadav Amit via Virtualization
2019-06-26  3:51       ` Andy Lutomirski
2019-06-26  3:51       ` Andy Lutomirski
2019-06-26  3:51         ` [Xen-devel] " Andy Lutomirski
2019-06-13  6:48 ` [PATCH 5/9] x86/mm/tlb: Optimize local TLB flushes Nadav Amit
2019-06-25 21:36   ` Dave Hansen
2019-06-26 16:33     ` Andy Lutomirski
2019-06-26 16:39       ` Nadav Amit
2019-06-26 16:50         ` Andy Lutomirski
2019-06-13  6:48 ` [PATCH 6/9] KVM: x86: Provide paravirtualized flush_tlb_multi() Nadav Amit
2019-06-25 21:40   ` Dave Hansen
2019-06-26  2:39     ` Nadav Amit
2019-06-26  3:35       ` Andy Lutomirski
2019-06-26  3:41         ` Nadav Amit
2019-06-26  3:56           ` Andy Lutomirski
2019-06-26  6:30             ` Nadav Amit
2019-06-26 16:37               ` Andy Lutomirski
2019-06-26 17:41                 ` Vitaly Kuznetsov
2019-06-26 18:21                   ` Andy Lutomirski
2019-06-13  6:48 ` [PATCH 7/9] smp: Do not mark call_function_data as shared Nadav Amit
2019-06-23 12:31   ` [tip:smp/hotplug] " tip-bot for Nadav Amit
2019-06-13  6:48 ` [PATCH 8/9] x86/tlb: Privatize cpu_tlbstate Nadav Amit
2019-06-14 15:58   ` Sean Christopherson
2019-06-17 17:10     ` Nadav Amit
2019-06-25 21:52   ` Dave Hansen [this message]
2019-06-26  1:22     ` Nadav Amit
2019-06-26  3:57     ` Andy Lutomirski
2019-06-13  6:48 ` [PATCH 9/9] x86/apic: Use non-atomic operations when possible Nadav Amit
2019-06-23 12:16   ` [tip:x86/apic] " tip-bot for Nadav Amit
2019-06-25 21:58   ` [PATCH 9/9] " Dave Hansen
2019-06-25 22:03     ` Thomas Gleixner
2019-06-23 12:37 ` [PATCH 0/9] x86: Concurrent TLB flushes and other improvements Thomas Gleixner
2019-06-25 22:02 ` Dave Hansen
2019-06-26  1:34   ` Nadav Amit

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=aa90347f-d1da-6bd7-dbf0-786f157eb370@intel.com \
    --to=dave.hansen@intel.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=namit@vmware.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.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 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.