> On May 23, 2016, 7:56 p.m., Benjamin Mahler wrote:
> > src/slave/containerizer/containerizer.hpp, lines 64-68
> > <https://reviews.apache.org/r/47707/diff/1/?file=1391149#file1391149line64>
> >
> >     Hm.. it seems more like the default set of resources would not include 
> > the flags.
> >     
> >     The current function is a little more than just the default resources, 
> > it is the flag provided resources along with defaults injected in for any 
> > that were omitted.
> >     
> >     Could we instead provide just the defaults (per the suggested signature 
> > above) and have containerizer implementations inject defaults with the help 
> > of this function?
> >     
> >     As an example:
> >     
> >     ```
> >     // Provides a means for containerizer implementation to use a 
> >     // consistent set of default resources when resources are not
> >     // specified via the '--resources' flag. The containerizer may
> >     // choose its own default value by probing the system, however
> >     // this helper provides a standard set of defaults for:
> >     //
> >     //     ["cpus", "mem", "disk", "ports"]
> >     //
> >     // A containerizer is free to choose alternative defaults for these
> >     // resources, but this increases the likelihood that containerizers
> >     // disagree about the amount of resources to manage when used within
> >     // the composing containerizer.
> >     static Try<Resources> defaultResources();
> >     ```
> >     
> >     This means we could augment the Containerizer::resources and 
> > Isolator::resources to do two things:
> >     
> >     (1) Get informed about the resources provided via flags, and
> >     (2) Return additional resources that the containerizer or isolator 
> > wishes to manage.
> >     
> >     Something like:
> >     
> >     ```
> >     // Informs the containerizer / isolator about the resources
> >     // that are explicitly specified. The containerizer / isolator
> >     // returns a subset of the resources that it will manage. The
> >     // containerizer / isolator may also return additional resources
> >     // that it wishes to manage if they were not specified.
> >     // For example, a GPU isolator, seeing that "gpus" is unspecified
> >     // may probe the system and decide to manage some GPUs (i.e. it
> >     // will return these GPUs from this function).
> >     Future<Resources> manage(const Resources& provided);
> >     ```
> 
> Kevin Klues wrote:
>     We could do this (though it feels a little less intuitive and less 
> flexible than allowing arbitrary flags to be passed in).  We are also 
> unnecessarily enumerating all of the `cpu, mem, disk, ports` available on the 
> system even if the flags would indicate to override them. Is the assumption 
> that the actual class implementing `manage()` would need to find a way to get 
> at the flags itself if it relies on them?  How would the default 
> implementation of `manage()` work?  The whole goal of it was to avoid having 
> to push new logic down into each existing containerizer (which your proposal 
> will require in order to do the flags parsing somehwere to override the 
> defaults).

Also, how do you envision this working for `defaultResources()` not taking 
flags, when it relies on `flags.work_dir` (for disk) and `flags.default_role` 
(for all default resources when setting their role).


- Kevin


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


On May 23, 2016, 12:45 a.m., Kevin Klues wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/47707/
> -----------------------------------------------------------
> 
> (Updated May 23, 2016, 12:45 a.m.)
> 
> 
> Review request for mesos, Benjamin Mahler and Jie Yu.
> 
> 
> Bugs: MESOS-5256
>     https://issues.apache.org/jira/browse/MESOS-5256
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Previously, the `Containerizer` class contained a static `resources()`
> function for enumerating all of the resources available on an agent.
> This made it hard to add new resources to this enumeration that were,
> for example, containerizer-specific or tied to a new isolator module
> loaded at runtime.
> 
> This commit refactors the resource enumeration logic to allow each
> containerizer to enumerate resources itself. It does this by adding a
> new virtual `resources()` function, whose default implementation
> includes the same logic as the old static version of `resources()`.
> Individual containerizers simply overwrite this function to do their
> own enumeration if they want to.
> 
> Similar logic exists to push resource enumeration down into isolators
> as well. As such, the logic for the Nvidia GPU resource enumeration has
> been moved down into the Nvidia GPU isolator instead of being
> hard-coded into the mesos containerizer itself.
> 
> 
> Diffs
> -----
> 
>   include/mesos/slave/isolator.hpp 4be8c2bb409052e2e07138483408209384f41e23 
>   src/slave/containerizer/composing.hpp 
> f3eebd19bc9e6b3b8a969a2ad967b3e2909e0ee4 
>   src/slave/containerizer/composing.cpp 
> 15d059f0bbda4e8cb93c65c09327dde1e34d3e7b 
>   src/slave/containerizer/containerizer.hpp 
> ff78b4d0fd4a3b862f6019fc757c16b7367cd3cf 
>   src/slave/containerizer/containerizer.cpp 
> faa0c789dda8a6f36fdb6217b0bae270b6b8f2e2 
>   src/slave/containerizer/mesos/containerizer.hpp 
> a1a00020668f6da8d611f26e5637afffc87d09ba 
>   src/slave/containerizer/mesos/containerizer.cpp 
> 75e5a32a3e70ec60a6800e21a621673184ea0956 
>   src/slave/containerizer/mesos/isolator.hpp 
> bacd86af42d16cb7c9b6622dfb298dcaa7007b75 
>   src/slave/containerizer/mesos/isolator.cpp 
> 253ff3cea8aff3e7a3051fb5a763cc081f455f18 
>   src/slave/containerizer/mesos/isolators/cgroups/devices/gpus/nvidia.hpp 
> 502204650192d5ea44aa631eac8eb37e051843f0 
>   src/slave/containerizer/mesos/isolators/cgroups/devices/gpus/nvidia.cpp 
> 8f81cb79c10261670efc9eaa8614751854f53806 
>   src/slave/slave.cpp ce0e7b1f1d17c3b82d835b0a6296ed7b1e9eeac1 
> 
> Diff: https://reviews.apache.org/r/47707/diff/
> 
> 
> Testing
> -------
> 
> make -j check ( which fails on one test -- see 
> https://reviews.apache.org/r/47708/ )
> 
> 
> Thanks,
> 
> Kevin Klues
> 
>

Reply via email to