[Openstack-operators] [scientific] Resource reservation requirements (Blazar) - Forum session
Jay Pipes
jaypipes at gmail.com
Tue Apr 11 19:22:56 UTC 2017
On 04/11/2017 02:08 PM, Pierre Riteau wrote:
>> On 4 Apr 2017, at 22:23, Jay Pipes <jaypipes at gmail.com
>> <mailto:jaypipes at gmail.com>> wrote:
>>
>> On 04/04/2017 02:48 PM, Tim Bell wrote:
>>> Some combination of spot/OPIE
>>
>> What is OPIE?
>
> Maybe I missed a message: I didn’t see any reply to Jay’s question about
> OPIE.
Thanks!
> OPIE is the OpenStack Preemptible Instances
> Extension: https://github.com/indigo-dc/opie
> I am sure other on this list can provide more information.
Got it.
> I think running OPIE instances inside Blazar reservations would be
> doable without many changes to the implementation.
> We’ve talked about this idea several times, this forum session would be
> an ideal place to draw up an implementation plan.
I just looked through the OPIE source code. One thing I'm wondering is
why the code for killing off pre-emptible instances is being done in the
filter_scheduler module?
Why not have a separate service that merely responds to the raising of a
NoValidHost exception being raised from the scheduler with a call to go
and terminate one or more instances that would have allowed the original
request to land on a host?
Right here is where OPIE goes and terminates pre-emptible instances:
https://github.com/indigo-dc/opie/blob/master/opie/scheduler/filter_scheduler.py#L92-L100
However, that code should actually be run when line 90 raises NoValidHost:
https://github.com/indigo-dc/opie/blob/master/opie/scheduler/filter_scheduler.py#L90
There would be no need at all for "detecting overcommit" here:
https://github.com/indigo-dc/opie/blob/master/opie/scheduler/filter_scheduler.py#L96
Simply detect a NoValidHost being returned to the conductor from the
scheduler, examine if there are pre-emptible instances currently running
that could be terminated and terminate them, and re-run the original
call to select_destinations() (the scheduler call) just like a Retry
operation normally does.
There's be no need whatsoever to involve any changes to the scheduler at
all.
>>> and Blazar would seem doable as long as the resource provider
>>> reserves capacity appropriately (i.e. spot resources>>blazar
>>> committed along with no non-spot requests for the same aggregate).
>>> Is this feasible?
No. :)
As mentioned in previous emails and on the etherpad here:
https://etherpad.openstack.org/p/new-instance-reservation
I am firmly against having the resource tracker or the placement API
represent inventory or allocations with a temporal aspect to them (i.e.
allocations in the future).
A separate system (hopefully Blazar) is needed to manage the time-based
associations to inventories of resources over a period in the future.
Best,
-jay
>> I'm not sure how the above is different from the constraints I mention
>> below about having separate sets of resource providers for preemptible
>> instances than for non-preemptible instances?
>>
>> Best,
>> -jay
>>
>>> Tim
>>>
>>> On 04.04.17, 19:21, "Jay Pipes" <jaypipes at gmail.com
>>> <mailto:jaypipes at gmail.com>> wrote:
>>>
>>> On 04/03/2017 06:07 PM, Blair Bethwaite wrote:
>>> > Hi Jay,
>>> >
>>> > On 4 April 2017 at 00:20, Jay Pipes <jaypipes at gmail.com
>>> <mailto:jaypipes at gmail.com>> wrote:
>>> >> However, implementing the above in any useful fashion requires
>>> that Blazar
>>> >> be placed *above* Nova and essentially that the cloud operator
>>> turns off
>>> >> access to Nova's POST /servers API call for regular users.
>>> Because if not,
>>> >> the information that Blazar acts upon can be simply
>>> circumvented by any user
>>> >> at any time.
>>> >
>>> > That's something of an oversimplification. A reservation system
>>> > outside of Nova could manipulate Nova host-aggregates to "cordon
>>> off"
>>> > infrastructure from on-demand access (I believe Blazar already uses
>>> > this approach), and it's not much of a jump to imagine operators
>>> being
>>> > able to twiddle the available reserved capacity in a finite cloud so
>>> > that reserved capacity can be offered to the subset of
>>> users/projects
>>> > that need (or perhaps have paid for) it.
>>>
>>> Sure, I'm following you up until here.
>>>
>>> > Such a reservation system would even be able to backfill capacity
>>> > between reservations. At the end of the reservation the system
>>> > cleans-up any remaining instances and preps for the next
>>> > reservation.
>>>
>>> By "backfill capacity between reservations", do you mean consume
>>> resources on the compute hosts that are "reserved" by this paying
>>> customer at some date in the future? i.e. Spot instances that can be
>>> killed off as necessary by the reservation system to free resources to
>>> meet its reservation schedule?
>>>
>>> > The are a couple of problems with putting this outside of Nova
>>> though.
>>> > The main issue is that pre-emptible/spot type instances can't be
>>> > accommodated within the on-demand cloud capacity.
>>>
>>> Correct. The reservation system needs complete control over a
>>> subset of
>>> resource providers to be used for these spot instances. It would
>>> be like
>>> a hotel reservation system being used for a motel where cars could
>>> simply pull up to a room with a vacant sign outside the door. The
>>> reservation system would never be able to work on accurate data unless
>>> some part of the motel's rooms were carved out for reservation
>>> system to
>>> use and cars to not pull up and take.
>>>
>>> > You could have the
>>> > reservation system implementing this feature, but that would
>>> then put
>>> > other scheduling constraints on the cloud in order to be effective
>>> > (e.g., there would need to be automation changing the size of the
>>> > on-demand capacity so that the maximum pre-emptible capacity was
>>> > always available). The other issue (admittedly minor, but still a
>>> > consideration) is that it's another service - personally I'd love to
>>> > see Nova support these advanced use-cases directly.
>>>
>>> Welcome to the world of microservices. :)
>>>
>>> -jay
>>>
>>> _______________________________________________
>>> OpenStack-operators mailing list
>>> OpenStack-operators at lists.openstack.org
>>> <mailto:OpenStack-operators at lists.openstack.org>
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators
>>>
>>>
>>
>> _______________________________________________
>> OpenStack-operators mailing list
>> OpenStack-operators at lists.openstack.org
>> <mailto:OpenStack-operators at lists.openstack.org>
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-operators
>
More information about the OpenStack-operators
mailing list