Peter Zijlstra
2017-Sep-06 07:08 UTC
[PATCH 3/4] paravirt: add virt_spin_lock pvops function
Guys, please trim email. On Tue, Sep 05, 2017 at 10:31:46AM -0400, Waiman Long wrote:> For clarification, I was actually asking if you consider just adding one > more jump label to skip it for Xen/KVM instead of making > virt_spin_lock() a pv-op.I don't understand. What performance are you worried about. Native will now do: "xor rax,rax; jnz some_cold_label" that's fairly trival code.
On 09/06/2017 03:08 AM, Peter Zijlstra wrote:> Guys, please trim email. > > On Tue, Sep 05, 2017 at 10:31:46AM -0400, Waiman Long wrote: >> For clarification, I was actually asking if you consider just adding one >> more jump label to skip it for Xen/KVM instead of making >> virt_spin_lock() a pv-op. > I don't understand. What performance are you worried about. Native will > now do: "xor rax,rax; jnz some_cold_label" that's fairly trival code.It is not native that I am talking about. I am worry about VM with non-Xen/KVM hypervisor where virt_spin_lock() will actually be called. Now that function will become a callee-saved function call instead of being inlined into the native slowpath function. Cheers, Longman
Peter Zijlstra
2017-Sep-06 13:06 UTC
[PATCH 3/4] paravirt: add virt_spin_lock pvops function
On Wed, Sep 06, 2017 at 08:44:09AM -0400, Waiman Long wrote:> On 09/06/2017 03:08 AM, Peter Zijlstra wrote: > > Guys, please trim email. > > > > On Tue, Sep 05, 2017 at 10:31:46AM -0400, Waiman Long wrote: > >> For clarification, I was actually asking if you consider just adding one > >> more jump label to skip it for Xen/KVM instead of making > >> virt_spin_lock() a pv-op. > > I don't understand. What performance are you worried about. Native will > > now do: "xor rax,rax; jnz some_cold_label" that's fairly trival code. > > It is not native that I am talking about. I am worry about VM with > non-Xen/KVM hypervisor where virt_spin_lock() will actually be called. > Now that function will become a callee-saved function call instead of > being inlined into the native slowpath function.But only if we actually end up using the test-and-set thing, because if you have paravirt we end up using that. And the test-and-set thing sucks anyway. But yes, you're right, that case gets worse.
Reasonably Related Threads
- [PATCH 3/4] paravirt: add virt_spin_lock pvops function
- [PATCH 3/4] paravirt: add virt_spin_lock pvops function
- [PATCH 3/4] paravirt: add virt_spin_lock pvops function
- [PATCH 3/4] paravirt: add virt_spin_lock pvops function
- [PATCH 3/4] paravirt: add virt_spin_lock pvops function