Mesos:资源分配的 OS 级技术是什么?

Mesos: what are the OS level techniques for resources allocation?

我对 Mesos 架构有较高的了解,但我不清楚用于实现资源分配的 OS 级技术。比如Mesos提供一个framework 1CPU和400MB内存,另一个framework 2CPUs和1GB内存,这在OS级别实际上是如何实现的?

tl;dr: Mesos 本身没有 "allocate" OS 级别的任何资源。资源仍然由 OS 分配,尽管 Mesos 可以使用 OS 级原语(如 cgroups)来确保任务不会使用比它应该使用的更多的资源。

  1. 节点上的 Mesos 代理通告主机上有一些资源可用(例如,4 CPUs 和 16GB RAM)——要么通过自动检测主机上可用的资源,要么因为可用资源已明确配置(推荐用于生产)。
  2. 大师然后将这些资源提供给框架。
  3. 然后框架可以使用代理可用的部分或全部资源来启动任务:例如,框架可能会启动具有 2 CPUs 和 8GB RAM 的任务。
  4. 代理然后启动一个执行器来 运行 任务。
    • “2 CPUs 和 8GB RAM”资源限制的执行程度取决于 Mesos 的配置方式。例如,如果代理主机支持 cgroups 并且代理以 --isolation='cgroups/cpu,cgroups/mem' 启动,cgroups 将用于适当地限制 CPU,并在任务试图超出其内存分配时终止任务。