mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Neil Conway <neil.con...@gmail.com>
Subject Re: Review Request 57167: Updated quota handler logic for hierarchical roles.
Date Thu, 09 Mar 2017 16:44:38 GMT


> On March 8, 2017, 6:38 p.m., Michael Park wrote:
> > src/master/quota_handler.cpp
> > Lines 70 (patched)
> > <https://reviews.apache.org/r/57167/diff/1/?file=1652005#file1652005line70>
> >
> >     What do you think of introducing a `QuotaTree` with which we can encapsulate
all this stuff?
> >     
> >     Something like:
> >     
> >     ```cpp
> >     class QuotaTree {
> >       QuotaTree() = default;
> >     
> >       Try<Nothing> insert(const string& role, const Quota& quota)
const {
> >         // basically the body of `foreachpair` in `buildQuotaTree` + validation.
> >       }
> >       
> >       Resources total() const;
> >     
> >       private:
> >       
> >       class Node { ... };
> >       
> >       unique_ptr<Node> root;
> >     };
> >     
> >     Try<QuotaTree> buildQuotaTree(const hashmap<string, Quota>&
quotas)
> >     {
> >       QuotaTree result;
> >     
> >       foreachpair (cons string& role, const Quota& quota, quotas) {
> >         Try<Nothing> insert = result.insert(role, quota);
> >         if (insert.isError()) {
> >           return Error("Failed to build quota tree" + insert.error());
> >         }
> >       }
> >     
> >       return result;
> >     }
> >     ```
> >     
> >     This way we could also keep a running `quotaTree` rather than a `quotaMap` and
rebuilding the `quotaTree` when we need it. Perhaps a minor point. Even if we want to simply
keep what we have in this patch, I think having a:
> >     
> >     ```cpp
> >     class QuotaTree {
> >       QuotaTree(const hashmap<string, Quota>&);
> >       Option<Error> validate() const;
> >       Resources total() const;
> >       
> >       // private stuff...
> >     };
> >     ```
> >     
> >     could simplify the usage a little bit.

This is a nice cleanup -- thanks for the suggestion.


- Neil


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/57167/#review168318
-----------------------------------------------------------


On March 9, 2017, 4:44 p.m., Neil Conway wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/57167/
> -----------------------------------------------------------
> 
> (Updated March 9, 2017, 4:44 p.m.)
> 
> 
> Review request for mesos and Michael Park.
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> The quota'd resources for a nested role are "included" within the
> quota'd resources for that role's parent. Hence, the quota of a node
> must always be greater than or equal to the sum of the quota'd resources
> of that role's children.
> 
> When creating and removing quota, we must ensure that this invariant is
> not violated.
> 
> When computing the cluster capacity heuristic, we must ensure that we do
> not "double-count" quota'd resources: e.g., if the cluster has a total
> capacity of 100 CPUs, role "x" has a quota guarantee of 80 CPUs, and
> role "x/y" has a quota guarantee of 40 CPUs, this does NOT violate the
> cluster capacity heuristic.
> 
> 
> Diffs
> -----
> 
>   src/master/quota_handler.cpp ce1f0644a56e85a99d8c3742d00940a1bfae3be3 
>   src/tests/hierarchical_allocator_tests.cpp cdf1f15b7802439b28405ca8f6634ce83e886630

>   src/tests/master_quota_tests.cpp e109656492bc5ac65e398b6b61e7321072b162d3 
> 
> 
> Diff: https://reviews.apache.org/r/57167/diff/2/
> 
> 
> Testing
> -------
> 
> `make check`
> 
> 
> Thanks,
> 
> Neil Conway
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message