[Engine-devel] CPU Overcommit Feature

2012-12-17 Thread Greg Padgett

Hi,

I've been working on a feature to allow CPU Overcommitment of hosts in a 
cluster.  This first stage allows the engine to consider host cpu threads 
as cores for the purposes of VM resource allocation.


This wiki page has further details, your comments are welcome!
http://www.ovirt.org/Features/cpu_overcommit

Thanks in advance,
Greg
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-17 Thread Simon Grinberg


- Original Message -
> From: "Greg Padgett" 
> To: "engine-devel" 
> Sent: Monday, December 17, 2012 4:37:57 PM
> Subject: [Engine-devel] CPU Overcommit Feature
> 
> Hi,
> 
> I've been working on a feature to allow CPU Overcommitment of hosts
> in a
> cluster.  This first stage allows the engine to consider host cpu
> threads
> as cores for the purposes of VM resource allocation.
> 
> This wiki page has further details, your comments are welcome!
> http://www.ovirt.org/Features/cpu_overcommit

Basically looking good.
Hyperthread though is vendor specific. 

For AMD it's Clustered Multi-Thread while for Intel it's Hyper-Thread 
Official name is  simultaneous multithreading (SMT) but no one outside of the 
academy will recognize that.

in libvirt if I read it right it's 

So why not just call it threads.
We'll have cpuSockets, cpiCores, and cpuThreads, should be clear when in CPU 
context.

In the GUI just change hyperthreads to CPU threads. While in the tool tip 
explain that it's either AMD Clustered Multi-Thread or Intel Hyperthread 



> 
> Thanks in advance,
> Greg
> ___
> Engine-devel mailing list
> Engine-devel@ovirt.org
> http://lists.ovirt.org/mailman/listinfo/engine-devel
> 
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-17 Thread Andrew Cathrow
... and let's not call this CPU overcommit feature. It's nothing like that - 
it's "Hyperthread handling"

- Original Message -
> From: "Simon Grinberg" 
> To: "Greg Padgett" 
> Cc: "engine-devel" 
> Sent: Monday, December 17, 2012 1:13:03 PM
> Subject: Re: [Engine-devel] CPU Overcommit Feature
> 
> 
> 
> - Original Message -
> > From: "Greg Padgett" 
> > To: "engine-devel" 
> > Sent: Monday, December 17, 2012 4:37:57 PM
> > Subject: [Engine-devel] CPU Overcommit Feature
> > 
> > Hi,
> > 
> > I've been working on a feature to allow CPU Overcommitment of hosts
> > in a
> > cluster.  This first stage allows the engine to consider host cpu
> > threads
> > as cores for the purposes of VM resource allocation.
> > 
> > This wiki page has further details, your comments are welcome!
> > http://www.ovirt.org/Features/cpu_overcommit
> 
> Basically looking good.
> Hyperthread though is vendor specific.
> 
> For AMD it's Clustered Multi-Thread while for Intel it's Hyper-Thread
> Official name is  simultaneous multithreading (SMT) but no one
> outside of the academy will recognize that.
> 
> in libvirt if I read it right it's 
> 
> So why not just call it threads.
> We'll have cpuSockets, cpiCores, and cpuThreads, should be clear when
> in CPU context.
> 
> In the GUI just change hyperthreads to CPU threads. While in the tool
> tip explain that it's either AMD Clustered Multi-Thread or Intel
> Hyperthread
> 
> 
> 
> > 
> > Thanks in advance,
> > Greg
> > ___
> > Engine-devel mailing list
> > Engine-devel@ovirt.org
> > http://lists.ovirt.org/mailman/listinfo/engine-devel
> > 
> ___
> Engine-devel mailing list
> Engine-devel@ovirt.org
> http://lists.ovirt.org/mailman/listinfo/engine-devel
> 
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-18 Thread Greg Padgett

On 12/17/2012 05:52 PM, Andrew Cathrow wrote:

... and let's not call this CPU overcommit feature. It's nothing like that - it's 
"Hyperthread handling"

- Original Message -

From: "Simon Grinberg" 
To: "Greg Padgett" 
Cc: "engine-devel" 
Sent: Monday, December 17, 2012 1:13:03 PM
Subject: Re: [Engine-devel] CPU Overcommit Feature



- Original Message -

From: "Greg Padgett" 
To: "engine-devel" 
Sent: Monday, December 17, 2012 4:37:57 PM
Subject: [Engine-devel] CPU Overcommit Feature

Hi,

I've been working on a feature to allow CPU Overcommitment of hosts
in a
cluster.  This first stage allows the engine to consider host cpu
threads
as cores for the purposes of VM resource allocation.

This wiki page has further details, your comments are welcome!
http://www.ovirt.org/Features/cpu_overcommit


Basically looking good.
Hyperthread though is vendor specific.

For AMD it's Clustered Multi-Thread while for Intel it's Hyper-Thread
Official name is  simultaneous multithreading (SMT) but no one
outside of the academy will recognize that.

in libvirt if I read it right it's 

So why not just call it threads.
We'll have cpuSockets, cpiCores, and cpuThreads, should be clear when
in CPU context.

In the GUI just change hyperthreads to CPU threads. While in the tool
tip explain that it's either AMD Clustered Multi-Thread or Intel
Hyperthread





Thanks in advance,
Greg
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel



Thanks Simon and Andrew.  I've moved the wiki page [1] (with a redirect at 
the old name), updated the terms within to not be vendor-specific, and 
will do the same with the implementation.


[1] http://www.ovirt.org/Features/cpu_thread_handling

___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-18 Thread Dennis Jacobfeuerborn
On 12/17/2012 07:13 PM, Simon Grinberg wrote:
> 
> 
> - Original Message -
>> From: "Greg Padgett" 
>> To: "engine-devel" 
>> Sent: Monday, December 17, 2012 4:37:57 PM
>> Subject: [Engine-devel] CPU Overcommit Feature
>>
>> Hi,
>>
>> I've been working on a feature to allow CPU Overcommitment of hosts
>> in a
>> cluster.  This first stage allows the engine to consider host cpu
>> threads
>> as cores for the purposes of VM resource allocation.
>>
>> This wiki page has further details, your comments are welcome!
>> http://www.ovirt.org/Features/cpu_overcommit
> 
> Basically looking good.
> Hyperthread though is vendor specific. 
> 
> For AMD it's Clustered Multi-Thread while for Intel it's Hyper-Thread 
> Official name is  simultaneous multithreading (SMT) but no one outside of the 
> academy will recognize that.
> 
> in libvirt if I read it right it's 
> 
> So why not just call it threads.
> We'll have cpuSockets, cpiCores, and cpuThreads, should be clear when in CPU 
> context.
> 
> In the GUI just change hyperthreads to CPU threads. While in the tool tip 
> explain that it's either AMD Clustered Multi-Thread or Intel Hyperthread 

Does this affect only the number of potential vCpus for the guests or does
this also have an impact on the actual scheduling?
So far I always disabled HT out of fear that a 2 vCpu guest might actually
be scheduled to run in 2 threads of the same core but now I'm not so sure
anymore. In the HT case does KVM know that two threads belong to the same
core and will it only schedule its vCpus on distinct cores? Is there some
documentation about this somewhere?

Regards,
  Dennis

___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-18 Thread Andrew Cathrow


- Original Message -
> From: "Dennis Jacobfeuerborn" 
> To: engine-devel@ovirt.org
> Sent: Tuesday, December 18, 2012 12:30:34 PM
> Subject: Re: [Engine-devel] CPU Overcommit Feature
> 
> On 12/17/2012 07:13 PM, Simon Grinberg wrote:
> > 
> > 
> > - Original Message -
> >> From: "Greg Padgett" 
> >> To: "engine-devel" 
> >> Sent: Monday, December 17, 2012 4:37:57 PM
> >> Subject: [Engine-devel] CPU Overcommit Feature
> >>
> >> Hi,
> >>
> >> I've been working on a feature to allow CPU Overcommitment of
> >> hosts
> >> in a
> >> cluster.  This first stage allows the engine to consider host cpu
> >> threads
> >> as cores for the purposes of VM resource allocation.
> >>
> >> This wiki page has further details, your comments are welcome!
> >> http://www.ovirt.org/Features/cpu_overcommit
> > 
> > Basically looking good.
> > Hyperthread though is vendor specific.
> > 
> > For AMD it's Clustered Multi-Thread while for Intel it's
> > Hyper-Thread
> > Official name is  simultaneous multithreading (SMT) but no one
> > outside of the academy will recognize that.
> > 
> > in libvirt if I read it right it's  > name='thread_siblings'>
> > 
> > So why not just call it threads.
> > We'll have cpuSockets, cpiCores, and cpuThreads, should be clear
> > when in CPU context.
> > 
> > In the GUI just change hyperthreads to CPU threads. While in the
> > tool tip explain that it's either AMD Clustered Multi-Thread or
> > Intel Hyperthread
> 
> Does this affect only the number of potential vCpus for the guests or
> does
> this also have an impact on the actual scheduling?
> So far I always disabled HT out of fear that a 2 vCpu guest might
> actually
> be scheduled to run in 2 threads of the same core but now I'm not so
> sure
> anymore. In the HT case does KVM know that two threads belong to the
> same
> core and will it only schedule its vCpus on distinct cores? Is there
> some
> documentation about this somewhere?

This is about the maximum number of vCPUs we can give to a VM.
If the machine has 32 Physical cores that are hyperthreaded then do we say the 
max number of vCPUs for a single VM is 32 or 64.


> 
> Regards,
>   Dennis
> 
> ___
> Engine-devel mailing list
> Engine-devel@ovirt.org
> http://lists.ovirt.org/mailman/listinfo/engine-devel
> 
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-18 Thread Dennis Jacobfeuerborn
On 12/18/2012 06:33 PM, Andrew Cathrow wrote:
> 
> 
> - Original Message -
>> From: "Dennis Jacobfeuerborn" 
>> To: engine-devel@ovirt.org
>> Sent: Tuesday, December 18, 2012 12:30:34 PM
>> Subject: Re: [Engine-devel] CPU Overcommit Feature
>>
>> On 12/17/2012 07:13 PM, Simon Grinberg wrote:
>>>
>>>
>>> - Original Message -
>>>> From: "Greg Padgett" 
>>>> To: "engine-devel" 
>>>> Sent: Monday, December 17, 2012 4:37:57 PM
>>>> Subject: [Engine-devel] CPU Overcommit Feature
>>>>
>>>> Hi,
>>>>
>>>> I've been working on a feature to allow CPU Overcommitment of
>>>> hosts
>>>> in a
>>>> cluster.  This first stage allows the engine to consider host cpu
>>>> threads
>>>> as cores for the purposes of VM resource allocation.
>>>>
>>>> This wiki page has further details, your comments are welcome!
>>>> http://www.ovirt.org/Features/cpu_overcommit
>>>
>>> Basically looking good.
>>> Hyperthread though is vendor specific.
>>>
>>> For AMD it's Clustered Multi-Thread while for Intel it's
>>> Hyper-Thread
>>> Official name is  simultaneous multithreading (SMT) but no one
>>> outside of the academy will recognize that.
>>>
>>> in libvirt if I read it right it's >> name='thread_siblings'>
>>>
>>> So why not just call it threads.
>>> We'll have cpuSockets, cpiCores, and cpuThreads, should be clear
>>> when in CPU context.
>>>
>>> In the GUI just change hyperthreads to CPU threads. While in the
>>> tool tip explain that it's either AMD Clustered Multi-Thread or
>>> Intel Hyperthread
>>
>> Does this affect only the number of potential vCpus for the guests or
>> does
>> this also have an impact on the actual scheduling?
>> So far I always disabled HT out of fear that a 2 vCpu guest might
>> actually
>> be scheduled to run in 2 threads of the same core but now I'm not so
>> sure
>> anymore. In the HT case does KVM know that two threads belong to the
>> same
>> core and will it only schedule its vCpus on distinct cores? Is there
>> some
>> documentation about this somewhere?
> 
> This is about the maximum number of vCPUs we can give to a VM.
> If the machine has 32 Physical cores that are hyperthreaded then do we say 
> the max number of vCPUs for a single VM is 32 or 64.

If the actual scheduling of vCPUs cannot distinguish between threads and
cores then why would you even want to limit yourself to 32 in you example?
In that case the scheduling might end up being inefficient no matter how
many vCPUs you assign to a guest so why restrict the user? (You might of
course want to limit the user for policy reasons but that has nothing to to
with the thread/core topic.)

On the other hand if KVM does only schedule the vCPUs on distinct cores and
extending the count from 32 to 64 implies that this distinction is to be
disabled then this will have a performance impact for the guest.
In that case I might want to limit the guests to just the 32 physical cores
so two vCPUs of a single guest don't get scheduled on two threads of the
same core.

I've never really looked that closely into the scheduling issue but it
might play a role here so I asked if someone had any pointers to infos
about how exactly KVM makes its scheduling decisions.

Regards,
  Dennis

___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-18 Thread Doron Fediuck


- Original Message -
> From: "Dennis Jacobfeuerborn" 
> To: "Andrew Cathrow" 
> Cc: engine-devel@ovirt.org
> Sent: Tuesday, December 18, 2012 7:59:26 PM
> Subject: Re: [Engine-devel] CPU Overcommit Feature
> 
> On 12/18/2012 06:33 PM, Andrew Cathrow wrote:
> > 
> > 
> > - Original Message -
> >> From: "Dennis Jacobfeuerborn" 
> >> To: engine-devel@ovirt.org
> >> Sent: Tuesday, December 18, 2012 12:30:34 PM
> >> Subject: Re: [Engine-devel] CPU Overcommit Feature
> >>
> >> On 12/17/2012 07:13 PM, Simon Grinberg wrote:
> >>>
> >>>
> >>> - Original Message -
> >>>> From: "Greg Padgett" 
> >>>> To: "engine-devel" 
> >>>> Sent: Monday, December 17, 2012 4:37:57 PM
> >>>> Subject: [Engine-devel] CPU Overcommit Feature
> >>>>
> >>>> Hi,
> >>>>
> >>>> I've been working on a feature to allow CPU Overcommitment of
> >>>> hosts
> >>>> in a
> >>>> cluster.  This first stage allows the engine to consider host
> >>>> cpu
> >>>> threads
> >>>> as cores for the purposes of VM resource allocation.
> >>>>
> >>>> This wiki page has further details, your comments are welcome!
> >>>> http://www.ovirt.org/Features/cpu_overcommit
> >>>
> >>> Basically looking good.
> >>> Hyperthread though is vendor specific.
> >>>
> >>> For AMD it's Clustered Multi-Thread while for Intel it's
> >>> Hyper-Thread
> >>> Official name is  simultaneous multithreading (SMT) but no one
> >>> outside of the academy will recognize that.
> >>>
> >>> in libvirt if I read it right it's  >>> name='thread_siblings'>
> >>>
> >>> So why not just call it threads.
> >>> We'll have cpuSockets, cpiCores, and cpuThreads, should be clear
> >>> when in CPU context.
> >>>
> >>> In the GUI just change hyperthreads to CPU threads. While in the
> >>> tool tip explain that it's either AMD Clustered Multi-Thread or
> >>> Intel Hyperthread
> >>
> >> Does this affect only the number of potential vCpus for the guests
> >> or
> >> does
> >> this also have an impact on the actual scheduling?
> >> So far I always disabled HT out of fear that a 2 vCpu guest might
> >> actually
> >> be scheduled to run in 2 threads of the same core but now I'm not
> >> so
> >> sure
> >> anymore. In the HT case does KVM know that two threads belong to
> >> the
> >> same
> >> core and will it only schedule its vCpus on distinct cores? Is
> >> there
> >> some
> >> documentation about this somewhere?
> > 
> > This is about the maximum number of vCPUs we can give to a VM.
> > If the machine has 32 Physical cores that are hyperthreaded then do
> > we say the max number of vCPUs for a single VM is 32 or 64.
> 
> If the actual scheduling of vCPUs cannot distinguish between threads
> and
> cores then why would you even want to limit yourself to 32 in you
> example?
> In that case the scheduling might end up being inefficient no matter
> how
> many vCPUs you assign to a guest so why restrict the user? (You might
> of
> course want to limit the user for policy reasons but that has nothing
> to to
> with the thread/core topic.)
> 
> On the other hand if KVM does only schedule the vCPUs on distinct
> cores and
> extending the count from 32 to 64 implies that this distinction is to
> be
> disabled then this will have a performance impact for the guest.
> In that case I might want to limit the guests to just the 32 physical
> cores
> so two vCPUs of a single guest don't get scheduled on two threads of
> the
> same core.
> 
> I've never really looked that closely into the scheduling issue but
> it
> might play a role here so I asked if someone had any pointers to
> infos
> about how exactly KVM makes its scheduling decisions.
> 
> Regards,
>   Dennis
> 

Dennis,
first of all every virtual cpu is basically a qemu-thread which can
run on any cpu-thread. The scheduling is done by the kernel scheduler,
while we may control it using cpu pinning. ie- you may ask for
specific vcpu to run on a specific thread which is from the OS
point of view another core.
Indeed there are cases where this is not recommended, but other
cases where this will actually give you a performance boost,
as L1 cache is being shared by the sibling threads.
So it's really up to you to test your workload and decide id you
wish to utilize it or not. We're giving you powerful tools, and
you can decide if and how to use it.

Doron
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-19 Thread Dennis Jacobfeuerborn
On 12/18/2012 07:33 PM, Doron Fediuck wrote:
> 
> 
> - Original Message -
>> From: "Dennis Jacobfeuerborn" 
>> To: "Andrew Cathrow" 
>> Cc: engine-devel@ovirt.org
>> Sent: Tuesday, December 18, 2012 7:59:26 PM
>> Subject: Re: [Engine-devel] CPU Overcommit Feature
>>
>> On 12/18/2012 06:33 PM, Andrew Cathrow wrote:
>>>
>>>
>>> - Original Message -
>>>> From: "Dennis Jacobfeuerborn" 
>>>> To: engine-devel@ovirt.org
>>>> Sent: Tuesday, December 18, 2012 12:30:34 PM
>>>> Subject: Re: [Engine-devel] CPU Overcommit Feature
>>>>
>>>> On 12/17/2012 07:13 PM, Simon Grinberg wrote:
>>>>>
>>>>>
>>>>> - Original Message -
>>>>>> From: "Greg Padgett" 
>>>>>> To: "engine-devel" 
>>>>>> Sent: Monday, December 17, 2012 4:37:57 PM
>>>>>> Subject: [Engine-devel] CPU Overcommit Feature
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I've been working on a feature to allow CPU Overcommitment of
>>>>>> hosts
>>>>>> in a
>>>>>> cluster.  This first stage allows the engine to consider host
>>>>>> cpu
>>>>>> threads
>>>>>> as cores for the purposes of VM resource allocation.
>>>>>>
>>>>>> This wiki page has further details, your comments are welcome!
>>>>>> http://www.ovirt.org/Features/cpu_overcommit
>>>>>
>>>>> Basically looking good.
>>>>> Hyperthread though is vendor specific.
>>>>>
>>>>> For AMD it's Clustered Multi-Thread while for Intel it's
>>>>> Hyper-Thread
>>>>> Official name is  simultaneous multithreading (SMT) but no one
>>>>> outside of the academy will recognize that.
>>>>>
>>>>> in libvirt if I read it right it's >>>> name='thread_siblings'>
>>>>>
>>>>> So why not just call it threads.
>>>>> We'll have cpuSockets, cpiCores, and cpuThreads, should be clear
>>>>> when in CPU context.
>>>>>
>>>>> In the GUI just change hyperthreads to CPU threads. While in the
>>>>> tool tip explain that it's either AMD Clustered Multi-Thread or
>>>>> Intel Hyperthread
>>>>
>>>> Does this affect only the number of potential vCpus for the guests
>>>> or
>>>> does
>>>> this also have an impact on the actual scheduling?
>>>> So far I always disabled HT out of fear that a 2 vCpu guest might
>>>> actually
>>>> be scheduled to run in 2 threads of the same core but now I'm not
>>>> so
>>>> sure
>>>> anymore. In the HT case does KVM know that two threads belong to
>>>> the
>>>> same
>>>> core and will it only schedule its vCpus on distinct cores? Is
>>>> there
>>>> some
>>>> documentation about this somewhere?
>>>
>>> This is about the maximum number of vCPUs we can give to a VM.
>>> If the machine has 32 Physical cores that are hyperthreaded then do
>>> we say the max number of vCPUs for a single VM is 32 or 64.
>>
>> If the actual scheduling of vCPUs cannot distinguish between threads
>> and
>> cores then why would you even want to limit yourself to 32 in you
>> example?
>> In that case the scheduling might end up being inefficient no matter
>> how
>> many vCPUs you assign to a guest so why restrict the user? (You might
>> of
>> course want to limit the user for policy reasons but that has nothing
>> to to
>> with the thread/core topic.)
>>
>> On the other hand if KVM does only schedule the vCPUs on distinct
>> cores and
>> extending the count from 32 to 64 implies that this distinction is to
>> be
>> disabled then this will have a performance impact for the guest.
>> In that case I might want to limit the guests to just the 32 physical
>> cores
>> so two vCPUs of a single guest don't get scheduled on two threads of
>> the
>> same core.
>>
>> I've never really looked that closely into the scheduling issue but
>> it
>> might play a role here so I asked if someone had any pointers to
>> infos
>> about how exactly KVM makes its scheduling decisions.
>>
>> Regards,
>>   Dennis
>>
> 
> Dennis,
> first of all every virtual cpu is basically a qemu-thread which can
> run on any cpu-thread. The scheduling is done by the kernel scheduler,
> while we may control it using cpu pinning. ie- you may ask for
> specific vcpu to run on a specific thread which is from the OS
> point of view another core.
> Indeed there are cases where this is not recommended, but other
> cases where this will actually give you a performance boost,
> as L1 cache is being shared by the sibling threads.
> So it's really up to you to test your workload and decide id you
> wish to utilize it or not. We're giving you powerful tools, and
> you can decide if and how to use it.

What I'm trying to get at is this: Isn't the "Count threads as physical
cores" setting superfluous?

If HT is disabled on the node this doesn't do anything anyway but if it is
enabled what is to be gained by disabling this option? As far as I can see
this makes the UI more complicated for no apparent reason.

Regards,
  Dennis
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-19 Thread Doron Fediuck


- Original Message -
> From: "Dennis Jacobfeuerborn" 
> To: "Doron Fediuck" 
> Cc: engine-devel@ovirt.org, "Andrew Cathrow" 
> Sent: Wednesday, December 19, 2012 1:49:24 PM
> Subject: Re: [Engine-devel] CPU Overcommit Feature
> 
> On 12/18/2012 07:33 PM, Doron Fediuck wrote:
> > 
> > 
> > - Original Message -
> >> From: "Dennis Jacobfeuerborn" 
> >> To: "Andrew Cathrow" 
> >> Cc: engine-devel@ovirt.org
> >> Sent: Tuesday, December 18, 2012 7:59:26 PM
> >> Subject: Re: [Engine-devel] CPU Overcommit Feature
> >>
> >> On 12/18/2012 06:33 PM, Andrew Cathrow wrote:
> >>>
> >>>
> >>> ----- Original Message -
> >>>> From: "Dennis Jacobfeuerborn" 
> >>>> To: engine-devel@ovirt.org
> >>>> Sent: Tuesday, December 18, 2012 12:30:34 PM
> >>>> Subject: Re: [Engine-devel] CPU Overcommit Feature
> >>>>
> >>>> On 12/17/2012 07:13 PM, Simon Grinberg wrote:
> >>>>>
> >>>>>
> >>>>> - Original Message -
> >>>>>> From: "Greg Padgett" 
> >>>>>> To: "engine-devel" 
> >>>>>> Sent: Monday, December 17, 2012 4:37:57 PM
> >>>>>> Subject: [Engine-devel] CPU Overcommit Feature
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> I've been working on a feature to allow CPU Overcommitment of
> >>>>>> hosts
> >>>>>> in a
> >>>>>> cluster.  This first stage allows the engine to consider host
> >>>>>> cpu
> >>>>>> threads
> >>>>>> as cores for the purposes of VM resource allocation.
> >>>>>>
> >>>>>> This wiki page has further details, your comments are welcome!
> >>>>>> http://www.ovirt.org/Features/cpu_overcommit
> >>>>>
> >>>>> Basically looking good.
> >>>>> Hyperthread though is vendor specific.
> >>>>>
> >>>>> For AMD it's Clustered Multi-Thread while for Intel it's
> >>>>> Hyper-Thread
> >>>>> Official name is  simultaneous multithreading (SMT) but no one
> >>>>> outside of the academy will recognize that.
> >>>>>
> >>>>> in libvirt if I read it right it's  >>>>> name='thread_siblings'>
> >>>>>
> >>>>> So why not just call it threads.
> >>>>> We'll have cpuSockets, cpiCores, and cpuThreads, should be
> >>>>> clear
> >>>>> when in CPU context.
> >>>>>
> >>>>> In the GUI just change hyperthreads to CPU threads. While in
> >>>>> the
> >>>>> tool tip explain that it's either AMD Clustered Multi-Thread or
> >>>>> Intel Hyperthread
> >>>>
> >>>> Does this affect only the number of potential vCpus for the
> >>>> guests
> >>>> or
> >>>> does
> >>>> this also have an impact on the actual scheduling?
> >>>> So far I always disabled HT out of fear that a 2 vCpu guest
> >>>> might
> >>>> actually
> >>>> be scheduled to run in 2 threads of the same core but now I'm
> >>>> not
> >>>> so
> >>>> sure
> >>>> anymore. In the HT case does KVM know that two threads belong to
> >>>> the
> >>>> same
> >>>> core and will it only schedule its vCpus on distinct cores? Is
> >>>> there
> >>>> some
> >>>> documentation about this somewhere?
> >>>
> >>> This is about the maximum number of vCPUs we can give to a VM.
> >>> If the machine has 32 Physical cores that are hyperthreaded then
> >>> do
> >>> we say the max number of vCPUs for a single VM is 32 or 64.
> >>
> >> If the actual scheduling of vCPUs cannot distinguish between
> >> threads
> >> and
> >> cores then why would you even want to limit yourself to 32 in you
> >> example?
> >> In that case the scheduling might end up being inefficient no
> >> matter
> >> how
> >> many vCPUs you assign to a guest so why restrict the user

Re: [Engine-devel] CPU Overcommit Feature

2012-12-19 Thread Dan Kenigsberg
On Mon, Dec 17, 2012 at 09:37:57AM -0500, Greg Padgett wrote:
> Hi,
> 
> I've been working on a feature to allow CPU Overcommitment of hosts
> in a cluster.  This first stage allows the engine to consider host
> cpu threads as cores for the purposes of VM resource allocation.
> 
> This wiki page has further details, your comments are welcome!
> http://www.ovirt.org/Features/cpu_overcommit

I've commented about the vdsm/engine API on
http://gerrit.ovirt.org/#/c/10144/ but it is probably better to
reiterate it here.

The suggested API is tightly coupled with an ugly hack we pushed to vdsm
in order not to solve the issue properly on the first strike.

If we had not have report_host_threads_as_cores, I think we'd have a
simpler API reporting only cpuThreads and cpuCores; with no funny
boolean flags.

Let us strive to that position as much as we can.

How about asking whoever used report_host_threads_as_cores to unset it
once they install Engine 3.2 ? I think that these are very few people,
that would not mind this very much.

If this is impossible, I'd add a cpuCores2, always reporting the true
number, to be used by new Engines. We may even report it only on the
very few cases of report_host_threads_as_cores being set.

Dan.
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-19 Thread Doron Fediuck

- Original Message -
> From: "Dan Kenigsberg" 
> To: "Greg Padgett" 
> Cc: "engine-devel" , vdsm-de...@fedorahosted.org
> Sent: Wednesday, December 19, 2012 3:59:11 PM
> Subject: Re: [Engine-devel] CPU Overcommit Feature
> 
> On Mon, Dec 17, 2012 at 09:37:57AM -0500, Greg Padgett wrote:
> > Hi,
> > 
> > I've been working on a feature to allow CPU Overcommitment of hosts
> > in a cluster.  This first stage allows the engine to consider host
> > cpu threads as cores for the purposes of VM resource allocation.
> > 
> > This wiki page has further details, your comments are welcome!
> > http://www.ovirt.org/Features/cpu_overcommit
> 
> I've commented about the vdsm/engine API on
> http://gerrit.ovirt.org/#/c/10144/ but it is probably better to
> reiterate it here.
> 
> The suggested API is tightly coupled with an ugly hack we pushed to
> vdsm
> in order not to solve the issue properly on the first strike.
> 
> If we had not have report_host_threads_as_cores, I think we'd have a
> simpler API reporting only cpuThreads and cpuCores; with no funny
> boolean flags.
> 
> Let us strive to that position as much as we can.
> 
> How about asking whoever used report_host_threads_as_cores to unset
> it
> once they install Engine 3.2 ? I think that these are very few
> people,
> that would not mind this very much.
> 
> If this is impossible, I'd add a cpuCores2, always reporting the true
> number, to be used by new Engines. We may even report it only on the
> very few cases of report_host_threads_as_cores being set.
> 
> Dan.

Hi Dan,
Thanks for the review.

I agree simply reporting cores and threads would be the right solution.
However, when you have hyperthreading turned off you get cores=threads.
This is the same situation you have when hyperthreading turned on, and
someone used the vdsm configuration of reporting threads as cores.

So the engine won't know the real status of the host. We need to be
able to tell the difference. So this moves us to cpuCores2 suggestion.
This is one possibility (cpuRealCores?), and the alternative is an
indication of vdsm config (true/false) which may be removed in the future.
I suspect over time cpu and cpu2 will confuse people.

So I'd suggest having the boolean and removing it along with the vdsm 
configuration in the next ovirt version.

Doron

___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel


Re: [Engine-devel] CPU Overcommit Feature

2012-12-19 Thread Dan Kenigsberg
On Wed, Dec 19, 2012 at 09:53:15AM -0500, Doron Fediuck wrote:
> 
> - Original Message -
> > From: "Dan Kenigsberg" 
> > To: "Greg Padgett" 
> > Cc: "engine-devel" , vdsm-de...@fedorahosted.org
> > Sent: Wednesday, December 19, 2012 3:59:11 PM
> > Subject: Re: [Engine-devel] CPU Overcommit Feature
> > 
> > On Mon, Dec 17, 2012 at 09:37:57AM -0500, Greg Padgett wrote:
> > > Hi,
> > > 
> > > I've been working on a feature to allow CPU Overcommitment of hosts
> > > in a cluster.  This first stage allows the engine to consider host
> > > cpu threads as cores for the purposes of VM resource allocation.
> > > 
> > > This wiki page has further details, your comments are welcome!
> > > http://www.ovirt.org/Features/cpu_overcommit
> > 
> > I've commented about the vdsm/engine API on
> > http://gerrit.ovirt.org/#/c/10144/ but it is probably better to
> > reiterate it here.
> > 
> > The suggested API is tightly coupled with an ugly hack we pushed to
> > vdsm
> > in order not to solve the issue properly on the first strike.
> > 
> > If we had not have report_host_threads_as_cores, I think we'd have a
> > simpler API reporting only cpuThreads and cpuCores; with no funny
> > boolean flags.
> > 
> > Let us strive to that position as much as we can.
> > 
> > How about asking whoever used report_host_threads_as_cores to unset
> > it
> > once they install Engine 3.2 ? I think that these are very few
> > people,
> > that would not mind this very much.
> > 
> > If this is impossible, I'd add a cpuCores2, always reporting the true
> > number, to be used by new Engines. We may even report it only on the
> > very few cases of report_host_threads_as_cores being set.
> > 
> > Dan.
> 
> Hi Dan,
> Thanks for the review.
> 
> I agree simply reporting cores and threads would be the right solution.
> However, when you have hyperthreading turned off you get cores=threads.
> This is the same situation you have when hyperthreading turned on, and
> someone used the vdsm configuration of reporting threads as cores.
> 
> So the engine won't know the real status of the host.

This is not surprising, as report_host_threads_as_cores means in blunt
English "lie to Engine about the number of cores". The newly suggested
flag says "don't believe what I said in cpuCores, since I'm lying". Next
thing we'd have is another flag saying that the former flag was a lie,
and cpuCores is actually trustworthy.

Instead of dancing this dance, I suggest to stop lying.

report_host_threads_as_cores was a hack to assist a older Engine
versions. Engine users that needed it had to set it out-of-band on their
hosts. Now if they upgrade their Engine, they can -- as easily -- reset
that value.

If they forget, nothing devastating happens beyond Engine assuming that
hyperthreading is off.

Please consider this suggestion. I find it the simplest for all involved
parties.

Dan.

> We need to be
> able to tell the difference. So this moves us to cpuCores2 suggestion.
> This is one possibility (cpuRealCores?), and the alternative is an
> indication of vdsm config (true/false) which may be removed in the future.
> I suspect over time cpu and cpu2 will confuse people.
> 
> So I'd suggest having the boolean and removing it along with the vdsm 
> configuration in the next ovirt version.
___
Engine-devel mailing list
Engine-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-devel