@benm/joris,

here's the user scenario in my mind:

1. master offers resources to the framework, e.g. 2 cpu
2. framework launch a task (2 cpu) and *mark the task/executors as 
throttleable*
3. in ResourceEstimator, it should only consider the throttleable 
task/executors:
  - keep enough resources for the tasks/executors *without* throttleable 
flag/attribute
  - report allocated but not used resources by task/executor *with* 
throttleable flag/attribute; for example, report 1 cpu as "
*Revocable.Throttleable"* resources to framework in this case
4. it's up to framework to use which resources; "*Revocable.Throttleable*" 
means it'll share compress resources with resources owner, "*Revocable*" 
(without ThrottleableInfo) means it'll be evicted when the resources owner 
reclaimed it back
5. QoS Controller makes sure:
  - enough resources for the tasks/executors *without* throttleable 
flag/attribute
  - if used resources exceed allocated resources *with* throttleable 
flag/attribute, evict the task/executor on revocable resource

So to @connor's question, maybe a flag/attribute to task/executor when 
launching it. Regarding the name, both "ScavengeInfo"/ 
"BestEffortInfo"/"ThrottleableInfo" are OK for me, maybe "ScavengeInfo" is 
better.

Any comments?

For this scenario, I think there're still open questions:
1. Can framework launch task with throttleable flag/attribute on revocable 
resources?
2. For ResourceEstimator/QoS Controllor, should Agent double check it 
report?
3. What's the behaviour between the two container: the container on 
original resouces & the container on revocable resource?
4. Who handle compressible/in-compressible resources? Maybe 
ResourceEstimator/QoSController, it should not report in-compressible 
resources as Revocable.Throttleable.

Thanks
Klaus

On Tuesday, March 22, 2016 at 4:13:10 AM UTC+8, Benjamin Mahler wrote:
>
> Yeah that's definitely a question I've been asking myself, and we synced 
> on that with Niklas during the last meeting. The thought currently is that 
> we should choose a better name than ThrottleInfo. ThrottleInfo seems to 
> carry too strong of an implication about what the resources will 
> experience. Rather, we could pick a name like "ScavengeInfo" / 
> "BestEffortInfo" / etc that indicates that these resources are running 
> within the un-utilized portion of the machine and _may_ experience 
> degradation.
>
> On Mon, Mar 21, 2016 at 1:26 AM, Joris Van Remoortere <jo...@mesosphere.io
> > wrote:
>
>> @klaus:
>> I think @connor's question is whether we are absolutely sure we never 
>> want to support throttle-able but non-revocable resources.
>> It's clear from the protos that this is not supported, the question is 
>> whether we are sure that is what we want. If so, can you elaborate as to 
>> *why* we would never want that concept in Mesos.
>>
>> — 
>> *Joris Van Remoortere*
>> Mesosphere
>>
>> On Sun, Mar 20, 2016 at 8:33 PM, Klaus Ma <klaus1982...@gmail.com> wrote:
>>
>>> Here's some input :).
>>>
>>> If throttling is tolerable but preemption is not, how would that be 
>>> expressed? (Is that supported?)
>>> [Klaus]: It's not supported; only revocable resources has this 
>>> attribute: non-throttleable or throttleable. The throttleable revocable 
>>> resources is reported by ResourceEstimator which means the resources maybe 
>>> throttled by its original owner.
>>>
>>> How does this work with the QoS controller? Will there be a new 
>>> correction type to indicate throttling, or does throttling happen "behind 
>>> the agent's back"?
>>> [Klaus]: The QoSController/ResourceEstimator only manages throttleable 
>>> revocable resources; the others resources (regular resources and 
>>> non-throttleable revocable resources) are managed by allocator. The 
>>> "manage" means generation and destroy/eviction. Regarding "throttling 
>>> happen", good question. I think the throttling will dependent on 
>>> containers, let me double check it :).
>>>
>>> If any comments, please let me know.
>>>
>>> ----
>>> Da (Klaus), Ma (马达) | PMP® | Advisory Software Engineer 
>>> Platform OpenSource Technology, STG, IBM GCG 
>>> +86-10-8245 4084 | klaus1982...@gmail.com | http://k82.me
>>>
>>> On Sat, Mar 19, 2016 at 11:15 PM, <connor....@gmail.com> wrote:
>>>
>>>> Thanks for the good explanations so far Ben and Klaus.  Apologies if 
>>>> you guys already covered these questions in the meeting:
>>>>
>>>> If throttling is tolerable but preemption is not, how would that be 
>>>> expressed? (Is that supported?)
>>>>
>>>> How does this work with the QoS controller? Will there be a new 
>>>> correction type to indicate throttling, or does throttling happen "behind 
>>>> the agent's back"?
>>>>
>>>> Thanks,
>>>> --
>>>> Connor
>>>>
>>>> > On Mar 19, 2016, at 04:01, Klaus Ma <klaus1982...@gmail.com> wrote:
>>>> >
>>>> > @team, in the latest meeting, we agree to keep current name 
>>>> ThrottleInfo.
>>>> >
>>>> > If any more comments, please let me know.
>>>> >
>>>> >> On Wednesday, March 16, 2016 at 9:32:37 PM UTC+8, Guangya Liu wrote:
>>>> >> Also please show your comments if any for the name here, the current 
>>>> name is ThrottleInfo, in Kubernetes resources qos design document, they 
>>>> are 
>>>> using scavenging as the key work for such behaviour, so a possible name 
>>>> here could be ScavengeInfo , please show your comments if any for those 
>>>> two 
>>>> names or even if you want to propose a new name here.
>>>> >>
>>>> >> message RevocableInfo {
>>>> >>     message ThrottleInfo {}
>>>> >>
>>>> >>     // If set, indicates that the resources may be throttled at
>>>> >>     // any time. Throttle-able resoruces can be used for tasks
>>>> >>     // that do not have strict performance requirements and are
>>>> >>     // capable of handling being throttled.
>>>> >>     optional ThrottleInfo throttle_info = 1;
>>>> >>   }
>>>> >>
>>>> >> 在 2016年3月16日星期三 UTC+8上午10:24:14,Klaus Ma写道:
>>>> >>>
>>>> >>> The patches are updated accordingly; JIRA: MESOS-3888 , RR: 
>>>> https://reviews.apache.org/r/40375/ .
>>>> >>>
>>>> >>> Thanks
>>>> >>> klaus
>>>> >>>
>>>> >>>> On Saturday, March 12, 2016 at 11:09:46 AM UTC+8, Benjamin Mahler 
>>>> wrote:
>>>> >>>> Hey folks,
>>>> >>>>
>>>> >>>> In the resource allocation working group we've been looking into a 
>>>> few projects that will make the allocator able to offer out resources as 
>>>> revocable. For example:
>>>> >>>>
>>>> >>>> -We'll want to eventually allocate resources as revocable _by 
>>>> default_, only allowing non-revocable when there are guarantees put in 
>>>> place (static reservations or quota).
>>>> >>>>
>>>> >>>> -On the path to revocable by default, we can incrementally start 
>>>> to offer certain resources as revocable. Consider when quota is set but 
>>>> the 
>>>> role isn't using all of the quota. The unallocated quota can be offered to 
>>>> other roles, but it should be revocable because we may revoke them should 
>>>> the quota'ed role want to use the resources. Unused reservations fall into 
>>>> a similar category.
>>>> >>>>
>>>> >>>> -Going revocable by default also allows us to enforce fairness in 
>>>> a dynamically changing cluster by revoking resources as weights are 
>>>> changed, frameworks are added or removed, etc.
>>>> >>>>
>>>> >>>> In this context, "revocable" means that the resources may be taken 
>>>> away and the container will be destroyed. The meaning of "revocable" in 
>>>> the 
>>>> context of usage oversubscription includes this, but also the container 
>>>> may 
>>>> experience a throttling (e.g. lower cpu shares, less network priority, 
>>>> etc).
>>>> >>>>
>>>> >>>> For this reason, and because we internally need to distinguish 
>>>> revocable resources between the those that are generated by usage 
>>>> oversubscription and those that are generated by the allocator, we're 
>>>> thinking of the following change to the API:
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>> -  message RevocableInfo {}
>>>> >>>> +  message RevocableInfo {
>>>> >>>> +    message ThrottleInfo {}
>>>> >>>> +
>>>> >>>> +    // If set, indicates that the resources may be throttled at
>>>> >>>> +    // any time. Throttle-able resoruces can be used for tasks
>>>> >>>> +    // that do not have strict performance requirements and are
>>>> >>>> +    // capable of handling being throttled.
>>>> >>>> +    optional ThrottleInfo throttle_info;
>>>> >>>> +  }
>>>> >>>>
>>>> >>>>    // If this is set, the resources are revocable, i.e., any tasks 
>>>> or
>>>> >>>> -  // executors launched using these resources could get preempted 
>>>> or
>>>> >>>> -  // throttled at any time. This could be used by frameworks to 
>>>> run
>>>> >>>> -  // best effort tasks that do not need strict uptime or 
>>>> performance
>>>> >>>> +  // executors launched using these resources could be terminated 
>>>> at
>>>> >>>> +  // any time. This could be used by frameworks to run
>>>> >>>> +  // best effort tasks that do not need strict uptime
>>>> >>>>    // guarantees. Note that if this is set, 'disk' or 'reservation'
>>>> >>>>    // cannot be set.
>>>> >>>>    optional RevocableInfo revocable = 9;
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>> Essentially we want to distinguish between revocable and revocable 
>>>> + throttle-able. This is because usage-oversubscription generates 
>>>> throttle-able revocable resources, whereas the allocator does not. This 
>>>> also solves our problem of distinguishing between these two kinds of 
>>>> revocable resources internally.
>>>> >>>>
>>>> >>>> Feedback welcome!
>>>> >>>>
>>>> >>>> Ben
>>>> >>>>
>>>>
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Mesos Resource Allocation Working Group" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to mesos-allocation+unsubscr...@googlegroups.com.
>>> To post to this group, send email to mesos-allocat...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/mesos-allocation/CAGmKMfU4NJpY8NP6PVu9g-ebfi7Q9UseEdPUc0XkL1qqqqm75g%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/mesos-allocation/CAGmKMfU4NJpY8NP6PVu9g-ebfi7Q9UseEdPUc0XkL1qqqqm75g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Mesos Resource Allocation Working Group" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to mesos-allocation+unsubscr...@googlegroups.com.
>> To post to this group, send email to mesos-allocat...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/mesos-allocation/CAKgKkU6EoOVvFVw0ppptE%2BA%2BHXuTB5UwETkHXz8CPsdqaDeh%2BQ%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/mesos-allocation/CAKgKkU6EoOVvFVw0ppptE%2BA%2BHXuTB5UwETkHXz8CPsdqaDeh%2BQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

Reply via email to