Oh, if it's not already obvious, we're onboard for collaborating on this
feature and can help implement the KVM hypervisor portions. :-)


On Thu, Dec 20, 2012 at 8:44 AM, Marcus Sorensen <shadow...@gmail.com>wrote:

>
>
>
> On Thu, Dec 20, 2012 at 4:52 AM, Koushik Das <koushik....@citrix.com>wrote:
>
>> See inline
>>
>> Thanks,
>> Koushik
>>
>> > -----Original Message-----
>> > From: Chip Childers [mailto:chip.child...@sungard.com]
>> > Sent: Wednesday, December 19, 2012 7:55 PM
>> > To: cloudstack-dev@incubator.apache.org
>> > Subject: Re: [DISCUSS] Scaling up CPU and RAM for running VMs
>> >
>> > On Wed, Dec 19, 2012 at 3:34 AM, Koushik Das <koushik....@citrix.com>
>> > wrote:
>> > > See inline
>> > >
>> > >> -----Original Message-----
>> > >> From: Marcus Sorensen [mailto:shadow...@gmail.com]
>> > >> Sent: Tuesday, December 18, 2012 10:35 PM
>> > >> To: cloudstack-dev@incubator.apache.org
>> > >> Subject: Re: [DISCUSS] Scaling up CPU and RAM for running VMs
>> > >>
>> > >> The FS looks good and addresses the things I'd want it to (scaling
>> > >> should be limited to within cluster, use offerings).
>> > >>
>> > >> As you mention, there's a real problem surrounding no support for
>> > >> scaling down CPU, and it's just as much a problem with the guests as
>> > >> it is with hvms at the moment, it seems. This makes it hard to just
>> > >> set a VM as a dynamic one, since at some point you'll likely trigger
>> > >> it to scale up and have to reboot to get back down. My suggestion if
>> > >> this goes through however is that instead of marking a vm for auto
>> > >> scale, we can either attach multiple compute offerings (with a
>> > >> priority or "level") to a VM, along with triggers (we can't really
>> trigger on
>> > memory, but perhaps cpu utilization over a specific time, e.g.
>> > >> if cpu is at 80% for x time, fall back to the next offering), or we
>> > >> can create a specific single compute offering that allows you to
>> > >> specify a min and max memory, cpu, and a trigger at which it scales
>> > >> (this latter one is my preference).
>> > >>
>> > >> The whole thing is problematic though, because people can
>> > >> inadvertently trigger their VM to scale up when they're installing
>> > >> updates or compiling or something and then have to reboot to come
>> > >> back down. If we can't take away resources without manual
>> > >> intervention, we shouldn't add them. For this reason I'd like to see
>> > >> the focus (at least initially) on simply being able to change to
>> > >> larger compute offerings while the VM is up. With this in place, if
>> > >> someone really wants to autoscale, they can use the api in a
>> > >> combination of fetching the VM stats and the existing
>> > >> changeServiceForVirtualMachine. Or we can put that in, but I think
>> any
>> > implementation will be a poor experience without being able to go both
>> > ways.
>> > >>
>> > >
>> > > This is a good suggestion but as you have mentioned first priority is
>> to have
>> > the basic stuff working (increasing CPU/RAM for running VMs).
>> > > Also another thing is that HVs (at least Vmware) require that a VM is
>> > configured appropriately when it is stopped in order to support
>> increasing
>> > CPU/RAM while it is running. We can either do this for all VMs
>> irrespective of
>> > the fact whether the CPU/RAM is going to be actually increased OR do it
>> only
>> > for selective VMs (maybe based on compute offering). If this is going
>> to be
>> > common across all HVs the latter can be done.
>>
>
> I think it could be done either way. The straightforward way is via
> offering that allows for max/current CPU and max/current RAM to be entered
> (basically exposing how the hypervisor settings themselves work). But you
> could also do a global setting of some sort that says 'set everything to a
> max of X CPU and Y RAM', so that every service offering can be upgraded
> live. As you mention, it will require at least a restart of the VMs to
> apply, so perhaps users could just switch service offerings anyway. It
> could be handy to allow people to upgrade service offering when it was
> unplanned for, though.
>
>
>> > >
>> > >> I don't know, maybe I'm off in left field here, I'd be interested in
>> > >> hearing the thoughts of others.
>> > >>
>> > >> You mention  'upgradeVirtualMachine', which should be mentioned on
>> > >> the customer facing API is called 'changeServiceForVirtualMachine',
>> > >> just to reduce confusion.
>> > >>
>> > >
>> > > upgradeVirtualMachine is an existing command (see
>> > UpgradeVMCmd.java), was planning to reuse it. But yes if the name sounds
>> > confusing we can deprecate it and create a new command with the name
>> > you have suggested.
>> > >
>> >
>> > Please don't break backward compatibility without the whole list
>> discussing
>> > the implications on a dedicated thread.  We had previously agreed that
>> we
>> > were going to maintain API compatibility between 4.0.0-incubating and
>> our
>> > next feature release.  If we break it, we have to release as
>> 5.0.0-incubating
>> > instead of 4.1.0-incubating.
>>
>> In that case will add a new async API changeServiceForVirtualMachine (or
>> if anyone else comes up with a better name) which will work for both
>> running and stopped VMs. upgradeVirtualMachine would continue to exist till
>> 5.0.0 happens.
>>
>
> Would this break backward compatibility? If an API call goes from
> upgrading VMs only while they're off, and still upgrades VMs only while
> they're off, but also upgrades VMs with a newer, specific service offering
> type while they're on, does that break backward compatibility? Or let's say
> we simply removed the check to make sure the VM was off, and instead just
> checked if the VM was started with the newer compatible settings... would
> that break backward compatibility? The call still does what it did before
> when used as before (changes service offering while the VM is off).
>
> Regarding upgradeVirtualMachine, I saw no mention of it in the API docs,
> and found that in the code, changeServiceForVirtualMachine was mapped to
> UpgradeVMCmd.java, which is why I mentioned the confusion.
> 'upgradeVirtualMachine' only exists as an internal method of the
> userVmService. See the file "client/tomcatconf/commands.properties.in"
>
> changeServiceForVirtualMachine=com.cloud.api.commands.UpgradeVMCmd
>
>
>
>>
>> >
>> > >>
>> > >> On Tue, Dec 18, 2012 at 9:18 AM, Koushik Das <koushik....@citrix.com
>> >
>> > >> wrote:
>> > >>
>> > >> > Created first draft of the FS
>> > >> >
>> > >>
>> > https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+scalin
>> > >> g
>> > >> > +of+CPU+and+RAM
>> > >> > Also created jira issue
>> > >> > https://issues.apache.org/jira/browse/CLOUDSTACK-658
>> > >> >
>> > >> > Comments? There is an 'open issue' section where I have mentioned
>> > >> > some issues that needs to be closed
>> > >> >
>> > >> > Thanks,
>> > >> > Koushik
>> > >> >
>> > >> > > -----Original Message-----
>> > >> > > From: Koushik Das [mailto:koushik....@citrix.com]
>> > >> > > Sent: Saturday, December 15, 2012 11:14 PM
>> > >> > > To: cloudstack-dev@incubator.apache.org
>> > >> > > Subject: [DISCUSS] Scaling up CPU and RAM for running VMs
>> > >> > >
>> > >> > > Currently CS supports changing CPU and RAM for stopped VM. This
>> > >> > > is achieved by changing compute offering of the VM (with new CPU
>> > >> > > and RAM
>> > >> > > values) and then starting it. I am planning to extend the same
>> > >> > > for
>> > >> > running VM
>> > >> > > as well. Initially planning to do it for Vmware where CPU and RAM
>> > >> > > can be dynamically increased. Support of other HVs can also be
>> > >> > > added if they support increasing CPU/RAM.
>> > >> > >
>> > >> > > Assuming that in the updated compute offering only CPU and RAM
>> > >> > > has changed, the deployment planner can either select the same
>> > >> > > host in which case the values are dynamically scaled up OR a
>> > >> > > different one in which
>> > >> > case
>> > >> > > the operation fails. In future if there is support for live
>> > >> > > migration
>> > >> > (provided
>> > >> > > HV supports it) then another option in the latter case could be
>> > >> > > to
>> > >> > migrate the
>> > >> > > VM first and then scale it up.
>> > >> > >
>> > >> > > I will start working on the FS and share it out sometime next
>> week.
>> > >> > >
>> > >> > > Comments/suggestions?
>> > >> > >
>> > >> > > Thanks,
>> > >> > > Koushik
>> > >> >
>> > >
>>
>
>

Reply via email to