[openstack-dev] Optionally force instances to "stay put" on resize

Michael Basnight mbasnight at gmail.com
Sat Feb 16 03:46:02 UTC 2013


On Feb 15, 2013, at 9:35 PM, Michael J Fork wrote:

> Adding general and operators for additional feedback.
> 
> Michael J Fork/Rochester/IBM wrote on 02/15/2013 10:59:46 AM:
> 
> > From: Michael J Fork/Rochester/IBM
> > To: openstack-dev at lists.openstack.org, 
> > Date: 02/15/2013 10:59 AM
> > Subject: Optionally force instances to "stay put" on resize
> > 
> > The patch for the configurable-resize-placement blueprint (https://
> > blueprints.launchpad.net/nova/+spec/configurable-resize-placement) 
> > has generated a discussion on the review boards and needed to be 
> > brought to the mailing list for broader feedback.
> > 
> > tl;dr would others find useful the addition of a new config option 
> > "resize_to_same_host" with values "allow", "require", "forbid" that 
> > deprecates "allow_resize_to_same_host" (functionality equivalent to 
> > "allow" and "forbid" in "resize_to_same_host")?  Existing use cases 
> > and default behaviors are retained unchanged.  The new use case is 
> > "resize_to_same_host = require" retains the exact same external API 
> > sematics and would make it such that no user actions can cause a VM 
> > migration (and the network traffic with it).  An administrator can 
> > still perform a manual migration that would allow a subsequent 
> > resize to succeed.  This patch would be most useful in environments 
> > with 1GbE or with large ephemeral disks. 
> > 
> > Blueprint  Description
> > 
> > > Currently OpenStack has a boolean "allow_resize_to_same_host" 
> > > config option that constrains
> > > placement during resize. When this value is false, the 
> > > ignore_hosts option is passed to the scheduler. 
> > > When this value is true, no options are passed to the scheduler 
> > > and the current host can be
> > > considered. In some use cases - e.g. PowerVM - a third option of 
> > > "require same host' is desirable.
> > >
> > > This blueprint will deprecate the "allow_resize_to_same_host" 
> > > config option and replace it with 
> > > "resize_to_same_host" that supports 3 values - allow, forbid, 
> > > require. Allow is equivalent to true in the
> > > current use case (i.e. not scheduler hint, current host is 
> > > considered), forbid to false in current use case 
> > > (i.e. the ignore_hosts scheduler hint is set), and require forces 
> > > the same host through the use of the
> > > force_hosts scheduler hint.
> > 
> > To avoid incorrectly paraphrasing others, the review comments 
> > against the change are below in their entirety followed by my 
> > comments to those concerns.  The question we are looking to answer -
> > would others find this function useful and / or believe that 
> > OpenStack should have this option?
> > 
> > Comments from https://review.openstack.org/#/c/21139/:
> > 
> > > I still think this is a bad idea. The only reason the flag was 
> > > there in the first place was so we could 
> > > run tempest on devstack in the gate and test resize. Semantically 
> > > this changes the meaning of resize
> > > in a way that I don't think should be done.
> > 
> > > I understand what the patch does, and I even think it appears to 
> > > be functionally correct based on
> > > what the intention appears to be. However, I'm not convinced that 
> > > the option is a useful addition.
> > >
> > > First, it really just doesn't seem in the spirit of OpenStack or 
> > > "cloud" to care this much about where 
> > > the instance goes like this. The existing option was only a hack 
> > > for testing, not something expected 
> > > for admins to care about.
> > >
> > > If this really *is* something admins need to care about, I'd like 
> > > to better understand why. Further, if 
> > > that's the case, I'm not sure a global config option is the right 
> > > way to go about it. I think it may make 
> > > more sense to have this be API driven. I'd like to see some 
> > > thoughts from others on this point."
> > 
> > > "I completely agree with the "spirit of cloud" argument. I further
> > > think that exposing anything via the 
> > > API that would support this (i.e. giving the users control or even
> > > indication of where their instance lands) 
> > > is a dangerous precedent to set.
> > >
> > > I tend to think that this use case is so small and specialized, 
> > > that it belongs in some other sort of policy 
> > > implementation, and definitely not as yet-another-config-option to
> > > be exposed to the admins. That, or in 
> > > some other project entirely :)"
> > 
> > and my response to those concerns:
> > 
> > > I agree this is not an 80% use case, or probably even that popular
> > > in the other 20%, but resize today 
> > > is the only user facing API that can trigger the migration of a VM
> > > to a new machine. In some environments, 
> > > this network traffic is undesirable - especially 1GBe - and may 
> > > want to be explicitly controlled by an 
> > > Administrator. In this implementation, an Admin can still invoke a
> > > migration manually to allow the resize to 
> > > succeed. I would point to the Island work by Sina as an example, 
> > > they wrote an entire Cinder driver 
> > > designed to minimize network traffic.
> > >
> > > I agree with the point above that exposing this on an end-user API
> > > is not correct, users should not know 
> > > or care where this goes. However, as the cloud operator, I should 
> > > be able to have that level of control 
> > > and this puts it in their hands.
> > >
> > > Obviously this option would need documented to allow 
> > > administrators to decide if they need to change it,
> > > but it certainly wouldn't be default. Expectation is that it would
> > > of use in smaller installations or enterprise 
> > > uses cases more often than service providers.
> > >
> > > Additionally, it continues to honor the existing resize API contract.
> > 
> > An additional use case - beyond 1GbE - is if an environment uses 
> > large ephemeral disks.
> 
> > Would others find this function useful and / or believe that 
> > OpenStack should have this option?  Again, the API contract is 
> > unchanged and it gives a cloud operator an additional level of 
> > control over the movement of instances.  It would not be the default
> > behavior, but rather enabled by an administrator depending on their 
> > specific use cases and requirements and the environment they are in.
> > 
> > Thanks.
> > 
> > Michael
> > 
> > -------------------------------------------------
> > Michael Fork
> > OpenStack Architect, Cloud Solutions and OpenStack Development
> > IBM Systems & Technology Group
> 
Not that its in trunk right now, but openvz allows for online memory resizing, so resizing to the same host is optimal. Personally im not sure the 3 way switch, so to speak, is needed, but i would like to see allow_resize_on_same_host to persist for container based technologies. I cant say if lxc allows this, but maybe someone else can speak to that.


More information about the OpenStack-dev mailing list