kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vadim Rozenfeld <vrozenfe@redhat.com>
To: Peter Lieven <pl@dlh.net>
Cc: Gleb Natapov <gleb@redhat.com>, David Cure <kvm@cure.nom.fr>,
	Avi Kivity <avi@redhat.com>,
	kvm@vger.kernel.org
Subject: Re: performance trouble
Date: Tue, 27 Mar 2012 19:06:27 +0200	[thread overview]
Message-ID: <201203271906.28163.vrozenfe@redhat.com> (raw)
In-Reply-To: <4F71E7CB.9000709@dlh.net>

On Tuesday, March 27, 2012 06:16:11 PM Peter Lieven wrote:
> On 27.03.2012 18:12, Vadim Rozenfeld wrote:
> > On Tuesday, March 27, 2012 05:58:01 PM Peter Lieven wrote:
> >> On 27.03.2012 17:44, Vadim Rozenfeld wrote:
> >>> On Tuesday, March 27, 2012 04:06:13 PM Peter Lieven wrote:
> >>>> On 27.03.2012 14:29, Gleb Natapov wrote:
> >>>>> On Tue, Mar 27, 2012 at 02:28:04PM +0200, Peter Lieven wrote:
> >>>>>> On 27.03.2012 14:26, Gleb Natapov wrote:
> >>>>>>> On Tue, Mar 27, 2012 at 02:20:23PM +0200, Peter Lieven wrote:
> >>>>>>>> On 27.03.2012 12:00, Gleb Natapov wrote:
> >>>>>>>>> On Tue, Mar 27, 2012 at 11:26:29AM +0200, Peter Lieven wrote:
> >>>>>>>>>> On 27.03.2012 11:23, Vadim Rozenfeld wrote:
> >>>>>>>>>>> On Tuesday, March 27, 2012 10:56:05 AM Gleb Natapov wrote:
> >>>>>>>>>>>> On Mon, Mar 26, 2012 at 10:11:43PM +0200, Vadim Rozenfeld 
wrote:
> >>>>>>>>>>>>> On Monday, March 26, 2012 08:54:50 PM Peter Lieven wrote:
> >>>>>>>>>>>>>> On 26.03.2012 20:36, Vadim Rozenfeld wrote:
> >>>>>>>>>>>>>>> On Monday, March 26, 2012 07:52:49 PM Gleb Natapov wrote:
> >>>>>>>>>>>>>>>> On Mon, Mar 26, 2012 at 07:46:03PM +0200, Vadim Rozenfeld
> >>> 
> >>> wrote:
> >>>>>>>>>>>>>>>>> On Monday, March 26, 2012 07:00:32 PM Peter Lieven wrote:
> >>>>>>>>>>>>>>>>>> On 22.03.2012 10:38, Vadim Rozenfeld wrote:
> >>>>>>>>>>>>>>>>>>> On Thursday, March 22, 2012 10:52:42 AM Peter Lieven
> > 
> > wrote:
> >>>>>>>>>>>>>>>>>>>> On 22.03.2012 09:48, Vadim Rozenfeld wrote:
> >>>>>>>>>>>>>>>>>>>>> On Thursday, March 22, 2012 09:53:45 AM Gleb Natapov
> >>> 
> >>> wrote:
> >>>>>>>>>>>>>>>>>>>>>> On Wed, Mar 21, 2012 at 06:31:02PM +0100, Peter
> >>>>>>>>>>>>>>>>>>>>>> Lieven
> >>> 
> >>> wrote:
> >>>>>>>>>>>>>>>>>>>>>>> On 21.03.2012 12:10, David Cure wrote:
> >>>>>>>>>>>>>>>>>>>>>>>> 		hello,
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> Le Tue, Mar 20, 2012 at 02:38:22PM +0200, Gleb
> >>>>>>>>>>>>>>>>>>>>>>>> Natapov
> >>>>>>>>>>> 
> >>>>>>>>>>> ecrivait :
> >>>>>>>>>>>>>>>>>>>>>>>>> Try to add<feature policy='disable'
> >>>>>>>>>>>>>>>>>>>>>>>>> name='hypervisor'/>   to cpu definition in XML
> >>>>>>>>>>>>>>>>>>>>>>>>> and check command line.
> >>>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> 	ok I try this but I can't use<cpu model>
> >>>>>>>>>>>>>>>>>>>>>>>> 	to map the host cpu
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> (my libvirt is 0.9.8) so I use :
> >>>>>>>>>>>>>>>>>>>>>>>>         <cpu match='exact'>
> >>>>>>>>>>>>>>>>>>>>>>>>         
> >>>>>>>>>>>>>>>>>>>>>>>>           <model>Opteron_G3</model>
> >>>>>>>>>>>>>>>>>>>>>>>>           <feature policy='disable'
> >>>>>>>>>>>>>>>>>>>>>>>>           name='hypervisor'/>
> >>>>>>>>>>>>>>>>>>>>>>>>         
> >>>>>>>>>>>>>>>>>>>>>>>>         </cpu>
> >>>>>>>>>>>>>>>>>>>>>>>> 	
> >>>>>>>>>>>>>>>>>>>>>>>> 	(the physical server use Opteron CPU).
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> 	The log is here :
> >>>>>>>>>>>>>>>>>>>>>>>> http://www.roullier.net/Report/report-3.2-vhost-ne
> >>>>>>>>>>>>>>>>>>>>>>>> t- 1v cpu-cp u.tx t.gz
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> 	And now with only 1 vcpu, the response time is
> >>>>>>>>>>>>>>>>>>>>>>>> 	8.5s, great
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> improvment. We keep this configuration for
> >>>>>>>>>>>>>>>>>>>>>>>> production
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> : we check the response time when some other users
> >>>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>>> are connected.
> >>>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>> please keep in mind, that setting -hypervisor,
> >>>>>>>>>>>>>>>>>>>>>>> disabling hpet and only one vcpu
> >>>>>>>>>>>>>>>>>>>>>>> makes windows use tsc as clocksource. you have to
> >>>>>>>>>>>>>>>>>>>>>>> make sure, that your vm is not switching between
> >>>>>>>>>>>>>>>>>>>>>>> physical sockets on your system and that you have
> >>>>>>>>>>>>>>>>>>>>>>> constant_tsc feature to have a stable tsc between
> >>>>>>>>>>>>>>>>>>>>>>> the cores in the same socket. its also likely that
> >>>>>>>>>>>>>>>>>>>>>>> the vm will crash when live migrated.
> >>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>> All true. I asked to try -hypervisor only to verify
> >>>>>>>>>>>>>>>>>>>>>> where we loose performance. Since you get good
> >>>>>>>>>>>>>>>>>>>>>> result with it frequent access to PM timer is
> >>>>>>>>>>>>>>>>>>>>>> probably the reason. I do not recommend using
> >>>>>>>>>>>>>>>>>>>>>> -hypervisor for production!
> >>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>>> @gleb: do you know whats the state of in-kernel
> >>>>>>>>>>>>>>>>>>>>>>> hyper-v timers?
> >>>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>> Vadim is working on it. I'll let him answer.
> >>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>> It would be nice to have synthetic timers supported.
> >>>>>>>>>>>>>>>>>>>>> But,
> >>>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>>>    at the moment, I'm only researching  this feature.
> >>>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>>> So it will take months at least?
> >>>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>>> I would say weeks.
> >>>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>>> Is there a way, we could contribute and help you with
> >>>>>>>>>>>>>>>>>> this?
> >>>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>>> Hi Peter,
> >>>>>>>>>>>>>>>>> You are welcome to add  an appropriate handler.
> >>>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>>> I think Vadim refers to this HV MSR
> >>>>>>>>>>>>>>>> http://msdn.microsoft.com/en-us/library/windows/hardware/f
> >>>>>>>>>>>>>>>> f5 42 633%28 v=vs .85 %29.aspx
> >>>>>>>>>>>>>>> 
> >>>>>>>>>>>>>>> This one is pretty simple to support. Please see
> >>>>>>>>>>>>>>> attachments for more details. I was thinking about
> >>>>>>>>>>>>>>> synthetic  timers http://msdn.microsoft.com/en-
> >>>>>>>>>>>>>>> us/library/windows/hardware/ff542758(v=vs.85).aspx
> >>>>>>>>>>>>>> 
> >>>>>>>>>>>>>> is this what microsoft qpc uses as clocksource in hyper-v?
> >>>>>>>>>>>>> 
> >>>>>>>>>>>>> Yes, it should be enough for Win7 / W2K8R2.
> >>>>>>>>>>>> 
> >>>>>>>>>>>> To clarify the thing that microsoft qpc uses is what is
> >>>>>>>>>>>> implemented by the patch Vadim attached to his previous email.
> >>>>>>>>>>>> But I believe that additional qemu patch is needed for Windows
> >>>>>>>>>>>> to actually use it.
> >>>>>>>>>>> 
> >>>>>>>>>>> You are right.
> >>>>>>>>>>> bits 1 and 9 must be set to on in leaf 0x40000003 and HPET
> >>>>>>>>>>> should be completely removed from ACPI.
> >>>>>>>>>> 
> >>>>>>>>>> could you advise how to do this and/or make a patch?
> >>>>>>>>>> 
> >>>>>>>>>> the stuff you send yesterday is for qemu, right? would
> >>>>>>>>>> it be possible to use it in qemu-kvm also?
> >>>>>>>>> 
> >>>>>>>>> No, they are for kernel.
> >>>>>>>> 
> >>>>>>>> i meant the qemu.diff file.
> >>>>>>> 
> >>>>>>> Yes, I missed the second attachment.
> >>>>>>> 
> >>>>>>>> if i understand correctly i have to pass -cpu host,+hv_refcnt to
> >>>>>>>> qemu?
> >>>>>>> 
> >>>>>>> Looks like it.
> >>>>>> 
> >>>>>> ok, so it would be interesting if it helps to avoid the pmtimer
> >>>>>> reads we observed earlier. right?
> >>>>> 
> >>>>> Yes.
> >>>> 
> >>>> first feedback: performance seems to be amazing. i cannot confirm that
> >>>> it breaks hv_spinlocks, hv_vapic and hv_relaxed.
> >>>> why did you assume this?
> >>> 
> >>> I didn't mean that hv_refcnt will break any other hyper-v features.
> >>> I just want to say that turning hv_refcnt on (as any other hv_ option)
> >>> will crash Win8 on boot-up.
> >> 
> >> yes, i got it meanwhile ;-)
> >> 
> >> let me know what you think should be done to further test
> >> the refcnt implementation.
> >> 
> >> i would suggest to return at least 0xFFFFFFFF if msr 0x40000021
> >> is read.
> > 
> > IIRC Win7(W2k8R2) only reads this MSR. Win8 reads and writes.
> 
> you mean win7 only writes, don't you?
Oh, yes. It only writes. 
Actually it works this way: kernel allocates one page, maps it into the system 
space and writes the its address to  
0x40000021 MSR. But to make guest accessing this page, the partition 
reference tsc facility must be enabled, otherwise you can keep any garbage
there without breaking your guest.
  
> at least you put a break in set_msr_hyperv for this msr.
> 
> i just thought that it would be ok to return the value that
> is defined for iTSC is not supported?
> 
> peter
> 
> >> peter
> >> 
> >>> Cheers,
> >>> Vadim.
> >>> 
> >>>> no more pmtimer reads. i can now almost fully utililizy a 1GBit
> >>>> interface with a file transfer while there was not one
> >>>> cpu core fully utilized as observed with pmtimer. some live migration
> >>>> tests revealed that it did not crash even under load.
> >>>> 
> >>>> @vadim: i think we need a proper patch for the others to test this ;-)
> >>>> 
> >>>> what i observed: is it right, that HV_X64_MSR_TIME_REF_COUNT is
> >>>> missing in msrs_to_save[] in x86/x86.c of the kernel module?
> >>>> 
> >>>> thanks for you help,
> >>>> peter
> >>>> 
> >>>>> --
> >>>>> 
> >>>>> 			Gleb.

  reply	other threads:[~2012-03-27 17:06 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-23  8:28 performance trouble David Cure
2012-01-23 10:04 ` David Cure
2012-01-30 15:36 ` David Cure
2012-01-30 16:20   ` Brian Jackson
2012-01-30 16:51     ` David Cure
2012-01-30 17:21       ` Avi Kivity
2012-01-31 17:15         ` David Cure
2012-01-31 17:21           ` Avi Kivity
2012-02-02 10:41             ` David Cure
2012-02-03  8:59               ` David Cure
2012-02-05  9:38                 ` Avi Kivity
2012-02-10 10:09                   ` David Cure
2012-02-14 13:32                     ` Avi Kivity
2012-02-14 13:40                       ` Gleb Natapov
2012-02-16  8:55                         ` David Cure
2012-02-16  9:01                           ` Gleb Natapov
2012-02-17  8:59                             ` David Cure
2012-02-17 10:07                               ` Gleb Natapov
2012-02-17 14:01                                 ` David Cure
2012-02-19  9:13                                   ` Gleb Natapov
2012-02-22 16:33                                     ` David Cure
2012-02-22 16:58                                       ` David Cure
2012-02-23  8:38                                       ` Gleb Natapov
2012-03-16 10:13                                         ` David Cure
2012-03-19 10:51                                           ` Gleb Natapov
2012-03-20  9:32                                             ` David Cure
2012-03-20  9:45                                               ` Gleb Natapov
2012-03-20 11:18                                                 ` David Cure
2012-03-20 12:38                                                   ` Gleb Natapov
2012-03-21 11:10                                                     ` David Cure
2012-03-21 17:31                                                       ` Peter Lieven
2012-03-22  7:53                                                         ` Gleb Natapov
2012-03-22  7:57                                                           ` Peter Lieven
2012-03-22  8:35                                                             ` David Cure
2012-03-22  8:33                                                           ` David Cure
2012-03-22  8:50                                                             ` Peter Lieven
2012-03-22  8:48                                                           ` Vadim Rozenfeld
2012-03-22  8:52                                                             ` Peter Lieven
2012-03-22  9:38                                                               ` Vadim Rozenfeld
2012-03-26 17:00                                                                 ` Peter Lieven
2012-03-26 17:46                                                                   ` Vadim Rozenfeld
2012-03-26 17:52                                                                     ` Gleb Natapov
2012-03-26 18:36                                                                       ` Vadim Rozenfeld
2012-03-26 18:54                                                                         ` Peter Lieven
2012-03-26 20:11                                                                           ` Vadim Rozenfeld
2012-03-27  8:56                                                                             ` Gleb Natapov
2012-03-27  9:23                                                                               ` Vadim Rozenfeld
2012-03-27  9:24                                                                                 ` Gleb Natapov
2012-03-27  9:26                                                                                 ` Peter Lieven
2012-03-27 10:00                                                                                   ` Gleb Natapov
2012-03-27 12:20                                                                                     ` Peter Lieven
2012-03-27 12:26                                                                                       ` Gleb Natapov
2012-03-27 12:28                                                                                         ` Peter Lieven
2012-03-27 12:29                                                                                           ` Gleb Natapov
2012-03-27 12:30                                                                                             ` Peter Lieven
2012-03-27 14:06                                                                                             ` Peter Lieven
2012-03-27 15:44                                                                                               ` Vadim Rozenfeld
2012-03-27 15:58                                                                                                 ` Peter Lieven
2012-03-27 16:12                                                                                                   ` Vadim Rozenfeld
2012-03-27 16:16                                                                                                     ` Peter Lieven
2012-03-27 17:06                                                                                                       ` Vadim Rozenfeld [this message]
2012-03-28  8:38                                                                                                         ` Peter Lieven
2012-03-27 10:40                                                                                   ` Vadim Rozenfeld
2012-03-27 10:49                                                                                     ` Peter Lieven
2012-03-27 11:43                                                                                       ` Vadim Rozenfeld
2012-03-27 14:44                                                                                         ` Peter Lieven
2012-03-27 15:37                                                                                           ` Vadim Rozenfeld
2012-03-27 15:39                                                                                             ` Peter Lieven
2012-03-27 15:55                                                                                               ` Vadim Rozenfeld
2012-03-22  8:31                                                         ` David Cure
2012-03-22  8:47                                                           ` Peter Lieven
2012-02-14 13:48                       ` Vadim Rozenfeld
2012-02-16  9:10                         ` David Cure
2012-02-17 15:27                         ` David Cure

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=201203271906.28163.vrozenfe@redhat.com \
    --to=vrozenfe@redhat.com \
    --cc=avi@redhat.com \
    --cc=gleb@redhat.com \
    --cc=kvm@cure.nom.fr \
    --cc=kvm@vger.kernel.org \
    --cc=pl@dlh.net \
    /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).