linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Waiman Long <waiman.long@hp.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: x86@kernel.org, Gleb Natapov <gleb@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	virtualization@lists.linux-foundation.org,
	Marcos Matsunaga <Marcos.Matsunaga@oracle.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	boris.ostrovsky@oracle.com, linux-arch@vger.kernel.org,
	kvm@vger.kernel.org,
	Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
	Ingo Molnar <mingo@redhat.com>,
	xen-devel@lists.xenproject.org,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Rik van Riel <riel@redhat.com>,
	Scott J Norton <scott.norton@hp.com>,
	Paolo Bonzini <paolo.bonzini@gmail.com>,
	Oleg Nesterov <oleg@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Aswin Chandramouleeswaran <aswin@hp.com>,
	Chegu Vinod <chegu_vinod@hp.com>,
	linux-kernel@vger.kernel.org,
	David Vrabel <david.vrabel@citrix.com>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support
Date: Fri, 04 Apr 2014 13:13:17 -0400	[thread overview]
Message-ID: <533EE82D.4010303@hp.com> (raw)
In-Reply-To: <20140404165523.GP19478@phenom.dumpdata.com>

On 04/04/2014 12:55 PM, Konrad Rzeszutek Wilk wrote:
> On Thu, Apr 03, 2014 at 10:57:18PM -0400, Waiman Long wrote:
>> On 04/03/2014 01:23 PM, Konrad Rzeszutek Wilk wrote:
>>> On Wed, Apr 02, 2014 at 10:10:17PM -0400, Waiman Long wrote:
>>>> On 04/02/2014 04:35 PM, Waiman Long wrote:
>>>>> On 04/02/2014 10:32 AM, Konrad Rzeszutek Wilk wrote:
>>>>>> On Wed, Apr 02, 2014 at 09:27:29AM -0400, Waiman Long wrote:
>>>>>>> N.B. Sorry for the duplicate. This patch series were resent as the
>>>>>>>       original one was rejected by the vger.kernel.org list server
>>>>>>>       due to long header. There is no change in content.
>>>>>>>
>>>>>>> v7->v8:
>>>>>>>    - Remove one unneeded atomic operation from the slowpath, thus
>>>>>>>      improving performance.
>>>>>>>    - Simplify some of the codes and add more comments.
>>>>>>>    - Test for X86_FEATURE_HYPERVISOR CPU feature bit to enable/disable
>>>>>>>      unfair lock.
>>>>>>>    - Reduce unfair lock slowpath lock stealing frequency depending
>>>>>>>      on its distance from the queue head.
>>>>>>>    - Add performance data for IvyBridge-EX CPU.
>>>>>> FYI, your v7 patch with 32 VCPUs (on a 32 cpu socket machine) on an
>>>>>> HVM guest under Xen after a while stops working. The workload
>>>>>> is doing 'make -j32' on the Linux kernel.
>>>>>>
>>>>>> Completely unresponsive. Thoughts?
>>>>>>
>>>>> Thank for reporting that. I haven't done that much testing on Xen.
>>>>> My focus was in KVM. I will perform more test on Xen to see if I
>>>>> can reproduce the problem.
>>>>>
>>>> BTW, does the halting and sending IPI mechanism work in HVM? I saw
>>> Yes.
>>>> that in RHEL7, PV spinlock was explicitly disabled when in HVM mode.
>>>> However, this piece of code isn't in upstream code. So I wonder if
>>>> there is problem with that.
>>> The PV ticketlock fixed it for HVM. It was disabled before because
>>> the PV guests were using bytelocks while the HVM were using ticketlocks
>>> and you couldnt' swap in PV bytelocks for ticketlocks during startup.
>> The RHEL7 code has used PV ticketlock already. RHEL7 uses a single
>> kernel for all configurations. So PV ticketlock as well as Xen and
>> KVM support was compiled in. I think booting the kernel on bare
>> metal will cause the Xen code to work in HVM mode thus activating
>> the PV spinlock code which has a negative impact on performance.
> Huh? -EPARSE
>
>> That may be why it was disabled so that the bare metal performance
>> will not be impacted.
> I am not following you.

What I am saying is that when XEN and PV spinlock is compiled into the 
current upstream kernel, the PV spinlock jump label is turned on when 
booted on bare metal. In other words, the PV spinlock code is active 
even when they are not needed and actually slow thing down in that 
situation. This is a problem and we need to find way to make sure that 
the PV spinlock code won't be activated on bare metal.

-Longman

WARNING: multiple messages have this Message-ID (diff)
From: Waiman Long <waiman.long@hp.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Marcos Matsunaga <Marcos.Matsunaga@oracle.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-arch@vger.kernel.org, x86@kernel.org,
	linux-kernel@vger.kernel.org,
	virtualization@lists.linux-foundation.org,
	xen-devel@lists.xenproject.org, kvm@vger.kernel.org,
	Paolo Bonzini <paolo.bonzini@gmail.com>,
	"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
	Rik van Riel <riel@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>,
	David Vrabel <david.vrabel@citrix.com>,
	Oleg Nesterov <oleg@redhat.com>, Gleb Natapov <gleb@redhat.com>,
	Aswin Chandramouleeswaran <aswin@hp.com>,
	Scott J Norton <scott.norton@hp.com>,
	Chegu Vinod <chegu_vinod@hp.com>,
	boris.ostrovsky@oracle.com
Subject: Re: [PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support
Date: Fri, 04 Apr 2014 13:13:17 -0400	[thread overview]
Message-ID: <533EE82D.4010303@hp.com> (raw)
Message-ID: <20140404171317.8E4tjBkW1NkJUaeeZiOEwd6i7zQ-WRn-31jpMWmUJV8@z> (raw)
In-Reply-To: <20140404165523.GP19478@phenom.dumpdata.com>

On 04/04/2014 12:55 PM, Konrad Rzeszutek Wilk wrote:
> On Thu, Apr 03, 2014 at 10:57:18PM -0400, Waiman Long wrote:
>> On 04/03/2014 01:23 PM, Konrad Rzeszutek Wilk wrote:
>>> On Wed, Apr 02, 2014 at 10:10:17PM -0400, Waiman Long wrote:
>>>> On 04/02/2014 04:35 PM, Waiman Long wrote:
>>>>> On 04/02/2014 10:32 AM, Konrad Rzeszutek Wilk wrote:
>>>>>> On Wed, Apr 02, 2014 at 09:27:29AM -0400, Waiman Long wrote:
>>>>>>> N.B. Sorry for the duplicate. This patch series were resent as the
>>>>>>>       original one was rejected by the vger.kernel.org list server
>>>>>>>       due to long header. There is no change in content.
>>>>>>>
>>>>>>> v7->v8:
>>>>>>>    - Remove one unneeded atomic operation from the slowpath, thus
>>>>>>>      improving performance.
>>>>>>>    - Simplify some of the codes and add more comments.
>>>>>>>    - Test for X86_FEATURE_HYPERVISOR CPU feature bit to enable/disable
>>>>>>>      unfair lock.
>>>>>>>    - Reduce unfair lock slowpath lock stealing frequency depending
>>>>>>>      on its distance from the queue head.
>>>>>>>    - Add performance data for IvyBridge-EX CPU.
>>>>>> FYI, your v7 patch with 32 VCPUs (on a 32 cpu socket machine) on an
>>>>>> HVM guest under Xen after a while stops working. The workload
>>>>>> is doing 'make -j32' on the Linux kernel.
>>>>>>
>>>>>> Completely unresponsive. Thoughts?
>>>>>>
>>>>> Thank for reporting that. I haven't done that much testing on Xen.
>>>>> My focus was in KVM. I will perform more test on Xen to see if I
>>>>> can reproduce the problem.
>>>>>
>>>> BTW, does the halting and sending IPI mechanism work in HVM? I saw
>>> Yes.
>>>> that in RHEL7, PV spinlock was explicitly disabled when in HVM mode.
>>>> However, this piece of code isn't in upstream code. So I wonder if
>>>> there is problem with that.
>>> The PV ticketlock fixed it for HVM. It was disabled before because
>>> the PV guests were using bytelocks while the HVM were using ticketlocks
>>> and you couldnt' swap in PV bytelocks for ticketlocks during startup.
>> The RHEL7 code has used PV ticketlock already. RHEL7 uses a single
>> kernel for all configurations. So PV ticketlock as well as Xen and
>> KVM support was compiled in. I think booting the kernel on bare
>> metal will cause the Xen code to work in HVM mode thus activating
>> the PV spinlock code which has a negative impact on performance.
> Huh? -EPARSE
>
>> That may be why it was disabled so that the bare metal performance
>> will not be impacted.
> I am not following you.

What I am saying is that when XEN and PV spinlock is compiled into the 
current upstream kernel, the PV spinlock jump label is turned on when 
booted on bare metal. In other words, the PV spinlock code is active 
even when they are not needed and actually slow thing down in that 
situation. This is a problem and we need to find way to make sure that 
the PV spinlock code won't be activated on bare metal.

-Longman

  parent reply	other threads:[~2014-04-04 17:13 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-02 13:27 [PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support Waiman Long
2014-04-02 13:27 ` [PATCH v8 01/10] qspinlock: A generic 4-byte queue spinlock implementation Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-04 13:00   ` Peter Zijlstra
2014-04-04 13:00     ` Peter Zijlstra
2014-04-04 14:59     ` Waiman Long
2014-04-04 14:59       ` Waiman Long
2014-04-04 17:53       ` Ingo Molnar
2014-04-04 17:53         ` Ingo Molnar
2014-04-07 14:16       ` Peter Zijlstra
2014-04-07 14:16         ` Peter Zijlstra
2014-04-04 16:57     ` Konrad Rzeszutek Wilk
2014-04-04 16:57       ` Konrad Rzeszutek Wilk
2014-04-04 17:08       ` Waiman Long
2014-04-04 17:08         ` Waiman Long
2014-04-04 17:54         ` Ingo Molnar
2014-04-04 17:54           ` Ingo Molnar
2014-04-07 14:09         ` Peter Zijlstra
2014-04-07 14:09           ` Peter Zijlstra
2014-04-07 16:59           ` Waiman Long
2014-04-07 16:59             ` Waiman Long
2014-04-07 14:12       ` Peter Zijlstra
2014-04-07 14:12         ` Peter Zijlstra
2014-04-07 14:33         ` Konrad Rzeszutek Wilk
2014-04-07 14:33           ` Konrad Rzeszutek Wilk
2014-04-02 13:27 ` [PATCH v8 02/10] qspinlock, x86: Enable x86-64 to use queue spinlock Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-02 13:27 ` [PATCH v8 03/10] qspinlock: More optimized code for smaller NR_CPUS Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-02 13:27 ` [PATCH v8 04/10] qspinlock: Optimized code path for 2 contending tasks Waiman Long
2014-04-02 13:27 ` [PATCH v8 05/10] pvqspinlock, x86: Allow unfair spinlock in a PV guest Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-02 13:27 ` [PATCH v8 06/10] pvqspinlock: Enable lock stealing in queue lock waiters Waiman Long
2014-04-02 13:27 ` [PATCH v8 07/10] pvqspinlock, x86: Rename paravirt_ticketlocks_enabled Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-02 13:27 ` [PATCH v8 08/10] pvqspinlock, x86: Add qspinlock para-virtualization support Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-02 13:27 ` [PATCH v8 09/10] pvqspinlock, x86: Enable qspinlock PV support for KVM Waiman Long
2014-04-02 13:27 ` [PATCH v8 10/10] pvqspinlock, x86: Enable qspinlock PV support for XEN Waiman Long
2014-04-02 13:27   ` Waiman Long
2014-04-02 14:39   ` Konrad Rzeszutek Wilk
2014-04-02 14:39     ` Konrad Rzeszutek Wilk
2014-04-02 20:38     ` Waiman Long
2014-04-02 20:38       ` Waiman Long
2014-04-02 14:32 ` [PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support Konrad Rzeszutek Wilk
2014-04-02 14:32   ` Konrad Rzeszutek Wilk
2014-04-02 20:35   ` Waiman Long
2014-04-03  2:10     ` Waiman Long
2014-04-03  2:10       ` Waiman Long
2014-04-03 17:23       ` Konrad Rzeszutek Wilk
2014-04-03 17:23         ` Konrad Rzeszutek Wilk
2014-04-04  2:57         ` Waiman Long
2014-04-04  2:57           ` Waiman Long
2014-04-04 16:55           ` Konrad Rzeszutek Wilk
2014-04-04 16:55             ` Konrad Rzeszutek Wilk
2014-04-04 17:13             ` Waiman Long [this message]
2014-04-04 17:13               ` Waiman Long
2014-04-04 17:58               ` Konrad Rzeszutek Wilk
2014-04-04 17:58                 ` Konrad Rzeszutek Wilk
2014-04-04 18:33                 ` Konrad Rzeszutek Wilk
2014-04-04 18:33                   ` Konrad Rzeszutek Wilk
2014-04-04 18:14             ` Marcos E. Matsunaga
2014-04-04 15:25   ` Konrad Rzeszutek Wilk
2014-04-04 15:25     ` Konrad Rzeszutek Wilk
2014-04-07  6:14 ` Raghavendra K T
2014-04-07 16:38   ` Waiman Long
2014-04-07 16:38     ` Waiman Long
2014-04-07 17:51     ` Raghavendra K T
2014-04-07 17:51       ` Raghavendra K T
2014-04-08 19:15       ` Waiman Long
2014-04-08 19:15         ` Waiman Long
2014-04-09 12:08         ` Raghavendra K T
  -- strict thread matches above, loose matches on Subject: below --
2014-04-01 20:47 Waiman Long

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=533EE82D.4010303@hp.com \
    --to=waiman.long@hp.com \
    --cc=Marcos.Matsunaga@oracle.com \
    --cc=aswin@hp.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=chegu_vinod@hp.com \
    --cc=david.vrabel@citrix.com \
    --cc=gleb@redhat.com \
    --cc=hpa@zytor.com \
    --cc=konrad.wilk@oracle.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=oleg@redhat.com \
    --cc=paolo.bonzini@gmail.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=peterz@infradead.org \
    --cc=raghavendra.kt@linux.vnet.ibm.com \
    --cc=riel@redhat.com \
    --cc=scott.norton@hp.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=virtualization@lists.linux-foundation.org \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.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).