mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Huang\, Ying" <ying.huang@intel.com>
To: Aaron Lu <aaron.lu@intel.com>
Cc: <x86@kernel.org>, <linux-kernel@vger.kernel.org>,
	Alex Shi <alex.shi@linaro.org>,
	Tomoki Sekiyama <tomoki.sekiyama.qu@hitachi.com>,
	Davidlohr Bueso <dave@stgolabs.net>,
	"Huang Ying" <ying.huang@intel.com>,
	Ingo Molnar <mingo@redhat.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"\"H. Peter Anvin\"" <hpa@zytor.com>
Subject: Re: [PATCH] x86/irq: do not substract irq_tlb_count from irq_call_count
Date: Thu, 11 Aug 2016 08:13:19 -0700	[thread overview]
Message-ID: <87h9arz6cw.fsf@yhuang-mobile.sh.intel.com> (raw)
In-Reply-To: <20160811074430.GA18163@aaronlu.sh.intel.com> (Aaron Lu's message of "Thu, 11 Aug 2016 15:44:30 +0800")

Aaron Lu <aaron.lu@intel.com> writes:

> Since commit 52aec3308db8 ("x86/tlb: replace INVALIDATE_TLB_VECTOR by
> CALL_FUNCTION_VECTOR"), the tlb remote shootdown is done through call
> function vector. That commit didn't take care of irq_tlb_count so later
> commit fd0f5869724f ("x86: Distinguish TLB shootdown interrupts from
> other functions call interrupts") tried to fix it.
>
> The fix assumes every increase of irq_tlb_count has a corresponding
> increase of irq_call_count. So the irq_call_count is always bigger than
> irq_tlb_count and we could substract irq_tlb_count from irq_call_count.
>
> Unfortunately this is not true for the smp_call_function_single case.
> The IPI is only sent if the target CPU's call_single_queue is empty when
> adding a csd into it in generic_exec_single. That means if two threads
> are both adding flush tlb csds to the same CPU's call_single_queue, only
> one IPI is sent. In other words, the irq_call_count is incremented by 1
> but irq_tlb_count is incremented by 2. Over time, irq_tlb_count will be
> bigger than irq_call_count and the substract will produce a very large
> irq_call_count value due to overflow.
>
> Considering that:
> 1 it's not worth to send more IPIs for the sake of accurate counting of
>   irq_call_count in generic_exec_single;
> 2 it's not easy to tell if the call function interrupt is for TLB
>   shootdown in __smp_call_function_single_interrupt.
> Not to exclude TLB shootdown from call function count seems to be the
> simplest fix and this patch just did that.
>
> This is found by LKP's cyclic performance regression tracking recently
> with the vm-scalability test suite. I have bisected to commit
> 0a7ce4b5a632 ("mm/rmap: share the i_mmap_rwsem"). This commit didn't do
> anything wrong but revealed the irq_call_count problem. IIUC, the commit
> makes rwc->remap_one in rmap_walk_file concurrent with multiple threads.
> When remap_one is try_to_unmap_one, then multiple threads could queue
> flush tlb to the same CPU but only one IPI will be sent.
>
> Since the commit enter Linux v3.19, the counting problem only shows up
> from v3.19. Considering this is a behaviour change, I'm not sure if I
> should add the stable tag here.
>
> Signed-off-by: Aaron Lu <aaron.lu@intel.com>

Thanks for fix.  You forget to add :)

Reported-by: "Huang, Ying" <ying.huang@intel.com>

Best Regards,
Huang, Ying

  parent reply	other threads:[~2016-08-11 15:13 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-11  7:44 Aaron Lu
2016-08-11  9:13 ` Ingo Molnar
2016-08-11  9:16   ` Aaron Lu
2016-08-11 11:57 ` [tip:x86/urgent] x86/irq: Do " tip-bot for Aaron Lu
2016-08-11 15:13 ` Huang, Ying [this message]
2016-08-12  2:16   ` [PATCH] x86/irq: do " Aaron Lu

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=87h9arz6cw.fsf@yhuang-mobile.sh.intel.com \
    --to=ying.huang@intel.com \
    --cc=aaron.lu@intel.com \
    --cc=alex.shi@linaro.org \
    --cc=dave@stgolabs.net \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=tomoki.sekiyama.qu@hitachi.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®